画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編
Excelなどから入力したデータを基にして,該当するCSVファイルのデータを印刷します。このとき,APで設定した条件とCSVファイルのデータをマッチングさせ,ある条件に該当するデータに対し拡大印刷したり,「*」を付けて印刷したりできます。ここでは,1科目でも100点があるか,または前回より20番以上順位が上がった人のデータに対して「*」を付けて印刷する例を示します。
図9-14 CSVファイルから出力される帳票の出力例
処理の概要を示します。
CSVファイルを利用した書式オーバレイのコーディングパターンの例を次に示します。プログラムサイズは約44KBです。
000100************************************************************ 000200* <書式CSVファイル入力> * 000300************************************************************ 000400************************************************************ 000500* 指定環境 環境変数 CBLX_PRT001=#PRT * 000600* CBL_SYSCSVIN=csvファイル名(CSVPRFC.CSV) * 000700* コンパイルオプション -XMAP,LinePrintまたは-Ks※ * 000800* 書式イメージ CSV1FC6G.FMP * 000900* 行制御データ CSV1FC6G.PCI * 001000************************************************************ 001100 IDENTIFICATION DIVISION. 001200 PROGRAM-ID. CSVPRFC. 001300* 001400 ENVIRONMENT DIVISION. 001500* 001600 INPUT-OUTPUT SECTION. 001700 FILE-CONTROL. 001800 SELECT プリンタ ASSIGN TO PRT001 001900 ORGANIZATION IS SEQUENTIAL 002000 FILE STATUS IS プリンタ状態. 002100* 002200************************************************************ 002300* 書式印刷の定義 * 002400************************************************************ 002500 I-O-CONTROL. 002600 APPLY FORMS-OVERLAY TO 書式名 ON プリンタ. 002700* 002800************************************************************ 002900* CSVファイルの呼び名の定義 * 003000************************************************************ 003100 CONFIGURATION SECTION. 003200 SPECIAL-NAMES. 003300 SYSCSV IS CSVIN. 003400* 003500 DATA DIVISION. 003600 FILE SECTION. 003700************************************************************ 003800* プリンタの定義 * 003900************************************************************ 004000 FD プリンタ IS GLOBAL 004100 RECORDING MODE IS F 004200 LABEL RECORD IS OMITTED 004300 DATA RECORD IS 行データ. 004400************************************************************ 004500* 一行分のデータエリア * 004600************************************************************ 004700 01 行データ PIC X(70). 004800* 004900 WORKING-STORAGE SECTION. 005000* 005100 01 書式名 PIC X(8). 005200* 005300 01 模試回数ヘッダ行. 005400 02 FILLER PIC X(15). 005500 02 ヘッダ模試回数 PIC Z9 005600 CHARACTER TYPE IS POINT-12 WIDE. 005700 02 FILLER PIC X(51). 005800* 005900 01 明細行-1 REDEFINES 明細行. 006000 02 FILLER PIC X(1). 006100 02 明細行-順位1 PIC ZZZZZZ9. 006200 02 明細行-氏名1 PIC X(16). 006300 02 FILLER PIC X(4). 006400 02 明細行-英語点数1 PIC ZZ9 006500 CHARACTER TYPE IS FORMAT-2. 006600 02 FILLER PIC X(3). 006700 02 明細行-数学点数1 PIC ZZ9 006800 CHARACTER TYPE IS FORMAT-2. 006900 : 007000************************************************************ 007100* プログラムの開始 * 007200************************************************************ 007300 PROCEDURE DIVISION. 007400* 007500* プリンタのオープン 007600 OPEN OUTPUT プリンタ 007700 IF プリンタ状態 = 正常 007800 THEN 007900* 書式マップ名の設定 008000 MOVE 'CSV1FC6G' TO 書式名 008100 : 008200* 1ページ分の印刷処理 008300 PERFORM 1ページ印刷 UNTIL 印刷終了 = 1 008400* 008500* プリンタのクローズ 008600 CLOSE プリンタ 008700 IF プリンタ状態 NOT = 正常 008800 THEN 008900 MOVE 異常 TO プログラム状態 009000 END-IF 009100* 009200 ELSE 009300 MOVE 異常 TO プログラム状態 009400 END-IF. 009500************************************************************ 009600* プログラムの終了 * 009700************************************************************ 009800 IF プログラム状態 = 正常 009900 THEN 010000 MOVE 正常終了 TO RETURN-CODE 010100 ELSE 010200 MOVE 異常終了 TO RETURN-CODE 010300 END-IF 010400* 010500 STOP RUN. 010600*********************************************************** 010700* 一ページ印刷 * 010800*********************************************************** 010900 1ページ印刷 SECTION. 011000* 011100 PERFORM ヘッダ印刷 011200* 011300 IF プログラム状態 = 正常 011400 THEN 011500 PERFORM 明細印刷 011600 END-IF 011700* 011800 IF プログラム状態 = 正常 011900 THEN 012000 PERFORM トレイラ印刷 012100 END-IF. 012200 1ページ印刷-END. 012300 EXIT. 012400************************************************************ 012500* ヘッダ印刷処理 * 012600************************************************************ 012700 ヘッダ印刷 SECTION. 012800 : 012900 ヘッダ印刷-END. 013000 EXIT. 013100************************************************************ 013200* 明細印刷処理 * 013300************************************************************ 013400 明細印刷 SECTION. 013500 : 013600 PERFORM 明細行組み立て 013700 : 013800 PERFORM 明細行出力 013900 : 014000 明細印刷-END. 014100 EXIT. 014200************************************************************ 014300* トレイラ印刷処理 * 014400************************************************************ 014500 トレイラ印刷 SECTION. 014600 : 014700 トレイラ印刷-END. 014800 EXIT. 014900************************************************************ 015000* 行出力処理 * 015100************************************************************ 015200 行出力 SECTION. 015300 IF 改行数 = 999 015400 THEN 015500 WRITE 行データ BEFORE ADVANCING PAGE 015600 ELSE 015700 WRITE 行データ BEFORE ADVANCING 改行数 LINE 015800 END-IF 015900 COMPUTE 行カウンタ = 行カウンタ + 改行数 016000 : 016100* 016200 行出力-END. 016300 EXIT. 016400************************************************************ 016500* 明細行出力処理 * 016600************************************************************ 016700 明細行出力 SECTION. 016800* 016900 EVALUATE 書体種別 017000 WHEN ビット-X01 017100* 英語のみ100点 017200 WRITE 行データ FROM 明細行2-2 017300 BEFORE ADVANCING 改行数 LINE 017400 : 017500 WHEN OTHER 017600* その他 017700 WRITE 行データ FROM 明細行 017800 BEFORE ADVANCING 改行数 LINE 017900 END-EVALUATE 018000 : 018100* 018200 明細行出力-END. 018300 EXIT. 018400************************************************************ 018500* 明細行組み立て処理 * 018600************************************************************ 018700 明細行組み立て SECTION. 018800 : 018900 PERFORM 書体変更 019000 : 019100* 019200 明細行組み立て-END. 019300 EXIT. 019400************************************************************ 019500* 書体変更処理 * 019600************************************************************ 019700 書体変更 SECTION. 019800 INITIALIZE 書体フラグ 019900 MOVE SPACE TO 明細行2 020000* 020100 IF 英語点数 = 100 020200 THEN 020300 COMPUTE 書体−英語 = 書体−英語 OR ビットON 020400 MOVE '*' TO 明細行2-英語P 020500 END-IF. 020600 : 020700* 020800 書体変更-END. 020900 EXIT. 021000************************************************************ 021100 END PROGRAM CSVPRFC.
All Rights Reserved. Copyright (C) 2001, 2006, Hitachi, Ltd.