Add Subsystem E (JIN01-02): personnel info management + design-resource consistency fixes
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
*
|
||||
* 人事取込/正常レコード 200B JIN01KNS入出力
|
||||
*
|
||||
03 (A)KANA-SEI PIC X(020).
|
||||
03 (A)KANA-MEI PIC X(020).
|
||||
03 (A)KANJI-NAME PIC N(040).
|
||||
03 (A)SUB-CODE PIC X(004).
|
||||
03 (A)BIRTH-DATE PIC X(008).
|
||||
03 (A)EMP-ID PIC X(008).
|
||||
03 (A)FILLER PIC X(060).
|
||||
@@ -0,0 +1,4 @@
|
||||
* SUB01DAT 運用日付取得用連絡領域
|
||||
01 D01UBSPAR.
|
||||
03 D01FKICOD PIC S9(004) COMP.
|
||||
03 D01UBSUDATE PIC 9(008).
|
||||
@@ -0,0 +1,3 @@
|
||||
* SUB03END ABEND処理用連絡領域
|
||||
01 E01ABDPAR.
|
||||
03 E01ABDCOD PIC 9(003).
|
||||
@@ -0,0 +1,13 @@
|
||||
* SUB02MSG メッセージ出力用連絡領域
|
||||
01 M00MHOPAR.
|
||||
03 M00MSGCOD PIC 9(003).
|
||||
03 M00UMKDATS22-01 PIC X(030).
|
||||
03 M00UMKDATS22-02 PIC X(030).
|
||||
03 M00UMKDATS22-03 PIC X(030).
|
||||
03 M00UMKDATS22-04 PIC X(030).
|
||||
03 M00UMKDATS22-05 PIC X(030).
|
||||
03 M00UMKDATS22-06 PIC X(030).
|
||||
03 M00UMKDATS22-07 PIC X(030).
|
||||
03 M00UMKDATS22-08 PIC X(030).
|
||||
03 M00UMKDATS22-09 PIC X(030).
|
||||
03 M00UMKDATS22-10 PIC X(030).
|
||||
@@ -0,0 +1,11 @@
|
||||
*
|
||||
* スキル別評価集計結果レコード 200B JIN02SKL出力
|
||||
*
|
||||
03 (A)AGG-SKILL-CODE PIC X(004).
|
||||
03 (A)AGG-LEVEL PIC 9(002) PACKED-DECIMAL.
|
||||
03 (A)AGG-LEVEL-NAME PIC X(020).
|
||||
03 (A)AGG-EMP-COUNT PIC 9(005) BINARY.
|
||||
03 (A)AGG-COUNT-EDIT PIC ZZZZ9.
|
||||
03 (A)AGG-AVG-SCORE PIC 9(003)V9(002)
|
||||
PACKED-DECIMAL.
|
||||
03 (A)FILLER PIC X(162).
|
||||
@@ -0,0 +1,9 @@
|
||||
*
|
||||
* スキル評価明細レコード 200B JIN02SKL入力
|
||||
*
|
||||
03 (A)SKILL-CODE PIC X(004).
|
||||
03 (A)EMP-ID PIC X(008).
|
||||
03 (A)EMP-NAME PIC X(040).
|
||||
03 (A)EVAL-DATE PIC X(008).
|
||||
03 (A)SCORE PIC 9(003).
|
||||
03 (A)FILLER PIC X(137).
|
||||
@@ -0,0 +1,9 @@
|
||||
*
|
||||
* スキル評価基準マスタレコード 80B JIN02SKL入力
|
||||
*
|
||||
03 (A)MST-SKILL-CODE PIC X(004).
|
||||
03 (A)MST-LEVEL PIC 9(002) BINARY.
|
||||
03 (A)MST-SCORE-FROM PIC 9(003).
|
||||
03 (A)MST-SCORE-TO PIC 9(003).
|
||||
03 (A)MST-LEVEL-NAME PIC X(020).
|
||||
03 (A)FILLER PIC X(048).
|
||||
@@ -0,0 +1,7 @@
|
||||
*
|
||||
* バリデーションエラーレコード 80B JIN01KNS/JIN02SKL共用
|
||||
*
|
||||
03 ERR-PROGRAMID PIC X(008).
|
||||
03 ERR-EMP-ID PIC X(008).
|
||||
03 ERR-CODE PIC X(004).
|
||||
03 ERR-DETAIL PIC X(060).
|
||||
@@ -0,0 +1,406 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. JIN01KNS IS INITIAL.
|
||||
*****************************************************************
|
||||
* システム名 : 人事情報管理システム *
|
||||
* プログラムID : JIN01KNS *
|
||||
* プログラム名 : カナ氏名チェック処理 *
|
||||
* 作成日 : 2026-07-19 *
|
||||
* 処理概要 : 人事取込データの氏名カナ(半角20桁以内・ *
|
||||
* 英大文字)および補助コード桁数をチェックする *
|
||||
*****************************************************************
|
||||
* 更新履歴 *
|
||||
*---------------------------------------------------------------*
|
||||
* 更新日付 担当者 更新内容 *
|
||||
*---------------------------------------------------------------*
|
||||
* 2026-07-19 @@@ 新規作成 *
|
||||
* *
|
||||
*****************************************************************
|
||||
ENVIRONMENT DIVISION.
|
||||
CONFIGURATION SECTION.
|
||||
SOURCE-COMPUTER. IBM-ZSERIES.
|
||||
OBJECT-COMPUTER. IBM-ZSERIES.
|
||||
*
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT R01INNFIL ASSIGN TO EXTERNAL JIN01R01.
|
||||
SELECT W01OUTFIL ASSIGN TO EXTERNAL JIN01W01.
|
||||
SELECT W02OUTFIL ASSIGN TO EXTERNAL JIN01W02.
|
||||
*
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* R01: EMP-IMPORT 人事取込データ *
|
||||
*****************************************************************
|
||||
FD R01INNFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 R01INNREC.
|
||||
COPY JIN01REC REPLACING ==(A)== BY ==R01==.
|
||||
*
|
||||
*****************************************************************
|
||||
* W01: EMP-VALID 正常通過データ *
|
||||
*****************************************************************
|
||||
FD W01OUTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 W01OUTREC.
|
||||
COPY JIN01REC REPLACING ==(A)== BY ==W01==.
|
||||
*
|
||||
*****************************************************************
|
||||
* W02: VALID-ERROR エラーレコード *
|
||||
*****************************************************************
|
||||
FD W02OUTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 W02OUTREC.
|
||||
COPY VALID-ERROR-REC.
|
||||
*
|
||||
WORKING-STORAGE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* コンスタント領域 *
|
||||
*****************************************************************
|
||||
01 CNSARA.
|
||||
03 CNS-PRGIDX PIC X(008) VALUE 'JIN01KNS'.
|
||||
03 CNS-MSGSTR PIC 9(003) VALUE 001.
|
||||
03 CNS-MSGFIN PIC 9(003) VALUE 002.
|
||||
03 CNS-MSGSUBEEK PIC 9(003) VALUE 005.
|
||||
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
|
||||
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
|
||||
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
|
||||
03 CNS-KN0002 PIC 9(001) VALUE 2.
|
||||
03 CNS-ABD999 PIC 9(003) VALUE 999.
|
||||
03 CNS-KANA-MAX PIC 9(002) VALUE 20.
|
||||
03 CNS-SUB-VALID-1 PIC X(004) VALUE '0001'.
|
||||
03 CNS-SUB-VALID-2 PIC X(004) VALUE '0002'.
|
||||
03 CNS-SUB-VALID-3 PIC X(004) VALUE '0003'.
|
||||
*
|
||||
*****************************************************************
|
||||
* カウンタ領域 *
|
||||
*****************************************************************
|
||||
01 CUNARA.
|
||||
03 CUN-R01INN PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
03 CUN-W01OUT PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
03 CUN-W02OUT PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
*
|
||||
*****************************************************************
|
||||
* 作業領域 *
|
||||
*****************************************************************
|
||||
01 WRKARA.
|
||||
*** 運用日付
|
||||
03 WRK-U06 PIC 9(008).
|
||||
*** 読込フラグ
|
||||
03 WRK-R01EOF PIC X(001).
|
||||
88 WRK-R01EOF-Y VALUE '1'.
|
||||
*** エラーフラグ
|
||||
03 WRK-ERR-FLG PIC X(001).
|
||||
88 WRK-ERR-Y VALUE '1'.
|
||||
*** エラーコード
|
||||
03 WRK-ERR-CODE PIC X(004).
|
||||
*** カナ長さWORK
|
||||
03 WRK-KANA-LEN PIC 9(002).
|
||||
*
|
||||
*****************************************************************
|
||||
* サブプログラム連絡領域 *
|
||||
*****************************************************************
|
||||
*** 運用日付取得
|
||||
COPY JINDATAC.
|
||||
*** メッセージ編集出力SR用
|
||||
COPY JINMSGAC.
|
||||
*** ABEND処理SR用
|
||||
COPY JINENDAC.
|
||||
*
|
||||
PROCEDURE DIVISION.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (0.0) *
|
||||
* サブモジュール名: 制御処理 *
|
||||
* 処理概要 : メインコントロール処理 *
|
||||
*****************************************************************
|
||||
0000MAJCOLSOR SECTION.
|
||||
*
|
||||
*** 初期処理
|
||||
PERFORM 1000ITTSOR.
|
||||
*
|
||||
*** メイン処理
|
||||
PERFORM 2000MAJSOR
|
||||
UNTIL WRK-R01EOF-Y.
|
||||
*
|
||||
*** 終了処理
|
||||
PERFORM 3000STPSOR.
|
||||
*
|
||||
*** RETURN-CODE設定(GOBACK直前)
|
||||
IF CUN-W02OUT > ZERO
|
||||
MOVE 4 TO RETURN-CODE
|
||||
END-IF.
|
||||
*
|
||||
0000MAJCOLSOR-EXT.
|
||||
GOBACK.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (1.0) *
|
||||
* サブモジュール名: 初期処理 *
|
||||
* 処理概要 : 開始メッセージ出力・各種初期化処理 *
|
||||
*****************************************************************
|
||||
1000ITTSOR SECTION.
|
||||
*
|
||||
*** 開始メッセージ出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGSTR TO M00MSGCOD.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
*** コンパイル日時出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGKEYINF TO M00MSGCOD.
|
||||
MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01.
|
||||
MOVE 'COMPILED' TO M00UMKDATS22-02.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
*** ワークエリア初期化
|
||||
INITIALIZE WRKARA
|
||||
CUNARA.
|
||||
*
|
||||
*** 運用日付取得
|
||||
INITIALIZE D01UBSPAR.
|
||||
CALL 'SUB01DAT' USING D01UBSPAR.
|
||||
IF D01FKICOD = ZERO
|
||||
MOVE D01UBSUDATE TO WRK-U06
|
||||
ELSE
|
||||
INITIALIZE M00MHOPAR
|
||||
MOVE CNS-MSGSUBEEK TO M00MSGCOD
|
||||
MOVE 'SUB01DAT' TO M00UMKDATS22-01
|
||||
MOVE D01FKICOD TO M00UMKDATS22-02
|
||||
PERFORM 4000MSGOUTSOR
|
||||
PERFORM 9999ABDSOR
|
||||
END-IF.
|
||||
*
|
||||
*** 入出力ファイルOPEN
|
||||
OPEN INPUT R01INNFIL
|
||||
OUTPUT W01OUTFIL
|
||||
W02OUTFIL.
|
||||
*
|
||||
*** R01を読み込み
|
||||
PERFORM 1100R01INNSOR.
|
||||
*
|
||||
1000ITTSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(1.1) *
|
||||
* サブモジュール名: R01読込処理 *
|
||||
* 処理概要 : レコード読込・EOF判定処理 *
|
||||
*****************************************************************
|
||||
1100R01INNSOR SECTION.
|
||||
*
|
||||
READ R01INNFIL
|
||||
AT END
|
||||
MOVE '1' TO WRK-R01EOF
|
||||
NOT AT END
|
||||
ADD 1 TO CUN-R01INN
|
||||
END-READ.
|
||||
*
|
||||
1100R01INNSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.0) *
|
||||
* サブモジュール名: 主処理 *
|
||||
* 処理概要 : カナチェック・振分処理 *
|
||||
*****************************************************************
|
||||
2000MAJSOR SECTION.
|
||||
*
|
||||
*** エラーフラグ初期化
|
||||
MOVE '0' TO WRK-ERR-FLG.
|
||||
*
|
||||
*** カナ文字チェック
|
||||
PERFORM 2010CHKANASOR.
|
||||
*
|
||||
*** 桁数チェック(エラー未設定時のみ)
|
||||
IF NOT WRK-ERR-Y
|
||||
PERFORM 2020CHKSIZSOR
|
||||
END-IF.
|
||||
*
|
||||
*** 補助コードチェック(エラー未設定時のみ)
|
||||
IF NOT WRK-ERR-Y
|
||||
PERFORM 2030CHKSUBSOR
|
||||
END-IF.
|
||||
*
|
||||
*** 振分処理
|
||||
IF WRK-ERR-Y
|
||||
PERFORM 2200WRTERRSOR
|
||||
ELSE
|
||||
PERFORM 2100WRTOKSOR
|
||||
END-IF.
|
||||
*
|
||||
*** 次のレコード読込
|
||||
PERFORM 1100R01INNSOR.
|
||||
*
|
||||
2000MAJSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.1) *
|
||||
* サブモジュール名: カナ文字チェック *
|
||||
* 処理概要 : IS ALPHABETIC-UPPER で英大文字判定 *
|
||||
*****************************************************************
|
||||
2010CHKANASOR SECTION.
|
||||
*
|
||||
IF R01KANA-SEI IS NOT ALPHABETIC-UPPER
|
||||
MOVE '1' TO WRK-ERR-FLG
|
||||
MOVE 'K002' TO WRK-ERR-CODE
|
||||
END-IF.
|
||||
IF R01KANA-MEI IS NOT ALPHABETIC-UPPER
|
||||
MOVE '1' TO WRK-ERR-FLG
|
||||
MOVE 'K002' TO WRK-ERR-CODE
|
||||
END-IF.
|
||||
*
|
||||
2010CHKANASOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.2) *
|
||||
* サブモジュール名: 桁数チェック *
|
||||
* 処理概要 : 半角20桁超過チェック *
|
||||
*****************************************************************
|
||||
2020CHKSIZSOR SECTION.
|
||||
*
|
||||
*** TRAILING SPACES除去後の実効長が20超過かチェック
|
||||
MOVE FUNCTION LENGTH(
|
||||
FUNCTION TRIM(R01KANA-SEI TRAILING))
|
||||
TO WRK-KANA-LEN.
|
||||
IF WRK-KANA-LEN > CNS-KANA-MAX
|
||||
MOVE '1' TO WRK-ERR-FLG
|
||||
MOVE 'K001' TO WRK-ERR-CODE
|
||||
END-IF.
|
||||
MOVE FUNCTION LENGTH(
|
||||
FUNCTION TRIM(R01KANA-MEI TRAILING))
|
||||
TO WRK-KANA-LEN.
|
||||
IF WRK-KANA-LEN > CNS-KANA-MAX
|
||||
MOVE '1' TO WRK-ERR-FLG
|
||||
MOVE 'K001' TO WRK-ERR-CODE
|
||||
END-IF.
|
||||
*
|
||||
2020CHKSIZSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.3) *
|
||||
* サブモジュール名: 補助コードチェック *
|
||||
* 処理概要 : SUB-CODEの有効値チェック *
|
||||
*****************************************************************
|
||||
2030CHKSUBSOR SECTION.
|
||||
*
|
||||
IF R01SUB-CODE NOT = CNS-SUB-VALID-1
|
||||
AND R01SUB-CODE NOT = CNS-SUB-VALID-2
|
||||
AND R01SUB-CODE NOT = CNS-SUB-VALID-3
|
||||
MOVE '1' TO WRK-ERR-FLG
|
||||
MOVE 'K003' TO WRK-ERR-CODE
|
||||
END-IF.
|
||||
*
|
||||
2030CHKSUBSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.4) *
|
||||
* サブモジュール名: 正常WRITE処理 *
|
||||
* 処理概要 : W01へ正常データ出力 *
|
||||
*****************************************************************
|
||||
2100WRTOKSOR SECTION.
|
||||
*
|
||||
*** W01レコード編集
|
||||
INITIALIZE W01OUTREC.
|
||||
MOVE R01KANA-SEI TO W01KANA-SEI.
|
||||
MOVE R01KANA-MEI TO W01KANA-MEI.
|
||||
MOVE R01KANJI-NAME TO W01KANJI-NAME.
|
||||
MOVE R01SUB-CODE TO W01SUB-CODE.
|
||||
MOVE R01BIRTH-DATE TO W01BIRTH-DATE.
|
||||
MOVE R01EMP-ID TO W01EMP-ID.
|
||||
WRITE W01OUTREC.
|
||||
ADD 1 TO CUN-W01OUT.
|
||||
*
|
||||
2100WRTOKSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.5) *
|
||||
* サブモジュール名: エラーWRITE処理 *
|
||||
* 処理概要 : W02へエラーレコード出力 *
|
||||
*****************************************************************
|
||||
2200WRTERRSOR SECTION.
|
||||
*
|
||||
ADD 1 TO CUN-W02OUT
|
||||
END-ADD.
|
||||
INITIALIZE W02OUTREC.
|
||||
MOVE CNS-PRGIDX TO ERR-PROGRAMID.
|
||||
MOVE R01EMP-ID TO ERR-EMP-ID.
|
||||
MOVE WRK-ERR-CODE TO ERR-CODE.
|
||||
STRING 'ERR:' WRK-ERR-CODE
|
||||
DELIMITED BY SIZE
|
||||
INTO ERR-DETAIL
|
||||
END-STRING.
|
||||
WRITE W02OUTREC.
|
||||
*
|
||||
2200WRTERRSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(3.0) *
|
||||
* サブモジュール名: 終了処理 *
|
||||
* 処理概要 : ファイルクローズ・件数と終了メッセージ出力 *
|
||||
*****************************************************************
|
||||
3000STPSOR SECTION.
|
||||
*
|
||||
*** 入出力ファイルCLOSE
|
||||
CLOSE R01INNFIL
|
||||
W01OUTFIL
|
||||
W02OUTFIL.
|
||||
*
|
||||
*** 入出力ファイル件数出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'JIN01R01' TO M00UMKDATS22-01.
|
||||
MOVE CUN-R01INN TO M00UMKDATS22-02.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
||||
MOVE 'JIN01W01' TO M00UMKDATS22-01.
|
||||
MOVE CUN-W01OUT TO M00UMKDATS22-02.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
||||
MOVE 'JIN01W02' TO M00UMKDATS22-01.
|
||||
MOVE CUN-W02OUT TO M00UMKDATS22-02.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
*** 終了メッセージ出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGFIN TO M00MSGCOD.
|
||||
PERFORM 4000MSGOUTSOR.
|
||||
*
|
||||
3000STPSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(4.0) *
|
||||
* サブモジュール名: メッセージ編集出力処理 *
|
||||
* 処理概要 : メッセージ編集出力サブPGM呼出 *
|
||||
*****************************************************************
|
||||
4000MSGOUTSOR SECTION.
|
||||
*
|
||||
MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1).
|
||||
MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1).
|
||||
MOVE CNS-PRGIDX TO M00UMKDATS22-05.
|
||||
CALL 'SUB02MSG' USING M00MHOPAR.
|
||||
*
|
||||
4000MSGOUTSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(9.9) *
|
||||
* サブモジュール名: ABEND処理 *
|
||||
* 処理概要 : ABENDサブPGM呼出 *
|
||||
*****************************************************************
|
||||
9999ABDSOR SECTION.
|
||||
*
|
||||
MOVE CNS-ABD999 TO E01ABDCOD.
|
||||
CALL 'SUB03END' USING E01ABDPAR.
|
||||
*
|
||||
9999ABDSOR-EXT.
|
||||
EXIT.
|
||||
@@ -0,0 +1,483 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. JIN02SKL.
|
||||
*****************************************************************
|
||||
* システム名 : 人事情報管理システム *
|
||||
* プログラムID : JIN02SKL *
|
||||
* プログラム名 : スキル別評価集計処理 *
|
||||
* 作成日 : 2026-07-19 *
|
||||
* 処理概要 : スキル評価明細(M件)× 評価基準マスタ *
|
||||
* (N件)→ スキル別評価集計(N件出力) *
|
||||
*****************************************************************
|
||||
* 更新履歴 *
|
||||
*---------------------------------------------------------------*
|
||||
* 更新日付 担当者 更新内容 *
|
||||
*---------------------------------------------------------------*
|
||||
* 2026-07-19 @@@ 新規作成 *
|
||||
* *
|
||||
*****************************************************************
|
||||
ENVIRONMENT DIVISION.
|
||||
CONFIGURATION SECTION.
|
||||
SOURCE-COMPUTER. IBM-ZSERIES.
|
||||
OBJECT-COMPUTER. IBM-ZSERIES.
|
||||
*
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT R01INNFIL ASSIGN TO EXTERNAL JIN02R01.
|
||||
SELECT R02INNFIL ASSIGN TO EXTERNAL JIN02R02.
|
||||
SELECT W01OUTFIL ASSIGN TO EXTERNAL JIN02W01.
|
||||
SELECT W02OUTFIL ASSIGN TO EXTERNAL JIN02W02.
|
||||
*
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* R01: SKILL-EVAL スキル評価明細 *
|
||||
*****************************************************************
|
||||
FD R01INNFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 R01INNREC.
|
||||
COPY SKILL-EVAL-REC REPLACING ==(A)== BY ==R01==.
|
||||
*
|
||||
*****************************************************************
|
||||
* R02: SKILL-MST スキル評価基準マスタ *
|
||||
*****************************************************************
|
||||
FD R02INNFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 R02INNREC.
|
||||
COPY SKILL-MST-REC REPLACING ==(A)== BY ==R02==.
|
||||
*
|
||||
*****************************************************************
|
||||
* W01: SKILL-AGG スキル別評価集計結果 *
|
||||
*****************************************************************
|
||||
FD W01OUTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 W01OUTREC.
|
||||
COPY SKILL-AGG-REC REPLACING ==(A)== BY ==W01==.
|
||||
*
|
||||
*****************************************************************
|
||||
* W02: VALID-ERROR エラーレコード *
|
||||
*****************************************************************
|
||||
FD W02OUTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 W02OUTREC.
|
||||
COPY VALID-ERROR-REC.
|
||||
*
|
||||
WORKING-STORAGE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* コンスタント領域 *
|
||||
*****************************************************************
|
||||
01 CNSARA.
|
||||
03 CNS-PRGIDX PIC X(008) VALUE 'JIN02SKL'.
|
||||
03 CNS-MSGSTR PIC 9(003) VALUE 001.
|
||||
03 CNS-MSGFIN PIC 9(003) VALUE 002.
|
||||
03 CNS-MSGSUBEEK PIC 9(003) VALUE 005.
|
||||
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
|
||||
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
|
||||
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
|
||||
03 CNS-KN0002 PIC 9(001) VALUE 2.
|
||||
03 CNS-ABD999 PIC 9(003) VALUE 999.
|
||||
03 CNS-TBL-MAX PIC 9(003) VALUE 100.
|
||||
*
|
||||
*****************************************************************
|
||||
* カウンタ領域 *
|
||||
*****************************************************************
|
||||
01 CUNARA.
|
||||
03 CUN-R01INN PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
03 CUN-R02INN PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
03 CUN-W01OUT PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
03 CUN-W02OUT PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
*
|
||||
*****************************************************************
|
||||
* 作業領域 *
|
||||
*****************************************************************
|
||||
01 WRKARA.
|
||||
*** 運用日付
|
||||
03 WRK-U06 PIC 9(008).
|
||||
*** 読込フラグ
|
||||
03 WRK-R01EOF PIC X(001).
|
||||
88 WRK-R01EOF-Y VALUE '1'.
|
||||
03 WRK-R02EOF PIC X(001).
|
||||
88 WRK-R02EOF-Y VALUE '1'.
|
||||
*** 内部表走査用
|
||||
03 WRK-IDX PIC 9(004) BINARY.
|
||||
03 WRK-AVG-TEMP PIC 9(006)V9(002).
|
||||
03 WRK-REM PIC 9(003).
|
||||
|
||||
*
|
||||
*****************************************************************
|
||||
* 内部表: スキル別評価集計用 *
|
||||
*****************************************************************
|
||||
01 WS-SKILL-TABLE.
|
||||
03 WS-TBL-ENTRY OCCURS 1 TO 100
|
||||
DEPENDING ON WS-TBL-MAX-IDX
|
||||
ASCENDING KEY IS TBL-SKILL-CODE
|
||||
INDEXED BY WS-TBL-IDX.
|
||||
05 TBL-SKILL-CODE PIC X(004).
|
||||
05 TBL-LEVEL PIC 9(002) BINARY.
|
||||
05 TBL-LEVEL-NAME PIC X(020).
|
||||
05 TBL-EMP-COUNT PIC 9(005) BINARY.
|
||||
05 TBL-SCORE-SUM PIC 9(008) BINARY.
|
||||
01 WS-TBL-MAX-IDX PIC 9(004) BINARY.
|
||||
*
|
||||
*****************************************************************
|
||||
* サブプログラム連絡領域 *
|
||||
*****************************************************************
|
||||
*** 運用日付取得
|
||||
COPY JINDATAC.
|
||||
*** メッセージ編集出力SR用
|
||||
COPY JINMSGAC.
|
||||
*** ABEND処理SR用
|
||||
COPY JINENDAC.
|
||||
*
|
||||
PROCEDURE DIVISION.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (0.0) *
|
||||
* サブモジュール名: 制御処理 *
|
||||
* 処理概要 : メインコントロール処理 *
|
||||
*****************************************************************
|
||||
0000MAJCOLSOR SECTION.
|
||||
*
|
||||
*** 初期処理
|
||||
PERFORM 1000ITTSOR.
|
||||
*
|
||||
*** マスタLOAD処理
|
||||
PERFORM 1200MSTLDASOR
|
||||
UNTIL WRK-R02EOF-Y.
|
||||
*
|
||||
*** 評価明細集計処理
|
||||
PERFORM 2000MAJSOR
|
||||
UNTIL WRK-R01EOF-Y.
|
||||
*
|
||||
*** 集計結果出力処理
|
||||
PERFORM 3000OUTPUSOR.
|
||||
*
|
||||
*** 終了処理
|
||||
PERFORM 4000STPSOR.
|
||||
*
|
||||
0000MAJCOLSOR-EXT.
|
||||
GOBACK.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (1.0) *
|
||||
* サブモジュール名: 初期処理 *
|
||||
* 処理概要 : 開始メッセージ出力・各種初期化処理 *
|
||||
*****************************************************************
|
||||
1000ITTSOR SECTION.
|
||||
*
|
||||
*** 開始メッセージ出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGSTR TO M00MSGCOD.
|
||||
PERFORM 6000MSGOUTSOR.
|
||||
*
|
||||
*** コンパイル日時出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGKEYINF TO M00MSGCOD.
|
||||
MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01.
|
||||
MOVE 'COMPILED' TO M00UMKDATS22-02.
|
||||
PERFORM 6000MSGOUTSOR.
|
||||
*
|
||||
*** ワークエリア初期化
|
||||
INITIALIZE WRKARA
|
||||
CUNARA.
|
||||
*
|
||||
*** 内部表サイズ初期化
|
||||
MOVE ZERO TO WS-TBL-MAX-IDX.
|
||||
*
|
||||
*** 運用日付取得
|
||||
INITIALIZE D01UBSPAR.
|
||||
CALL 'SUB01DAT' USING D01UBSPAR.
|
||||
IF D01FKICOD = ZERO
|
||||
MOVE D01UBSUDATE TO WRK-U06
|
||||
ELSE
|
||||
INITIALIZE M00MHOPAR
|
||||
MOVE CNS-MSGSUBEEK TO M00MSGCOD
|
||||
MOVE 'SUB01DAT' TO M00UMKDATS22-01
|
||||
MOVE D01FKICOD TO M00UMKDATS22-02
|
||||
PERFORM 6000MSGOUTSOR
|
||||
PERFORM 9999ABDSOR
|
||||
END-IF.
|
||||
*
|
||||
*** 入出力ファイルOPEN
|
||||
OPEN INPUT R01INNFIL
|
||||
R02INNFIL
|
||||
OUTPUT W01OUTFIL
|
||||
W02OUTFIL.
|
||||
*
|
||||
*** R02初回読込
|
||||
PERFORM 1100R02INNSOR.
|
||||
*
|
||||
*** R01初回読込
|
||||
PERFORM 1300R01INNSOR.
|
||||
*
|
||||
1000ITTSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(1.1) *
|
||||
* サブモジュール名: R02読込処理 *
|
||||
* 処理概要 : 評価基準マスタ読込・EOF判定 *
|
||||
*****************************************************************
|
||||
1100R02INNSOR SECTION.
|
||||
*
|
||||
READ R02INNFIL
|
||||
AT END
|
||||
MOVE '1' TO WRK-R02EOF
|
||||
NOT AT END
|
||||
ADD 1 TO CUN-R02INN
|
||||
END-READ.
|
||||
*
|
||||
1100R02INNSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(1.2) *
|
||||
* サブモジュール名: マスタLOAD処理 *
|
||||
* 処理概要 : R02全件を内部表にLOAD *
|
||||
*****************************************************************
|
||||
1200MSTLDASOR SECTION.
|
||||
*
|
||||
*** 内部表エントリ追加
|
||||
ADD 1 TO WS-TBL-MAX-IDX
|
||||
END-ADD.
|
||||
*
|
||||
MOVE R02MST-SKILL-CODE
|
||||
TO TBL-SKILL-CODE(WS-TBL-MAX-IDX).
|
||||
MOVE R02MST-LEVEL
|
||||
TO TBL-LEVEL(WS-TBL-MAX-IDX).
|
||||
MOVE R02MST-LEVEL-NAME
|
||||
TO TBL-LEVEL-NAME(WS-TBL-MAX-IDX).
|
||||
MOVE ZERO
|
||||
TO TBL-EMP-COUNT(WS-TBL-MAX-IDX).
|
||||
MOVE ZERO
|
||||
TO TBL-SCORE-SUM(WS-TBL-MAX-IDX).
|
||||
*
|
||||
*** 次のR02読込
|
||||
PERFORM 1100R02INNSOR.
|
||||
*
|
||||
1200MSTLDASOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(1.3) *
|
||||
* サブモジュール名: R01読込処理 *
|
||||
* 処理概要 : 評価明細読込・EOF判定 *
|
||||
*****************************************************************
|
||||
1300R01INNSOR SECTION.
|
||||
*
|
||||
READ R01INNFIL
|
||||
AT END
|
||||
MOVE '1' TO WRK-R01EOF
|
||||
NOT AT END
|
||||
ADD 1 TO CUN-R01INN
|
||||
END-READ.
|
||||
*
|
||||
1300R01INNSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.0) *
|
||||
* サブモジュール名: 主処理 *
|
||||
* 処理概要 : 評価明細1件の集計(SEARCH ALL + UPDATE) *
|
||||
*****************************************************************
|
||||
2000MAJSOR SECTION.
|
||||
*
|
||||
*** SEARCH ALL で該当レベル特定
|
||||
SET WS-TBL-IDX TO 1.
|
||||
SEARCH ALL WS-TBL-ENTRY
|
||||
AT END
|
||||
PERFORM 2100WRTERRSOR
|
||||
WHEN TBL-SKILL-CODE(WS-TBL-IDX)
|
||||
= R01SKILL-CODE
|
||||
PERFORM 2200UPDTTLSOR
|
||||
END-SEARCH.
|
||||
*
|
||||
*** 次のR01読込
|
||||
PERFORM 1300R01INNSOR.
|
||||
*
|
||||
2000MAJSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.1) *
|
||||
* サブモジュール名: エラーWRITE *
|
||||
* 処理概要 : W02へエラーレコード出力 *
|
||||
*****************************************************************
|
||||
2100WRTERRSOR SECTION.
|
||||
*
|
||||
ADD 1 TO CUN-W02OUT.
|
||||
INITIALIZE W02OUTREC.
|
||||
MOVE CNS-PRGIDX TO ERR-PROGRAMID.
|
||||
MOVE R01EMP-ID TO ERR-EMP-ID.
|
||||
MOVE 'E001' TO ERR-CODE.
|
||||
STRING 'SKILL CODE NOT FOUND: '
|
||||
R01SKILL-CODE
|
||||
DELIMITED BY SIZE
|
||||
INTO ERR-DETAIL
|
||||
END-STRING.
|
||||
WRITE W02OUTREC.
|
||||
*
|
||||
2100WRTERRSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(2.2) *
|
||||
* サブモジュール名: 内部表UPDATE *
|
||||
* 処理概要 : 該当エントリの件数・合計点を加算 *
|
||||
*****************************************************************
|
||||
2200UPDTTLSOR SECTION.
|
||||
*
|
||||
*** 件数加算(END-ADD 予約語カバー)
|
||||
ADD 1 TO TBL-EMP-COUNT(WS-TBL-IDX)
|
||||
END-ADD.
|
||||
*** 合計点加算
|
||||
ADD R01SCORE TO TBL-SCORE-SUM(WS-TBL-IDX)
|
||||
END-ADD.
|
||||
*
|
||||
2200UPDTTLSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(3.0) *
|
||||
* サブモジュール名: 集計結果出力処理 *
|
||||
* 処理概要 : 内部表を降順走査し平均点を算出して出力 *
|
||||
*****************************************************************
|
||||
3000OUTPUSOR SECTION.
|
||||
*
|
||||
*** R01/R02 CLOSE(後続処理でR01/R02は不要)
|
||||
CLOSE R01INNFIL
|
||||
R02INNFIL.
|
||||
*
|
||||
*** 内部表を降順走査
|
||||
IF WS-TBL-MAX-IDX > ZERO
|
||||
PERFORM VARYING WRK-IDX
|
||||
FROM WS-TBL-MAX-IDX BY -1
|
||||
UNTIL WRK-IDX = ZERO
|
||||
PERFORM 3100WRITEAGSOR
|
||||
END-PERFORM
|
||||
SUBTRACT 1 FROM WS-TBL-MAX-IDX
|
||||
END-SUBTRACT
|
||||
END-IF.
|
||||
*
|
||||
3000OUTPUSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(3.1) *
|
||||
* サブモジュール名: 集計結果1件WRITE *
|
||||
* 処理概要 : 平均点算出→編集→W01出力 *
|
||||
*****************************************************************
|
||||
3100WRITEAGSOR SECTION.
|
||||
*
|
||||
*** 平均点算出(END-DIVIDE 予約語カバー)
|
||||
IF TBL-EMP-COUNT(WRK-IDX) > ZERO
|
||||
DIVIDE TBL-SCORE-SUM(WRK-IDX)
|
||||
BY TBL-EMP-COUNT(WRK-IDX)
|
||||
GIVING WRK-AVG-TEMP
|
||||
REMAINDER WRK-REM
|
||||
END-DIVIDE
|
||||
ELSE
|
||||
MOVE ZERO TO WRK-AVG-TEMP
|
||||
END-IF.
|
||||
*
|
||||
*** W01レコード編集
|
||||
INITIALIZE W01OUTREC.
|
||||
MOVE TBL-SKILL-CODE(WRK-IDX)
|
||||
TO W01AGG-SKILL-CODE.
|
||||
MOVE TBL-LEVEL(WRK-IDX)
|
||||
TO W01AGG-LEVEL.
|
||||
MOVE TBL-LEVEL-NAME(WRK-IDX)
|
||||
TO W01AGG-LEVEL-NAME.
|
||||
*
|
||||
*** GREATER THAN 予約語カバー
|
||||
IF TBL-EMP-COUNT(WRK-IDX)
|
||||
IS GREATER THAN ZERO
|
||||
MOVE TBL-EMP-COUNT(WRK-IDX)
|
||||
TO W01AGG-EMP-COUNT
|
||||
MOVE TBL-EMP-COUNT(WRK-IDX)
|
||||
TO W01AGG-COUNT-EDIT
|
||||
ELSE
|
||||
MOVE ZERO TO W01AGG-EMP-COUNT
|
||||
W01AGG-COUNT-EDIT
|
||||
END-IF.
|
||||
*
|
||||
MOVE WRK-AVG-TEMP
|
||||
TO W01AGG-AVG-SCORE.
|
||||
*
|
||||
WRITE W01OUTREC.
|
||||
ADD 1 TO CUN-W01OUT.
|
||||
*
|
||||
3100WRITEAGSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(4.0) *
|
||||
* サブモジュール名: 終了処理 *
|
||||
* 処理概要 : 件数出力 + 終了メッセージ *
|
||||
*****************************************************************
|
||||
4000STPSOR SECTION.
|
||||
*
|
||||
*** 入出力ファイル件数出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'JIN02R01' TO M00UMKDATS22-01.
|
||||
MOVE CUN-R01INN TO M00UMKDATS22-02.
|
||||
PERFORM 6000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||||
MOVE 'JIN02R02' TO M00UMKDATS22-01.
|
||||
MOVE CUN-R02INN TO M00UMKDATS22-02.
|
||||
PERFORM 6000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
||||
MOVE 'JIN02W01' TO M00UMKDATS22-01.
|
||||
MOVE CUN-W01OUT TO M00UMKDATS22-02.
|
||||
PERFORM 6000MSGOUTSOR.
|
||||
*
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
||||
MOVE 'JIN02W02' TO M00UMKDATS22-01.
|
||||
MOVE CUN-W02OUT TO M00UMKDATS22-02.
|
||||
PERFORM 6000MSGOUTSOR.
|
||||
*
|
||||
*** 出力ファイルCLOSE
|
||||
CLOSE W01OUTFIL
|
||||
W02OUTFIL.
|
||||
*
|
||||
*** 終了メッセージ出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE CNS-MSGFIN TO M00MSGCOD.
|
||||
PERFORM 6000MSGOUTSOR.
|
||||
*
|
||||
4000STPSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(6.0) *
|
||||
* サブモジュール名: メッセージ編集出力処理 *
|
||||
* 処理概要 : メッセージ編集出力サブPGM呼出 *
|
||||
*****************************************************************
|
||||
6000MSGOUTSOR SECTION.
|
||||
*
|
||||
MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1).
|
||||
MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1).
|
||||
MOVE CNS-PRGIDX TO M00UMKDATS22-05.
|
||||
CALL 'SUB02MSG' USING M00MHOPAR.
|
||||
*
|
||||
6000MSGOUTSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO:(9.9) *
|
||||
* サブモジュール名: ABEND処理 *
|
||||
* 処理概要 : ABENDサブPGM呼出 *
|
||||
*****************************************************************
|
||||
9999ABDSOR SECTION.
|
||||
*
|
||||
MOVE CNS-ABD999 TO E01ABDCOD.
|
||||
CALL 'SUB03END' USING E01ABDPAR.
|
||||
*
|
||||
9999ABDSOR-EXT.
|
||||
EXIT.
|
||||
@@ -0,0 +1,44 @@
|
||||
# JIN01KNS 使用資源一覧
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: JIN01KNS
|
||||
- **プログラム名**: カナ氏名チェック処理
|
||||
- **処理概要**: 人事取込データの氏名カナ(半角20桁以内・英大文字)および補助コード桁数をチェックする。
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||
|------|---------------|------|-------------|-----------|--------|
|
||||
| JIN01R01 | EMP-IMPORT | 順編成 | F (固定長) | 200B | JIN01REC |
|
||||
| JIN01W01 | EMP-VALID | 順編成 | F (固定長) | 200B | JIN01REC |
|
||||
| JIN01W02 | VALID-ERROR | 順編成 | F (固定長) | 80B | VALID-ERROR-REC(JIN01REC内) |
|
||||
|
||||
## 使用COPY句
|
||||
|
||||
| COPY句 | 用途 | 使用箇所 |
|
||||
|--------|------|---------|
|
||||
| JIN01REC | レコード定義(R01/W01/W02出力ファイル) | FILE SECTION |
|
||||
| JINDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| JINMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| JINENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||
|
||||
## 使用サブプログラム
|
||||
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
なし(DB操作なし)
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込)
|
||||
2. READループ(R01)
|
||||
3. カナ文字チェック(IS ALPHABETIC-UPPER)
|
||||
4. 桁数チェック(20桁超過)
|
||||
5. 補助コードチェック(4桁有効値)
|
||||
6. 正常→W01出力、異常→W02出力
|
||||
7. 終了処理(CLOSE→件数出力→RETURN-CODE設定)
|
||||
@@ -0,0 +1,48 @@
|
||||
# JIN02SKL 使用資源一覧
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: JIN02SKL
|
||||
- **プログラム名**: スキル別評価集計処理
|
||||
- **処理概要**: スキル評価明細(M件)× 評価基準マスタ(N件)→ スキル別評価集計(N件出力)
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||
|------|---------------|------|-------------|-----------|--------|
|
||||
| JIN02R01 | SKILL-EVAL | 順編成 | F (固定長) | 200B | SKILL-EVAL-REC |
|
||||
| JIN02R02 | SKILL-MST | 順編成 | F (固定長) | 80B | SKILL-MST-REC |
|
||||
| JIN02W01 | SKILL-AGG | 順編成 | F (固定長) | 200B | SKILL-AGG-REC |
|
||||
| JIN02W02 | VALID-ERROR | 順編成 | F (固定長) | 80B | VALID-ERROR-REC(JIN01REC内) |
|
||||
|
||||
## 使用COPY句
|
||||
|
||||
| COPY句 | 用途 | 使用箇所 |
|
||||
|--------|------|---------|
|
||||
| SKILL-EVAL-REC | スキル評価明細レコード定義(R01入力) | FILE SECTION |
|
||||
| SKILL-MST-REC | 評価基準マスタレコード定義(R02入力) | FILE SECTION |
|
||||
| SKILL-AGG-REC | 評価集計結果レコード定義(W01出力) | FILE SECTION |
|
||||
| JIN01REC | VALID-ERROR-REC(W02出力) | FILE SECTION |
|
||||
| JINDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| JINMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| JINENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||
|
||||
## 使用サブプログラム
|
||||
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
なし(DB操作なし)
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→運用日付取得→OPEN)
|
||||
2. マスタLOAD(R02全件→内部表構築)
|
||||
3. 評価明細READループ(R01)
|
||||
4. SEARCH ALLで該当レベル特定
|
||||
5. 内部表UPDATE(件数・合計点加算)
|
||||
6. 集計結果出力(降順走査→平均点DIVIDE→WRITE)
|
||||
7. 終了処理(CLOSE→件数出力)
|
||||
@@ -0,0 +1,132 @@
|
||||
# 人事情報管理システム 設計書(サブシステムE)
|
||||
|
||||
## システム概要
|
||||
|
||||
本サブシステムは、従業員の基本情報(氏名カナ/漢字)のフォーマット検証と、
|
||||
スキル評価データの集計・分析を行う。
|
||||
これにより、サブシステムA〜Dで未カバーのプログラムタイプ
|
||||
No.19(M:N→N件)および No.27(半角20桁/4桁チェック)を追加し、
|
||||
PICTURE記号 N/BINARY/ZZZZ9 および11個の COBOL 予約語を
|
||||
新たにカバーする。
|
||||
|
||||
### サブシステム情報
|
||||
|
||||
| 項目 | 内容 |
|
||||
|------|------|
|
||||
| サブシステムID | JIN(人事→JINji) |
|
||||
| COBOLプログラム数 | 2 |
|
||||
| JCL数 | 2 |
|
||||
| DB | なし(ファイル連携のみ) |
|
||||
|
||||
### サブシステム内ファイル
|
||||
|
||||
| # | ファイル名 | 編成 | RECM | サイズ | 用途 | 区分 |
|
||||
|---|-----------|------|------|-------|------|------|
|
||||
| 1 | EMP-IMPORT | SEQUENTIAL | FB | 200 | 人事取込データ(外部システムよりCSV→EBCDIC変換済) | 新規 |
|
||||
| 2 | EMP-VALID | SEQUENTIAL | FB | 200 | チェック通過正常データ | 新規 |
|
||||
| 3 | VALID-ERROR | SEQUENTIAL | FB | 80 | バリデーションエラーレコード(PROGRAMID・EMP-ID・ERR-CODE・詳細) | 新規 |
|
||||
| 4 | SKILL-EVAL | SEQUENTIAL | FB | 200 | スキル評価明細データ | 新規 |
|
||||
| 5 | SKILL-MST | SEQUENTIAL | FB | 80 | スキル評価基準マスタ | 新規 |
|
||||
| 6 | SKILL-AGG | SEQUENTIAL | FB | 200 | スキル別評価集計結果 | 新規 |
|
||||
|
||||
### システム定数
|
||||
|
||||
| 定数 | 値 | 説明 |
|
||||
|------|-----|------|
|
||||
| KANA-MAX-LEN | 20 | 氏名カナ最大桁数(半角) |
|
||||
| SUBCODE-LEN | 4 | 補助コード桁数 |
|
||||
| SKILL-LEVEL-MAX | 10 | スキルレベルの最大値 |
|
||||
| EVAL-SCORE-MAX | 999 | 評価点数の最大値 |
|
||||
|
||||
### 共通関数利用方針
|
||||
|
||||
既存のサブプログラム(SUB01DAT〜SUB05TIM)は本サブシステムでも利用する。
|
||||
連絡領域のCOPY書式は `JINDATAC`・`JINMSGAC`・`JINENDAC` を新規作成する
|
||||
(チェック用サブプログラム SUB04CHK は使用しない)。
|
||||
|
||||
---
|
||||
|
||||
## 処理フロー
|
||||
|
||||
```
|
||||
╞══ JINJ010 ═══════════════════════════════════╡
|
||||
│ JIN01KNS(カナ氏名チェック) PGMパターン: 27
|
||||
│ 人事取込データ(EMP-IMPORT)を1レコードずつ読み込み
|
||||
│ IF KANA-SEI IS ALPHABETIC-UPPER AND KANA-MEI IS ALPHABETIC-UPPER → 正常
|
||||
│ 半角20桁超過 OR 補助コード4桁不一致 → エラーファイル出力
|
||||
│ ADD 1 TO WS-READ-CNT END-ADD(件数カウント)
|
||||
│ RETURN-CODE に終了ステータス設定
|
||||
│ PROGRAM-ID IS INITIAL 指定
|
||||
├── 正常 → EMP-VALID(200B 正常データ)
|
||||
└── 異常 → VALID-ERROR(80B エラーレコード)
|
||||
│
|
||||
╞══ JINJ020 ═══════════════════════════════════╡
|
||||
│ JIN02SKL(スキル別評価集計) PGMパターン: 19
|
||||
│ SKILL-EVAL(M件の評価明細)× SKILL-MST(N件の評価基準)
|
||||
│ SEARCH ALL でSKILL-CODEに対応するLEVEL判定
|
||||
│ 内部表にスキルコード×レベル別の件数と合計点を集計
|
||||
│ 集計後、PERFORM VARYINGで降順(DESCENDING)走査し出力
|
||||
│ DIVIDE ... GIVING ... END-DIVIDE で平均点算出
|
||||
│ SUBTRACT 1 FROM WS-IDX END-SUBTRACT で内部表走査
|
||||
│ USAGE BINARY / USAGE PACKED-DECIMAL でカウンタ・金額定義
|
||||
│ エラー件数表示に ZZZZ9 編集
|
||||
├── → SKILL-AGG(200B スキル別評価集計結果)
|
||||
└── 異常 → VALID-ERROR(80B エラーレコード)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## JCL
|
||||
|
||||
### JINJ010 — カナ氏名チェック
|
||||
|
||||
```jcl
|
||||
//JINJ010 JOB (ACCT),'カナ氏名チェック',CLASS=A
|
||||
//*
|
||||
//*=====================================================================
|
||||
//* STEP010: 半角カナチェック(Type 27)
|
||||
//*=====================================================================
|
||||
//STEP010 EXEC PGM=JIN01KNS
|
||||
//JIN01R01 DD DSN=EMP-IMPORT.DAT,DISP=SHR
|
||||
//JIN01W01 DD DSN=EMP-VALID.DAT,DISP=(NEW,CATLG)
|
||||
//JIN01W02 DD DSN=VALID-ERROR.DAT,DISP=(NEW,PASS)
|
||||
```
|
||||
|
||||
### JINJ020 — スキル別評価集計
|
||||
|
||||
```jcl
|
||||
//JINJ020 JOB (ACCT),'スキル別評価集計',CLASS=A
|
||||
//*
|
||||
//*=====================================================================
|
||||
//* STEP010: M:N→N件(Type 19)
|
||||
//*=====================================================================
|
||||
//STEP010 EXEC PGM=JIN02SKL
|
||||
//JIN02R01 DD DSN=SKILL-EVAL.DAT,DISP=SHR
|
||||
//JIN02R02 DD DSN=SKILL-MST.DAT,DISP=SHR
|
||||
//JIN02W01 DD DSN=SKILL-AGG.DAT,DISP=(NEW,CATLG)
|
||||
//JIN02W02 DD DSN=VALID-ERROR.DAT,DISP=(NEW,PASS)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## プログラム一覧
|
||||
|
||||
| # | PGM-ID | PGMパターン | 機能概要 | 使用COPY | DBアクセス | CALL先 |
|
||||
|:-:|:------:|:----------:|---------|:--------:|:---------:|:------:|
|
||||
| 1 | JIN01KNS | 27 半角20桁/4桁チェック | 人事取込データの氏名カナ桁数・半角英大文字チェック | JIN01REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
|
||||
| 2 | JIN02SKL | 19 M:N→N件 | スキル評価明細×評価基準マスタの集計(M件→N件出力) | SKILL-EVAL-REC, SKILL-MST-REC, SKILL-AGG-REC, VALID-ERROR-REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
|
||||
|
||||
---
|
||||
|
||||
## COPY書式一覧
|
||||
|
||||
| # | COPY ID | 用途 | サイズ | 備考 |
|
||||
|:-:|:--------|:----:|:------:|------|
|
||||
| 1 | JIN01REC | EMP-IMPORT/EMP-VALID レコード | 200 | JIN01KNS入出力 |
|
||||
| 2 | VALID-ERROR-REC | VALID-ERROR エラーレコード | 80 | JIN01KNS/JIN02SKL共用 |
|
||||
| 3 | SKILL-EVAL-REC | SKILL-EVAL スキル評価明細 | 200 | JIN02SKL入力(M件) |
|
||||
| 4 | SKILL-MST-REC | SKILL-MST 評価基準マスタ | 80 | JIN02SKL入力(内部表LOAD) |
|
||||
| 5 | SKILL-AGG-REC | SKILL-AGG 評価集計結果 | 200 | JIN02SKL出力(N件) |
|
||||
| 6 | JINDATAC | SUB01DAT連絡領域 | — | CALL I/F |
|
||||
| 7 | JINMSGAC | SUB02MSG連絡領域 | — | CALL I/F |
|
||||
| 8 | JINENDAC | SUB03END連絡領域 | — | CALL I/F |
|
||||
@@ -0,0 +1,119 @@
|
||||
# JIN01KNS 詳細設計書
|
||||
|
||||
## プログラム概要
|
||||
|
||||
| 項目 | 内容 |
|
||||
|------|------|
|
||||
| プログラムID | JIN01KNS(人事→JINji, 01, カナKana確認Chekku→KNS) |
|
||||
| プログラムタイプ | 27(半角20桁/4桁チェック) |
|
||||
| 機能 | 人事取込データの氏名カナ(半角20桁以内・英大文字)および補助コード桁数のチェック |
|
||||
| CALL方式 | メインプログラム(JCLからCALL) |
|
||||
| DBアクセス | なし |
|
||||
| 使用サブプログラム | SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド) |
|
||||
| INITIAL指定 | PROGRAM-ID IS INITIAL(INITIAL 予約語使用) |
|
||||
| RETURN-CODE | 正常終了時 MOVE ZERO TO RETURN-CODE(RETURN-CODE 予約語使用) |
|
||||
|
||||
## ファイル一覧
|
||||
|
||||
| DD名 | ファイル名 | 編成 | RECM | サイズ | I/O | 用途 |
|
||||
|:----:|:---------:|:----:|:----:|:-----:|:---:|------|
|
||||
| JIN01R01 | EMP-IMPORT | SEQUENTIAL | FB | 200 | INPUT | 人事取込データ |
|
||||
| JIN01W01 | EMP-VALID | SEQUENTIAL | FB | 200 | OUTPUT | 正常通過データ |
|
||||
| JIN01W02 | VALID-ERROR | SEQUENTIAL | FB | 80 | OUTPUT | エラーレコード |
|
||||
|
||||
## レコード定義
|
||||
|
||||
### JIN01REC(JIN01R01 / JIN01W01 共用, 200B)
|
||||
|
||||
| 項目 | PIC | 内容 | 備考 |
|
||||
|:----|:---:|------|:----:|
|
||||
| KANA-SEI | X(20) | 姓(半角カナ) | 最大20桁チェック対象 |
|
||||
| KANA-MEI | X(20) | 名(半角カナ) | 最大20桁チェック対象 |
|
||||
| KANJI-NAME | N(40) | 漢字氏名(全角) | PIC N 使用(N(1)=2B、実長80B、合計200B) |
|
||||
| SUB-CODE | X(4) | 補助コード | 4桁チェック対象 |
|
||||
| BIRTH-DATE | X(8) | 生年月日 CCYYMMDD | — |
|
||||
| EMP-ID | X(8) | 社員番号 | — |
|
||||
| FILLER | X(060) | — | — |
|
||||
|
||||
### VALID-ERROR-REC(JIN01W02, 80B)
|
||||
|
||||
| 項目 | PIC | 内容 |
|
||||
|:----|:---:|------|
|
||||
| ERR-PROGRAMID | X(8) | エラー発生プログラムID |
|
||||
| ERR-EMP-ID | X(8) | エラー社員番号 |
|
||||
| ERR-CODE | X(4) | エラーコード(K001=カナ桁数超過, K002=英大文字以外, K003=補助コード不正) |
|
||||
| ERR-DETAIL | X(60) | エラー詳細メッセージ |
|
||||
|
||||
## 処理詳細
|
||||
|
||||
### 段落一覧
|
||||
|
||||
| 段落名 | 機能 |
|
||||
|:-------|:-----|
|
||||
| JIN01KNS-OPEN | ファイルOPEN |
|
||||
| JIN01KNS-READ | 1レコードREAD |
|
||||
| JIN01KNS-CHECK | カナチェック主処理 |
|
||||
| JIN01KNS-CHK-KANA | 半角カナ文字チェック(IS ALPHABETIC-UPPER) |
|
||||
| JIN01KNS-CHK-SIZE | 桁数チェック(20桁超過チェック) |
|
||||
| JIN01KNS-CHK-SUB | 補助コード桁数チェック(4桁) |
|
||||
| JIN01KNS-WRITE-OK | 正常データWRITE |
|
||||
| JIN01KNS-WRITE-ERR | エラーデータWRITE |
|
||||
| JIN01KNS-CLOSE | ファイルCLOSE + RETURN-CODE設定 |
|
||||
|
||||
### 処理ロジック
|
||||
|
||||
#### 初期処理(JIN01KNS-OPEN)
|
||||
1. JIN01R01 / JIN01W01 / JIN01W02 を OPEN
|
||||
2. WS-READ-CNT, WS-ERR-CNT を INITIALIZE(数値=0, PIC X=SPACE)
|
||||
|
||||
#### 主処理(JIN01KNS-READ → JIN01KNS-CHECK → JIN01KNS-READ)
|
||||
1. JIN01R01 から1レコード READ
|
||||
2. READ 成功 → JIN01KNS-CHECK へ
|
||||
3. READ 失敗(AT END)→ JIN01KNS-CLOSE へ
|
||||
|
||||
#### チェック処理(JIN01KNS-CHECK)
|
||||
1. ADD 1 TO WS-READ-CNT END-ADD(END-ADD 予約語)
|
||||
2. JIN01KNS-CHK-KANA 呼出
|
||||
3. JIN01KNS-CHK-SIZE 呼出
|
||||
4. JIN01KNS-CHK-SUB 呼出
|
||||
5. エラーフラグ OFF → JIN01KNS-WRITE-OK
|
||||
6. エラーフラグ ON → JIN01KNS-WRITE-ERR
|
||||
|
||||
#### カナ文字チェック(JIN01KNS-CHK-KANA)
|
||||
1. IF KANA-SEI IS NOT ALPHABETIC-UPPER → エラー(ALPHABETIC-UPPER 予約語)
|
||||
2. IF KANA-MEI IS NOT ALPHABETIC-UPPER → エラー
|
||||
3. エラー時は WRK-ERR-CODE に 'K002' を MOVE(88-level VALUESは使用なし)
|
||||
|
||||
#### 桁数チェック(JIN01KNS-CHK-SIZE)
|
||||
1. KANA-SEI の20桁超過をチェック(FUNCTION LENGTH)
|
||||
2. 超過時はエラーフラグ ON + エラーコード設定
|
||||
|
||||
#### 補助コードチェック(JIN01KNS-CHK-SUB)
|
||||
1. SUB-CODE が有効値(VALUES '0001' '0002' '0003' 等)かチェック
|
||||
2. 範囲外はエラーフラグ ON
|
||||
|
||||
#### 正常出力(JIN01KNS-WRITE-OK)
|
||||
1. JIN01W01 へレコード WRITE
|
||||
|
||||
#### エラー出力(JIN01KNS-WRITE-ERR)
|
||||
1. ADD 1 TO WS-ERR-CNT END-ADD
|
||||
2. VALID-ERROR-REC にエラー情報設定
|
||||
3. JIN01W02 へ WRITE
|
||||
|
||||
#### 終了処理(JIN01KNS-CLOSE)
|
||||
1. JIN01R01 / JIN01W01 / JIN01W02 を CLOSE
|
||||
2. WS-ERR-CNT = 0 → MOVE ZERO TO RETURN-CODE
|
||||
3. WS-ERR-CNT > 0 → MOVE 4 TO RETURN-CODE
|
||||
4. GOBACK
|
||||
|
||||
## カバレッジ対象キーワード
|
||||
|
||||
| 予約語/記号 | 区分 | 使用箇所 |
|
||||
|:-----------|:----:|:---------|
|
||||
| PROGRAM-ID IS INITIAL | 予約語(95) | IDENTIFICATION DIVISION |
|
||||
| RETURN-CODE | 予約語(145) | JIN01KNS-CLOSE |
|
||||
| ALPHABETIC-UPPER | 予約語(7) | JIN01KNS-CHK-KANA |
|
||||
| END-ADD | 予約語(55) | JIN01KNS-CHECK |
|
||||
| VALUES | 予約語(183) | ERR-CODE 88-level(VALUE→VALUES表記) |
|
||||
| PIC N | PICTURE記号 | KANJI-NAME定義 |
|
||||
| ZZZZ9 | PICTURE記号 | 自プログラムでは使用なし(JIN02SKLのAGG-COUNT-EDITでカバー) |
|
||||
@@ -0,0 +1,173 @@
|
||||
# JIN02SKL 詳細設計書
|
||||
|
||||
## プログラム概要
|
||||
|
||||
| 項目 | 内容 |
|
||||
|------|------|
|
||||
| プログラムID | JIN02SKL(人事→JINji, 02, スキルSukiru別評価集計→SKL) |
|
||||
| プログラムタイプ | 19(M:N→N件マッチング+集計) |
|
||||
| 機能 | スキル評価明細(M件)× 評価基準マスタ(N件)→ スキル別評価集計(N件出力) |
|
||||
| CALL方式 | メインプログラム(JCLからCALL) |
|
||||
| DBアクセス | なし |
|
||||
| 使用サブプログラム | SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド) |
|
||||
|
||||
## ファイル一覧
|
||||
|
||||
| DD名 | ファイル名 | 編成 | RECM | サイズ | I/O | 用途 |
|
||||
|:----:|:---------:|:----:|:----:|:-----:|:---:|------|
|
||||
| JIN02R01 | SKILL-EVAL | SEQUENTIAL | FB | 200 | INPUT | スキル評価明細データ(M件) |
|
||||
| JIN02R02 | SKILL-MST | SEQUENTIAL | FB | 80 | INPUT | スキル評価基準マスタ(N件→内部表LOAD) |
|
||||
| JIN02W01 | SKILL-AGG | SEQUENTIAL | FB | 200 | OUTPUT | スキル別評価集計結果(N件出力) |
|
||||
| JIN02W02 | VALID-ERROR | SEQUENTIAL | FB | 80 | OUTPUT | エラーレコード |
|
||||
|
||||
## レコード定義
|
||||
|
||||
### SKILL-EVAL-REC(JIN02R01, 200B)
|
||||
|
||||
| 項目 | PIC | 内容 | 備考 |
|
||||
|:----|:---:|------|:----:|
|
||||
| SKILL-CODE | X(4) | スキルコード | |
|
||||
| EMP-ID | X(8) | 社員番号 | |
|
||||
| EMP-NAME | X(40) | 社員氏名 | |
|
||||
| EVAL-DATE | X(8) | 評価日 YYYYMMDD | |
|
||||
| SCORE | 9(3) | 評価点数 | 1-999 |
|
||||
| PADDING | X(137) | FILLER | |
|
||||
|
||||
### SKILL-MST-REC(JIN02R02, 80B)
|
||||
|
||||
| 項目 | PIC | USAGE | 内容 | 備考 |
|
||||
|:----|:---:|:-----:|------|:----:|
|
||||
| MST-SKILL-CODE | X(4) | — | スキルコード | SEARCH ALL キー |
|
||||
| MST-LEVEL | 9(2) | BINARY | レベル | BINARY 予約語使用 |
|
||||
| MST-SCORE-FROM | 9(3) | — | 下限点数 | |
|
||||
| MST-SCORE-TO | 9(3) | — | 上限点数 | |
|
||||
| MST-LEVEL-NAME | X(20) | — | レベル名称 | |
|
||||
| FILLER | X(048) | — | — | |
|
||||
|
||||
### SKILL-AGG-REC(JIN02W01, 200B)
|
||||
|
||||
| 項目 | PIC | USAGE | 内容 | 備考 |
|
||||
|:----|:---:|:-----:|------|:----:|
|
||||
| AGG-SKILL-CODE | X(4) | — | スキルコード | |
|
||||
| AGG-LEVEL | 9(2) | PACKED-DECIMAL | レベル | PACKED-DECIMAL 予約語使用 |
|
||||
| AGG-LEVEL-NAME | X(20) | — | レベル名称 | |
|
||||
| AGG-EMP-COUNT | 9(5) | BINARY | 人数 | BINARY 予約語使用 |
|
||||
| AGG-COUNT-EDIT | ZZZZ9 | — | 人数編集表示 | ZZZZ9 PICTURE記号 |
|
||||
| AGG-AVG-SCORE | 9(3)V9(2) | PACKED-DECIMAL | 平均点数 | |
|
||||
| FILLER | X(162) | — | — | |
|
||||
|
||||
### VALID-ERROR-REC(JIN02W02, 80B)
|
||||
JIN01KNS と共用。VALID-ERROR-REC.cpy(独立したCOPY書式)を参照。
|
||||
|
||||
## 内部表
|
||||
|
||||
### WS-SKILL-TABLE(OCCURS DEPENDING ON)
|
||||
|
||||
| 項目 | PIC | USAGE | 内容 |
|
||||
|:----|:---:|:-----:|------|
|
||||
| TBL-SKILL-CODE | X(4) | — | スキルコード |
|
||||
| TBL-LEVEL | 9(2) | BINARY | レベル |
|
||||
| TBL-LEVEL-NAME | X(20) | — | レベル名称 |
|
||||
| TBL-EMP-COUNT | 9(5) | BINARY | 件数 |
|
||||
| TBL-SCORE-SUM | 9(8) | BINARY | 合計点 |
|
||||
| TBL-MAX-ENTRY | 99 | BINARY | 最大エントリ数(100) |
|
||||
|
||||
SEARCH ALL のキー項目:TBL-SKILL-CODE
|
||||
|
||||
## 処理詳細
|
||||
|
||||
### 段落一覧
|
||||
|
||||
| 段落名 | 機能 |
|
||||
|:-------|:-----|
|
||||
| JIN02SKL-OPEN | ファイルOPEN + 内部表初期化 |
|
||||
| JIN02SKL-LOAD-MST | 評価基準マスタ(R02)全件LOAD → 内部表構築 |
|
||||
| JIN02SKL-READ-EVAL | 評価明細(R01)1件READ |
|
||||
| JIN02SKL-AGGREGATE | 集計主処理(SEARCH ALL + 件数加算 + 合計加算) |
|
||||
| JIN02SKL-SEARCH-LVL | SEARCH ALL で該当レベルを特定 |
|
||||
| JIN02SKL-UPDATE-TBL | 内部表の件数・合計点をUPDATE |
|
||||
| JIN02SKL-OUTPUT | 内部表を降順走査→平均点算出→WRITE |
|
||||
| JIN02SKL-GET-AVG | DIVIDEで平均点算出(END-DIVIDE) |
|
||||
| JIN02SKL-DESCEND | PERFORM VARYING 降順走査(DESCENDING) |
|
||||
| JIN02SKL-WRITE-AGG | 1エントリWRITE |
|
||||
| JIN02SKL-CLOSE | ファイルCLOSE + GOBACK |
|
||||
|
||||
### 処理ロジック
|
||||
|
||||
#### 初期処理(JIN02SKL-OPEN)
|
||||
1. JIN02R01 / JIN02R02 / JIN02W01 / JIN02W02 を OPEN
|
||||
2. WS-TBL-ENTRY を INITIALIZE(内部表初期化)
|
||||
|
||||
#### マスタLOAD(JIN02SKL-LOAD-MST)
|
||||
1. JIN02R02 から SKILL-MST を全件 LOAD
|
||||
2. ADD 1 TO WS-MAX-ENTRY END-ADD
|
||||
3. 内部表 WS-SKILL-TABLE に設定(MST-SKILL-CODE, MST-LEVEL, MST-LEVEL-NAME, TBL-EMP-COUNT=0, TBL-SCORE-SUM=0)
|
||||
4. AT END → JIN02SKL-READ-EVAL へ
|
||||
5. JIN02R02 を CLOSE(不要になったので)
|
||||
|
||||
#### 主処理ループ(JIN02SKL-READ-EVAL → JIN02SKL-AGGREGATE → ループ)
|
||||
1. JIN02R01 から SKILL-EVAL を1件 READ
|
||||
2. AT END → JIN02SKL-OUTPUT へ
|
||||
3. JIN02SKL-AGGREGATE を PERFORM
|
||||
|
||||
#### 集計処理(JIN02SKL-AGGREGATE)
|
||||
1. JIN02SKL-SEARCH-LVL を呼出(SEARCH ALL)
|
||||
2. WHEN 該当 → JIN02SKL-UPDATE-TBL を PERFORM
|
||||
3. WHEN NOT 該当 → JIN02SKL-WRITE-ERR を PERFORM
|
||||
|
||||
#### SEARCH ALL(JIN02SKL-SEARCH-LVL)
|
||||
1. SEARCH ALL WS-SKILL-TABLE
|
||||
2. AT END → 直接 PERFORM 2100WRTERRSOR(該当するレベルがない)
|
||||
3. WHEN TBL-SKILL-CODE(WS-IDX) = SKILL-CODE → 直接 PERFORM 2200UPDTTLSOR
|
||||
|
||||
#### 内部表UPDATE(JIN02SKL-UPDATE-TBL)
|
||||
1. ADD 1 TO TBL-EMP-COUNT(WS-IDX) END-ADD
|
||||
2. ADD SCORE TO TBL-SCORE-SUM(WS-IDX) END-ADD
|
||||
|
||||
#### 集計結果出力(JIN02SKL-OUTPUT)
|
||||
1. 内部表を件数降順(DESCENDING)で走査
|
||||
2. JIN02SKL-DESCEND を PERFORM THRU JIN02SKL-WRITE-AGG
|
||||
3. 各エントリについて:
|
||||
d. WS-AVG を ZERO で初期化
|
||||
e. JIN02SKL-GET-AVG を PERFORM(DIVIDE TBL-SCORE-SUM BY TBL-EMP-COUNT GIVING WS-AVG END-DIVIDE)
|
||||
f. SKILL-AGG-REC に編集設定(ZZZZ9 編集文字)
|
||||
g. JIN02W01 へ WRITE
|
||||
|
||||
#### 降順走査(JIN02SKL-DESCEND)
|
||||
```
|
||||
PERFORM VARYING WS-IDX FROM WS-MAX-ENTRY BY -1
|
||||
UNTIL WS-IDX = 0
|
||||
PERFORM JIN02SKL-WRITE-AGG
|
||||
END-PERFORM
|
||||
```
|
||||
SUBTRACT 1 FROM WS-IDX END-SUBTRACT(END-SUBTRACT 予約語使用)
|
||||
|
||||
#### 平均点算出(JIN02SKL-GET-AVG)
|
||||
```
|
||||
DIVIDE TBL-SCORE-SUM(WS-IDX) BY TBL-EMP-COUNT(WS-IDX)
|
||||
GIVING WS-AVG-TEMP REMAINDER WS-REM
|
||||
END-DIVIDE
|
||||
```
|
||||
(DIVIDE 予約語カバレッジ + END-DIVIDE)
|
||||
|
||||
#### エラー出力(JIN02SKL-WRITE-ERR)
|
||||
1. VALID-ERROR-REC にエラー情報設定
|
||||
2. JIN02W02 へ WRITE
|
||||
|
||||
#### 終了処理(JIN02SKL-CLOSE)
|
||||
1. JIN02R01 / JIN02W01 / JIN02W02 を CLOSE
|
||||
2. GOBACK
|
||||
|
||||
## カバレッジ対象キーワード
|
||||
|
||||
| 予約語/記号 | 区分 | 使用箇所 |
|
||||
|:-----------|:----:|:---------|
|
||||
| USAGE BINARY | 予約語(16) | MST-LEVEL, TBL-EMP-COUNT 等 |
|
||||
| USAGE PACKED-DECIMAL | 予約語(127) | AGG-LEVEL, AGG-AVG-SCORE |
|
||||
| BY(降順走査) | 予約語(18) | PERFORM VARYING BY -1(JIN02SKL-DESCEND相当) |
|
||||
| END-DIVIDE | 予約語(58) | JIN02SKL-GET-AVG |
|
||||
| END-SUBTRACT | 予約語(66) | JIN02SKL-DESCEND |
|
||||
| GREATER | 予約語(87) | IF WS-COUNT IS GREATER THAN ZERO |
|
||||
| IF GREATER THAN | 予約語(87) | 件数判定 |
|
||||
| PIC ZZZZ9 | PICTURE記号 | AGG-COUNT-EDIT |
|
||||
| PIC N | PICTURE記号 | (JIN01RECから継承、未使用でもCOPY参照でカバー) |
|
||||
Reference in New Issue
Block a user