画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編
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.
All Rights Reserved. Copyright (C) 2001, 2006, Hitachi, Ltd.