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

157 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# JIN04PRT 詳細設計書
## プログラム概要
| 項目 | 内容 |
|------|------|
| プログラムID | JIN04PRT(人事→JINji, 04, 社員台帳印刷→PRT |
| プログラムタイプ | 04(レイアウト編集のみ。LINAGE印刷制御) |
| 機能 | EMP-VALID(チェック済社員データ)を読込み、社員台帳(JIN-LEDGER)形式で印刷出力する |
| CALL方式 | メインプログラム(JCLからCALL) |
| DBアクセス | なし |
| 使用サブプログラム | SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド) |
### 前提条件
| NO | 対象ファイル | 条件 |
|----|-------------|------|
| 1 | EMP-VALID | JCL の SORTSTEP010)で社員番号昇順に並替済であること |
### 使用ファイル一覧
| 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 で定義