FAX宛先ファイルにアクセスして動的にFAX送信先を変更するAPについて説明します。
APからXMAP3へ帳票の印刷指示をする前に,FAX宛先ファイル(ファイル名=サービス名)に,キュー定義情報,送信先定義情報のレコードを定義すると,帳票ごとにFAXの送信先を変更できます。この方法は,APの言語(COBOL,C,VB)に依存しません。
AP実行時の処理の概要を示します。
XMAP3では,FAX送信先を動的に変更するAPのコーディングサンプル(COBOLソースプログラム)を用意しています。詳細は次に示すサンプルファイルを参照してください。
コーディングの概要を次に示します。
000100************************************************************
000200* プログラム名 : ページプリンタ-FAX印刷サンプル *
000300* ファイル名 : FAXPRT *
000400* 説明 : 印刷先をFAXにした例題です *
000500* *
000600* 本サンプル実行にあたり,表示・印刷セットアップで以下の設定を *
000700* 行ってください *
000800* 「プリンタ」タブ *
000900* 仮想端末名 : PRT001 *
001000* サービス名 : #PRT *
001100* 印刷モード : 日立FAXC/SPOOL出力:ページプリンタ *
001200* プリンタ名 : FAXC/SPOOLが支援しているプリンタ名 *
001300* 高度な設定 : FAX送信情報(任意) *
001400* 「アプリケーション」タブ *
001500* FAX宛先フォルダ:C:¥Program Files¥Hitachi¥Xmap3¥User¥Faxno *
001600* *
001700************************************************************
001800 IDENTIFICATION DIVISION.
001900 PROGRAM-ID. FAXPRT.
002000*
002100 ENVIRONMENT DIVISION.
002200*
002300 INPUT-OUTPUT SECTION.
002400************************************************************
002500* FAX宛先ファイルの宣言 *
002600************************************************************
002700 FILE-CONTROL.
002800 SELECT OPTIONAL FAX宛先
002900 ASSIGN TO FAX宛先ファイル
003000 ORGANIZATION IS LINE SEQUENTIAL
003100 FILE STATUS IS ファイル状態.
003200*
003300 DATA DIVISION.
003400 FILE SECTION.
003500************************************************************
003600* FAX宛先の定義 *
003700************************************************************
003800 FD FAX宛先 IS GLOBAL
003900 DATA RECORD IS FAX宛先データ.
004000************************************************************
004100* 一行分のFAX番号データエリア *
004200************************************************************
004300 01 FAX宛先データ PIC X(70).
004400*
004500 WORKING-STORAGE SECTION.
004600*
004700* ここでは,FAX宛先ファイルを固定で割り当てます
004800 77 FAX宛先ファイル PIC X(47)
004900 VALUE 'C:¥Program Files¥Hitachi¥Xmap3¥User¥Faxno¥#PRT'.
005000
005100 77 ファイル状態 PIC X(2).
005200 77 プログラム状態 PIC X(2).
005300
005400 77 正常 PIC X(2) VALUE '00'.
005500 77 異常 PIC X(2) VALUE '01'.
005600 77 データ件数 PIC 9(2) COMP.
005700 77 単価ワーク PIC S9(6) COMP.
005800 77 数量ワーク PIC S9(4) COMP.
005900 77 割引特典 PIC X(2).
006000 77 小計 PIC S9(10) COMP.
006100 77 合計 PIC S9(10) COMP.
006200 77 T0001 PIC X(26)
006300 VALUE 'BS/CSチューナー付28型テレビ '.
006400 77 T0002 PIC X(26)
006500 VALUE '35型高精細テレビ '.
006600 77 A0001 PIC X(26)
006700 VALUE '再生専用MDプレーヤー '.
006800 77 A0002 PIC X(26)
006900 VALUE 'CDチェンジャー付オーディオ '.
007000 77 V0001 PIC X(26)
007100 VALUE 'BS/CSチューナー付S-VHSビデオ '.
007200 77 V0002 PIC X(26)
007300 VALUE '8ミリビデオ '.
007400 77 ONE PIC 9(2) COMP VALUE 1.
007500 77 TWO PIC 9(2) COMP VALUE 2.
007600 77 THREE PIC 9(2) COMP VALUE 3.
007700 77 FOUR PIC 9(2) COMP VALUE 4.
007800
007900*
008000************************************************************
008100* 論理マップと動的変更テーブルの取込み *
008200* 出力用:マップ名+O *
008300************************************************************
008400* 論理マップの取り込み
008500 COPY JYU1PCO.
008600
008700*動的変更テーブルの取り込み--"XMAP3インストール先¥INCLUDE"にあります
008800 COPY X3MODTBL.
008900*
009000************************************************************
009100* 通信記述 *
009200************************************************************
009300 COMMUNICATION SECTION.
009400* プリンタに対する通信記述項
009500 CD PRT FOR OUTPUT WS
009600 MAP NAME IS 帳票マップ名
009700 SYMBOLIC TERMINAL IS 帳票端末名
009800 STATUS KEY IS 帳票-RC.
009900
010000************************************************************
010100* プログラム開始 *
010200************************************************************
010300 PROCEDURE DIVISION.
010400
010500 MOVE 正常 TO 帳票-RC.
010600 MOVE 正常 TO プログラム状態.
010700 MOVE 1 TO データ件数.
010800
010900************************************************************
011000* 帳票出力処理 *
011100************************************************************
011200 帳票処理.
011300
011400*** FAX宛先の設定 -- ここから -- **************************
011500* FAX宛先ファイルのオープン
011600 OPEN OUTPUT FAX宛先.
011700
011800 IF (ファイル状態 = 正常)
011900 THEN
012000****** FAX宛先ファイルへの書き出し *******************
012100* *********************************************
012200* * (1)キュー定義情報 (省略可能) *
012300* * 形式:aaa;bbbbb;ccccc *
012400* * aaa : キュー種別(#00~#31;必須) *
012500* * bbbbb : キュー名称(任意) *
012600* * ccccc : コメント(任意) *
012700* *********************************************
012800 MOVE ALL SPACE TO FAX宛先データ
012900
013000* ここでは,キュー種別として"#31"を
013100* キュー名称として「納品伝票」をそれぞれ仮定しています
013200 MOVE '#31;納品伝票;' TO FAX宛先データ(01:13)
013300 MOVE 'コメント' TO FAX宛先データ(14:22)
013400
013500* WRITE文を使用して,FAX情報を書き出します
013600 WRITE FAX宛先データ
013700
013800* *********************************************
013900* * (2)送信先定義情報 (必須;1レコードのみ) *
014000* * 形式:xxxxx;yyyyy;zzzzz *
014100* * xxxxx : 送信先FAX番号(必須) *
014200* * yyyyy : 送信先宛名(任意) *
014300* * zzzzz : コメント(任意) *
014400* *********************************************
014500 MOVE ALL SPACE TO FAX宛先データ
014600
014700* ここでは,FAX番号として"0123456789"を
014800* 宛先として「日立AI太郎」をそれぞれ仮定しています
014900 MOVE '0123456789;日立AI太郎;' TO FAX宛先データ(01:24)
015000 MOVE 'コメント' TO FAX宛先データ(25:33)
015100
015200* WRITE文を使用して,FAX情報を書き出します
015300 WRITE FAX宛先データ
015400*
015500* FAX宛先ファイルのクローズ
015600 CLOSE FAX宛先
015700 IF ファイル状態 NOT = 正常
015800 THEN
015900 MOVE 異常 TO プログラム状態
016000 END-IF
016100*
016200 ELSE
016300 MOVE 異常 TO プログラム状態
016400 END-IF.
016500
016600****** FAX宛先の設定 -- ここまで -- ***********************
016700
016800
016900** FAX宛先設定処理が正常だったか
017000 IF プログラム状態 = 正常
017100 THEN
017200* 正常だったらFAXへ出力する
017300* 出力先の設定
017400 MOVE 'PRT001' TO 帳票端末名
017500
017600* 出力エリアのクリア
017700 MOVE ALL X'1F' TO JYU1PCG
017800
017900* マップ名の設定
018000 MOVE 'JYU1PC6G' TO 帳票マップ名
018100*
018200 PERFORM ファイル読み込み処理
018300 MOVE 合計 TO JYU1PC-FIELD0008-O
018400
018500* FAXへの帳票出力
018600 SEND PRT FROM JYU1PCO WITH EMI
018700
018800* 結果確認
018900 IF 帳票-RC = 正常
019000 THEN
019100 CONTINUE
019200 ELSE
019300 DISABLE PRT
019400 MOVE 12 TO RETURN-CODE
019500 STOP RUN
019600 END-IF
019700
019800 GO TO 正常終了
019900
020000 ELSE
020100 STOP RUN
020200 END-IF.
020300
020400************************************************************
020500* プログラムの終了 *
020600************************************************************
020700 正常終了.
020800
020900* プリンタのクローズ
021000 DISABLE PRT.
021100 MOVE +0 TO RETURN-CODE.
021200 STOP RUN.
021300
021400************************************************************
021500* ここでは実際にはファイル入力せず,固定データをMOVE文 *
021600* で設定しています *
021700************************************************************
021800 ファイル読み込み処理 SECTION.
021900
022000 MOVE 'SD004040' TO JYU1PC-FIELD0001-O.
022100 MOVE N'D商事' TO JYU1PC-FIELD0002-O.
022200 PERFORM WITH TEST BEFORE UNTIL データ件数 > 4
022300 EVALUATE データ件数
022400 WHEN ONE
022500 MOVE 'V0001' TO JYU1PC-FIELD0003-O(データ件数)
022600 MOVE V0001 TO JYU1PC-FIELD0004-O(データ件数)
022700 MOVE '115000' TO JYU1PC-FIELD0006-O(データ件数)
022800 MOVE 115000 TO 単価ワーク
022900 MOVE 17 TO JYU1PC-FIELD0005-O(データ件数)
023000 MOVE '01' TO 割引特典
023100 MOVE 17 TO 数量ワーク
023200 PERFORM 計算処理
023300 MOVE 小計 TO JYU1PC-FIELD0007-O(データ件数)
023400 WHEN TWO
023500 MOVE 'T0002' TO JYU1PC-FIELD0003-O(データ件数)
023600 MOVE T0002 TO JYU1PC-FIELD0004-O(データ件数)
023700 MOVE '238000' TO JYU1PC-FIELD0006-O(データ件数)
023800 MOVE 238000 TO 単価ワーク
023900 MOVE 8 TO 数量ワーク
024000 MOVE 8 TO JYU1PC-FIELD0005-O(データ件数)
024100 PERFORM 計算処理
024200 MOVE 小計 TO JYU1PC-FIELD0007-O(データ件数)
024300 WHEN THREE
024400 MOVE 'V0002' TO JYU1PC-FIELD0003-O(データ件数)
024500 MOVE V0002 TO JYU1PC-FIELD0004-O(データ件数)
024600 MOVE '95980' TO JYU1PC-FIELD0006-O(データ件数)
024700 MOVE 95980 TO 単価ワーク
024800 MOVE 24 TO JYU1PC-FIELD0005-O(データ件数)
024900 MOVE 24 TO 数量ワーク
025000 PERFORM 計算処理
025100 MOVE 小計 TO JYU1PC-FIELD0007-O(データ件数)
025200 WHEN FOUR
025300 MOVE 'A0001' TO JYU1PC-FIELD0003-O(データ件数)
025400 MOVE A0001 TO JYU1PC-FIELD0004-O(データ件数)
025500 MOVE '47000' TO JYU1PC-FIELD0006-O(データ件数)
025600 MOVE '47000' TO 単価ワーク
025700 MOVE 51 TO JYU1PC-FIELD0005-O(データ件数)
025800 MOVE 51 TO 数量ワーク
025900 MOVE '01' TO 割引特典
026000 PERFORM 計算処理
026100 MOVE 小計 TO JYU1PC-FIELD0007-O(データ件数)
026200 END-EVALUATE
026300 COMPUTE データ件数 = データ件数 + 1
026400 MOVE '00' TO 割引特典
026500 END-PERFORM.
026600
026700 ファイル読み込み処理-END.
026800 EXIT.
026900
027000************************************************************
027100* 受注データ中の割引特典が「特典あり」ならば1割引き *
027200* として金額を計算します *
027300************************************************************
027400 計算処理 SECTION.
027500
027600 IF 割引特典 = '01'
027700 THEN
027800 COMPUTE 単価ワーク = 単価ワーク * 90 / 100
027900 ELSE
028000 CONTINUE
028100 END-IF.
028200 COMPUTE 小計 = 単価ワーク * 数量ワーク.
028300 COMPUTE 合計 = 合計 + 小計.
028400
028500 計算処理-END.
028600 EXIT.
028700
028800************************************************************
028900 END PROGRAM FAXPRT.