157 lines
6.3 KiB
Markdown
157 lines
6.3 KiB
Markdown
# 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-DATE(YYYY/MM/DD)編集
|
||
2-6. ACCEPT WRK-TIME FROM TIME(システム時刻)
|
||
2-7. STRING で WRK-DISP-TIME(HH: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 |
|
||
| LINAGE(PAGE) | 予約語 | 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' |
|
||
|
||
---
|
||
|
||
## 出力レコード定義
|
||
|
||
### 出力ファイル1(W01/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: JIN01REC(200B)を REPLACING (A)→R01 で定義
|
||
- W01: JIN04RPT-REC(132B)を REPLACING (A)→W01 で定義 |