9.3.11 FAX印刷例

FAX宛先ファイルにアクセスして動的にFAX送信先を変更するAPについて説明します。

APからXMAP3へ帳票の印刷指示をする前に,FAX宛先ファイル(ファイル名=サービス名)に,キュー定義情報,送信先定義情報のレコードを定義すると,帳票ごとにFAXの送信先を変更できます。この方法は,APの言語(COBOL,C,VB)に依存しません。

(a) 処理の流れ

AP実行時の処理の概要を示します。

[図データ]

  1. 帳票APからFAX宛先ファイルをオープンし,キュー定義情報と送信先定義情報のレコードを順に出力する。FAX宛先ファイルをクローズする。
  2. 帳票APで指定したSEND文を実行する。
    印刷要求がXMAP3に送信されます。
  3. XMAP3で帳票データが編集される。
    FAXC/SPOOLに通知するための送信先情報(キュー種別「W15」,FAX番号「0123456」など)がFAX宛先ファイルから読み出されます。
  4. XMAP3からFAXC/SPOOLに返送先情報と帳票データが送信され,FAXCキューに登録される。

XMAP3では,FAX送信先を動的に変更するAPのコーディングサンプル(COBOLソースプログラム)を用意しています。詳細は次に示すサンプルファイルを参照してください。

(b) コーディング例

コーディングの概要を次に示します。

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.