Files
cobol-tna-system/詳細設計書/詳細設計書_JIN04PRT.md

6.3 KiB
Raw Permalink Blame History

JIN04PRT 詳細設計書

プログラム概要

項目 内容
プログラムID JIN04PRT(人事→JINji, 04, 社員台帳印刷→PRT
プログラムタイプ 04(レイアウト編集のみ。LINAGE印刷制御)
機能 EMP-VALID(チェック済社員データ)を読込み、社員台帳(JIN-LEDGER)形式で印刷出力する
CALL方式 メインプログラム(JCLからCALL
DBアクセス なし
使用サブプログラム SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド)

前提条件

NO 対象ファイル 条件
1 EMP-VALID JCL の SORT(STEP010)で社員番号昇順に並替済であること

使用ファイル一覧

NO 使用ファイル名 識別子 DD名 I/O COPY群 形式 レコード長 媒体 備考
1 EMP-VALID R01 JIN04R01 I JIN01REC FB 200 PS チェック済社員データ
2 JIN-LEDGER W01 JIN04W01 O JIN04RPT-REC 132 PS 社員台帳印刷(LINAGE 66行)

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件(マッチング/キーブレイク)
1 EMP-VALID JIN04R01: EMP-ID 升順 なし(順次印刷)

使用モジュール一覧

NO 機能 プログラムID 使用COPY名
1 運用日付取得SUB SUB01DAT JINDATAC
2 メッセージ編集出力SUB SUB02MSG JINMSGAC
3 ABEND処理SUB SUB03END JINENDAC

処理詳細

段落一覧(実装コードの SOR 規約名に対応)

段落名 機能
0000MAJCOLSOR メインコントロール(初期→読込→印刷ループ→終了)
1000ITTSOR 初期処理(開始表示・初期化・日付/時刻取得・OPEN・ヘッダー)
2000MAINSOR 主処理(明細行編集→WRITE
2100READSOR R01読込・EOF判定
3000HEADER ページヘッダー出力(改ページ+頁番号)
4000STPSOR 終了処理(CLOSE・終了表示・終了メッセージ)
9000ERRSOR エラー処理(STOP literal 予約語カバー。通常フローでは呼ばれない)

処理フロー

1. 0000MAJCOLSOR(メインコントロール)
   1-1. PERFORM 1000ITTSOR(初期処理)
   1-2. PERFORM 2000MAINSOR UNTIL WRK-R01EOF-Y(読込→印刷ループ)
   1-3. PERFORM 4000STPSOR(終了処理)
   1-4. GOBACK

2. 1000ITTSOR(初期処理)
   2-1. DISPLAY 'JIN04PRT START' UPON CONSOLE
   2-2. M00MHOPAR 初期化 → M00MSGCOD=001 → CALL SUB02MSG(開始)
   2-3. INITIALIZE WRKARA / CUNARA
   2-4. ACCEPT WRK-DATE FROM DATE(システム日付)
   2-5. STRING で WRK-DISP-DATEYYYY/MM/DD)編集
   2-6. ACCEPT WRK-TIME FROM TIME(システム時刻)
   2-7. STRING で WRK-DISP-TIMEHH:MM:SS)編集
   2-8. CALL SUB01DAT(運用日付)
   2-9. OPEN INPUT (INNFIL) OUTPUT (W01OUTFIL)
   2-10. PERFORM 3000HEADER(ヘッダー出力)
   2-11. PERFORM 2100READSOR(初回読込)

3. 2000MAINSOR(主処理)
   3-1. INITIALIZE W01OUTREC
   3-2. STRING R01EMP-ID/…/…/… INTO W01OUTREC
   3-3. WRITE W01OUTREC AFTER ADVANCING 1 LINE
        AT END-OF-PAGE → PERFORM 3000HEADER
   3-4. ADD 1 TO CUN-W01OUT / CUN-R01INN
   3-5. PERFORM 2100READSOR(次読込)

4. 2100READSOR(読込)
   READ R01INNFIL AT END → WRK-R01EOF='1'
             NOT AT END → CONTINUE

5. 3000HEADER(ページヘッダー)
   5-1. ADD 1 TO WRK-PAGE-NO
   5-2. MOVE SPACES → WRITE 改ページ(AFTER ADVANCING PAGE
   5-3. タイトル行 STRING → WRITE AFTER ADVANCING 1 LINE
   5-4. 日付・時刻・ページ行 STRING → WRITE AFTER ADVANCING 2 LINES

6. 4000STPSOR(終了処理)
   6-1. DISPLAY 'JIN04PRT END' UPON CONSOLE
   6-2. DISPLAY TOTAL RECORDS(件数)WITH NO ADVANCING
   6-3. CLOSE R01INNFIL
   6-4. CLOSE W01OUTFIL WITH LOCK
   6-5. CALL SUB02MSG(終了 002
   6-6. CALL SUB03END(正常終了)

7. 9000ERRSOR(エラー処理)
   DISPLAY 'ABEND' → STOP 'JIN04PRT ABNORMAL END'

I-O-CONTROL / 印刷制御

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT R01INNFIL ASSIGN TO EXTERNAL JIN04R01.
    SELECT W01OUTFIL ASSIGN TO EXTERNAL JIN04W01.
FD  W01OUTFIL LINAGE IS 66 LINES
        FOOTING AT 60 TOP 2 BOTTOM 4.

LINAGE 句でページ制御(66行・本文60行・論理頁上下餘白)。WRITE AFTER ADVANCING PAGE で改ページ、AT END-OF-PAGE でヘッダー再出力。

カバレッジ対象キーワード

予約語/記号 区分 使用箇所
ACCEPT FROM DATE 予約語 1000ITTSOR: ACCEPT WRK-DATE FROM DATE
ACCEPT FROM TIME 予約語 1000ITTSOR: ACCEPT WRK-TIME FROM TIME
LINAGEPAGE 予約語 FD W01OUTFIL LINAGE IS 66 LINES
AT END-OF-PAGE 予約語 2000MAINSOR: WRITE AT END-OF-PAGE
STRING ... ON OVERFLOW 予約語 各種STRINGで ON OVERFLOW 使用
DISPLAY UPON / WITH NO ADVANCING 予約語 1000/4000: UPON CONSOLE、4000: WITH NO ADVANCING
CLOSE WITH LOCK 予約語 4000STPSOR: CLOSE W01OUTFIL WITH LOCK
STOP literal 予約語 9000ERRSOR: STOP '…ABNORMAL END'

出力レコード定義

出力ファイル1W01/JIN-LEDGER)— JIN04RPT-REC 132B

No 項目名 設定元 PIC 備考
1 W01RPT-EMP-ID R01EMP-ID X(8) 社員ID
2 W01RPT-KANA-SEI R01KANA-SEI X(20) 半角カナ姓
3 W01RPT-KANA-MEI R01KANA-MEI X(20) 半角カナ名
4 W01RPT-KANJI-NAME R01KANJI-NAME X(40) 漢字氏名
5 W01RPT-DEPT-CD SPACES(未設定) X(4) 部門コード(STRING対象外)
6 W01RPT-ENTRY-DATE SPACES(未設定) X(8) 入社日(STRING対象外)
7 FILLER SPACES X(32)

レコード長 132B(実規格)。設計書他行の記載値 133B は誤記 → 132B に統一。

COPY 参照書式の確認

  • R01: JIN01REC200B)を REPLACING (A)→R01 で定義
  • W01: JIN04RPT-REC132B)を REPLACING (A)→W01 で定義