帳票を使用したユーザ業務例として,家電販売で受注した家電用品の発注商品管理台帳を出力する処理を想定した業務について説明します。帳票を使用した発注台帳出力業務の流れと,発注商品管理台帳の出力例を次の図に示します。
図9-8 発注台帳出力業務の流れ
<説明>
クライアント側で,JP1/Automatic Job Management System 2 - Client Toolkitを使用してバッチジョブを入力します。これを受けて,サーバ側のJP1/Automatic Job Management System 2 - Managerがバッチ業務の実行,および監視をします。その後,XMAP3/NETから,JP1/Network Printing Systemに印刷要求をします。サーバ側のAPは,ファイルからデータを読み込み,発注台帳を印刷します。
図9-9 発注商品管理台帳の出力例
バッチ環境で,ユーザ業務を処理する場合のシステム構成を次に示します。
図9-10 ハードウェア構成例
三つの索引ファイルである「受注ファイル(ORDER)」,「得意先ファイル(CUST)」,「支店ファイル(SHITEN)」を使用して発注台帳を出力します。
発注台帳出力業務の概要を次の図に示します。
図9-11 発注台帳出力業務の処理概要
コーディングの概要を次に示します。なお,このコーディングの全体は,製品中にソースプログラムとして提供しています。
***********************************************************
* 発注商品管理台帳印刷プログラム (SEND)*
***********************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HATCHU.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUST-FILE ASSIGN TO 'CUST'
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS KOUBAN-C
ALTERNATE RECORD KEY IS CHIKU-NO-C
WITH DUPLICATES
ALTERNATE RECORD KEY IS CUST-NO-C
WITH DUPLICATES.
SELECT ORDER-FILE ASSIGN TO 'ORDER'
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS DENPYOU-NO
ALTERNATE RECORD KEY IS SHITEN-NO
WITH DUPLICATES.
SELECT SHITEN-FILE ASSIGN TO 'SHITEN'
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS SHITEN-NO-H.
DATA DIVISION.
FILE SECTION.
FD CUST-FILE.
COPY CUSTD.
FD ORDER-FILE.
COPY ORDERD.
FD SHITEN-FILE.
COPY SHITEND.
*
WORKING-STORAGE SECTION.
01 BK-TOTALL PIC S9(4) COMP-5.
01 MAIN-END-FLG PIC X(1) VALUE SPACE.
01 PAGE-CNT PIC 9(4) VALUE 1.
01 OUT-LINE PIC 9(2) VALUE ZERO.
01 BK-SHITEN-NO PIC X(2) VALUE SPACE.
01 BK2-SHITEN-NO PIC X(2) VALUE SPACE.
01 ORDER-FLG PIC X(2) VALUE 'NG'.
01 X PIC 9(2).
01 FIRST-GET PIC X(1) VALUE 'Y'.
01 DATE-WORK.
02 DATE-YY PIC X(2).
02 DATE-MM PIC X(2).
02 DATE-DD PIC X(2).
* 論理マップ
COPY TOTALO.
*
COMMUNICATION SECTION.
* ワークステーションプリンタに対する通信記述項
CD PRINTER FOR OUTPUT WS
MAP NAME IS MAP-NAME-P
STATUS KEY IS ERR-CODEP
SYMBOLIC TERMINAL IS PRTTERM.
*******************************************************
** 業務開始 **
********************************************************
PROCEDURE DIVISION.
初期設定.
PERFORM 初期設定処理.
*
各種ファイルのオープン.
OPEN INPUT CUST-FILE
ORDER-FILE
SHITEN-FILE.
*
* 帳票出力処理
*
PERFORM 帳票編集および出力処理.
*
各種ファイルのクローズ.
CLOSE CUST-FILE
ORDER-FILE
SHITEN-FILE.
*********************************************************
** 業務の終了 **
*********************************************************
STOP RUN.
*
*********************************************************
帳票編集および出力処理 SECTION.
*********************************************************
*
* 支店番号で受注ファイルを検索する
*
PERFORM 受注ファイルの検索処理.
MOVE SHITEN-NO-H TO BK-SHITEN-NO BK2-SHITEN-NO.
*
* 帳票編集および出力のメインループ
PERFORM UNTIL MAIN-END-FLG = 'E'
IF SHITEN-NO-H NOT = BK2-SHITEN-NO AND
OUT-LINE NOT = ZERO THEN
PERFORM 帳票の出力処理
MOVE SHITEN-NO-H TO BK-SHITEN-NO BK2-SHITEN-NO
END-IF
PERFORM 帳票出力データの設定
PERFORM 受注ファイルの検索処理
END-PERFORM.
*
PERFORM 帳票の出力処理.
*
帳票編集および出力処理の終了.
EXIT.
*
*********************************************************
受注ファイルの検索処理 SECTION.
*********************************************************
*
MOVE 'NG' TO ORDER-FLG.
PERFORM UNTIL ORDER-FLG = 'OK' OR
MAIN-END-FLG = 'E'
* 支店情報の入力
IF SHITEN-NO-H NOT = BK-SHITEN-NO OR
BK-SHITEN-NO = SPACE THEN
READ SHITEN-FILE NEXT
AT END
MOVE 'E' TO MAIN-END-FLG
NOT AT END
MOVE 'Y' TO FIRST-GET
END-READ
END-IF
*
* 受注ファイルの入力
IF MAIN-END-FLG NOT = 'E' THEN
IF FIRST-GET = 'Y' THEN
MOVE SHITEN-NO-H TO SHITEN-NO
START ORDER-FILE KEY IS = SHITEN-NO
INVALID KEY
MOVE SPACE TO BK-SHITEN-NO
NOT INVALID KEY
MOVE SHITEN-NO-H TO BK-SHITEN-NO
END-START
MOVE 'N' TO FIRST-GET
END-IF
IF BK-SHITEN-NO NOT = SPACE THEN
READ ORDER-FILE NEXT
AT END
MOVE SPACE TO BK-SHITEN-NO
NOT AT END
IF BK-SHITEN-NO = SHITEN-NO THEN
MOVE 'OK' TO ORDER-FLG
ELSE
MOVE SPACE TO BK-SHITEN-NO
END-IF
END-READ
END-IF
END-IF
END-PERFORM.
*
受注ファイルの検索処理終了.
EXIT.
*
*********************************************************
帳票出力データの設定 SECTION.
*********************************************************
*
PERFORM VARYING X FROM 1 BY 1 UNTIL X > 40
IF SHOUHIN-NO(X) NOT = SPACE THEN
COMPUTE OUT-LINE = OUT-LINE + 1
MOVE SHOUHIN-NAME(X) TO TOTAL-S-NAMEO(OUT-LINE)
MOVE SHOUHIN-NO(X) TO TOTAL-S-CODEO(OUT-LINE)
EVALUATE NYUUKIN
WHEN 1
MOVE N'現 金' TO TOTAL-NYUUKINO(OUT-LINE)
WHEN 2
MOVE N'手 形' TO TOTAL-NYUUKINO(OUT-LINE)
WHEN 3
MOVE N'銀行振込' TO TOTAL-NYUUKINO(OUT-LINE)
END-EVALUATE
IF TOKUTAI = 'Y' THEN
MOVE N'特 待' TO TOTAL-WARIO(OUT-LINE)
ELSE
IF CARD-INF = 'Y' THEN
MOVE N'カード' TO TOTAL-WARIO(OUT-LINE)
ELSE
MOVE N'セール' TO TOTAL-WARIO(OUT-LINE)
END-IF
END-IF
MOVE SURYOU(X) TO TOTAL-SURYOUO(OUT-LINE)
MOVE TANKA(X) TO TOTAL-TANKAO(OUT-LINE)
MOVE SYOUKEI(X) TO TOTAL-SGOUKEIO(OUT-LINE)
MOVE CUST-NO TO TOTAL-T-CODEO(OUT-LINE)
CUST-NO-C
READ CUST-FILE KEY IS CUST-NO-C
END-READ
MOVE CUST-NAME-C TO TOTAL-T-NAMEO(OUT-LINE)
MOVE DENPYOU-NO TO TOTAL-DEN-NOO(OUT-LINE)
MOVE SPACE TO TOTAL-DUMMYO(OUT-LINE)
IF OUT-LINE >= 34 THEN
PERFORM 帳票の出力処理
MOVE ZERO TO OUT-LINE
COMPUTE PAGE-CNT = PAGE-CNT + 1
END-IF
END-IF
END-PERFORM.
*
帳票出力データの設定の終了.
EXIT.
*
*********************************************************
帳票の出力処理 SECTION.
*********************************************************
*
MOVE PAGE-CNT TO TOTAL-PAGEOO.
MOVE SHITEN-NO-H TO TOTAL-H-CODEO.
MOVE SHITEN-NAME-H TO TOTAL-H-NAMEO.
*
SEND PRINTER FROM TOTALO WITH EMI.
*
DISABLE PRINTER.
*
PERFORM 初期設定処理.
*
帳票の出力処理終了.
EXIT.
*
*********************************************************
初期設定処理 SECTION.
*********************************************************
*
* 論理マップの初期値設定およびCD項の設定
MOVE ALL X'1F' TO TOTALO.
MOVE TOTALT TO TOTALL.
MOVE ZERO TO TOTALZ.
MOVE '00000' TO ERR-CODEP.
MOVE 'PRT001' TO PRTTERM.
MOVE 'TOTAL6B ' TO MAP-NAME-P.
* 年月日の取得および論理マップへの設定
ACCEPT DATE-WORK FROM DATE.
MOVE DATE-YY TO TOTAL-NENO.
MOVE DATE-MM TO TOTAL-TSUKIO.
MOVE DATE-DD TO TOTAL-HINICHIO.
* 出力行数の初期化
MOVE ZERO TO OUT-LINE.
*
初期設定処理終了.
EXIT.