RPG構造解析 (結果サンプル) |
O*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 **------------------------------------------------------------- ** ID : TESTRPG ** このプログラムはテスト用です。 ** 処理ロジックそのものに意味はありません。 **------------------------------------------------------------- H Y/ 1 FFILE1 IF E DISK FFILE2 O E DISK FFILE3 UF E DISK FFILE4 CF E WORKSTN **------------------------------------------------------------- E ARY1 8 9 A E ARY2 8 9 D I* I*<<日付変換用ワーク>> I DS I I P 1 50B@DKIN I I 6 6 B@DKIK I I 7 7 B@DKRT I* I*<<ワークフィールド>> IWKFLD DS I I 0 P 1 50W8DATE C*==============================================================* C*: PARM LIST * C* C *ENTRY PLIST C PARM P@YMD1 80 日付 C PARM P@DAY 1 曜日/RC C*:このプログラムはテスト用です。 C*:処理ロジックそのものに意味はありません。 C* C PLSTDC PLIST C PARM P@DCDY 80 入力日付 C PARM P@DCRT 1 リターンコード C* C KEY01 KLIST C KFLD FLD01 80 日付 C KFLD FLD02 1 曜日/RC C* C Z-ADD031 X1 初期値設定X1 C Z-ADD032 X2 初期値設定X2 C Z-ADD033 X3 初期値設定X3 C Z-ADD034 X4 初期値設定X4 C Z-ADD035 X5 初期値設定X5 C Z-ADD036 X6 初期値設定X6 C Z-ADD037 X7 初期値設定X7 C Z-ADD038 X8 初期値設定X8 C EXSR SUB1 SUB1呼出 C EXSR SUB2 SUB2呼出 C* C EXSR SUB9 SUB9呼出 C*-------------------------------------------------------------- C SUB1 BEGSR SUB1開始 C* C EXSR SUB3 SUB3呼出 C* 0037.00 +----C 41 *IN99 DOWEQ*OFF 繰返し*IN99 = *OFF | C @RC OREQ *ON コメント OREQ *ON |+---C 42 A IFEQ 000 コメント IFEQ 000 || C BB ANDEQ001 コメント ANDEQ001 || C C OREQ 002 コメント OREQ 002 || C DD OREQ 003 コメント OREQ 003 || C EEE ANDEQ004 コメント ANDEQ004 ||+--C IF5 IFEQ 005 |||+-C IF6 IFEQ 006 ||||+C IF7 IFEQ 007 |||||C IF8 IFEQ 008 |||||C IF9 IFEQ 009 |||||C IF10 IFEQ 010 |||||C *IN99 DOWEQ*OFF |||||C Z-ADD010 IF10 |||||C Z-ADD011 IF11 |||||C ENDDO |||||C ENDIF |||||C ENDIF |||||C ENDIF ||||+C ENDIF |||+-C ENDIF ||+--C ELSE ||| C 43 Z-ADDW1 FF 値=AA ||+--C ENDIF || C 43 Z-ADDW1 FF 値=AA <====C 44 LEAVE 強制脱出 LOOP |+---C ELSE ELSE 結合子 || C 46 Z-ADD000 FF FFをリセット || C 46 Z-ADD001 FFF FFF を初期値1に || C 47 ITER ITER 処理バイパス <====C 48 GOTO TAG123 GOTO TAG3 .......... |+---C ENDIF ENDIF .......... +----C 50 ENDDO ENDDO .......... C 51 MOVELAAA BBB MOVEL 編集処理 C 51 MOVELAAAA BBBB MOVEL 編集処理BBBB C 51 MOVELAAAAA BBBBB MOVEL 編集処理BBBBB C 52 XFOOTMAT SUM MATの合計値 TAGC TAG123 TAG TAG123 C* C ENDSR END OF SUB C*-------------------------------------------------------------- 0061.00 C SUB2 BEGSR SUB2の始まり C* +----C SELEC ケース +----C @1CODE WHEQ 'H' HHH仕様書の場合 | C @1CODE ANDEQ'G' Gの場合 | C EXSR SBHH +----C @1CODE WHEQ 'F' FFFF仕様書 | C @1CODE OREQ '6' | C EXSR SBFF +----C @1CODE WHEQ 'E' 拡張仕様書の場合 | C EXSR SBEE +----C @1CODE WHEQ 'I' II仕様書の場合 | C EXSR SBII II仕様書の処理 +----C @1CODE WHEQ 'C' CC仕様書の場合 | C EXSR SBCC CC仕様書の処理 +----C OTHER 該当なしの場合 | C EXSR SBOTH そのたの処理 +----C ENDSL C KEY1 SETLLFILE1 下限位置づけ C KEY1 SETGTFILE1 位置づけ C MOVEL'0' B@DKIK 入力区分 C EXSR SUB4 SUB4呼出 C Z-ADDP@YMD1 B@YBIN 西暦年月日 C Z-ADDP@YMD2 YMD2 西暦年月日 +----C B@DKRT IFEQ '0' IFEQ | C EXSR SUB5 EXSR SUB5 +----C ENDIF +----C B@DKRT IFEQ '0' | C MOVELB@YBRT P@DAY 曜日 +----C ELSE | C MOVEL'0' P@DAY 曜日 +----C ENDIF C* C ENDSR C*-------------------------------------------------------------- C SUB3 BEGSR C* C*<<8桁日付>> TAGC TAG01 TAG C Z-ADDDATE8 W8DATE 8桁日付 C* C A CABEQ111 TAG111 GO TO TAG111 C B CABEQ222 TAG222 GO TO TAG222 C* +----C AA CASEQ111 SBAA EXSR SBAA +----C BB CASEQ222 SBBB EXSR SBBB | C B2 ANDEQ022 +----C CC CASEQ333 SBCC EXSR SBCC | C* | C MOVELCMD80 P@CMD CMD | C Z-ADD080 P@LEN LEN OF CMD | C CALL 'QCMDEXC' | C PARM P@CMD 80 | C PARM P@LEN 155 +----C ENDCS <====C GOTO TAG01 TAG01へジャンプ C* C ENDSR C*-------------------------------------------------------------- C SUB4 BEGSR C* C*<<日付妥当性チェック>> C Z-ADDB@DKIN P@DCDY 入力日付 ....... C MOVELB@DKIK P@DCTP 区分 C 61 CALL 'PT001' C PARM PARM1 パラメータ1 C PARM PARM2 パラメータ2 C 62 CALL 'DATECHK 'PLSTDC 日付チェック C*<<チェックOK>> +----C P@DCRT IFEQ '0' | C MOVEL'0' B@DKRT OK | C*<<チェックNG>> +----C ELSE | C MOVEL'1' B@DKRT NG +----C ENDIF C* C ENDSR C*-------------------------------------------------------------- C SUB5 BEGSR C* C*<<絶対日数変換>> 絶対日数変換 C Z-ADDB@YBIN P@DSYM 年月日セット C CALL 'DATESUB 'PLSTDS 変換プログラム C MOVELP@DSRT B@YBWK 絶対日数 C*<<基準日は月曜>> C B@YBWK DIV 7 B@YBWK C MVR B@YBWK 7で割った余り C ADD 1 B@YBWK 月曜が基準 +----C B@YBWK IFGT 7 日曜の時 | C Z-ADD1 B@YBWK 例外処理 +----C ENDIF C MOVE B@YBWK B@YBRT 結果のセット C* C ENDSR C*-------------------------------------------------------------- C SUB6 BEGSR C SETON LR C RETRN C ENDSR C*-------------------------------------------------------------- C SUB9 BEGSR C DEV1 ACQ WSFILE C AA ADD BB RR C ADD AA RR C* C* C* C 11 12 AA ADD BB RR C BITONS1 T1 ビット処理1 C BITOFS2 T2 ビット処理2 C* C 31 GG CAT HH JJ 連結する C 61 KEY0 CHAINREC9 88 C N51 CLEARLDA1 エリアのクリア C 43 CLOSEFILE2 C 58 A COMP B 88 C F1 COMP F2 313233 C AAAA COMP BBBB 31 C AAAAA COMP BBBBB 32 C AAAAAA COMP BBBBBB 33 C* C *LIKE DEFN @DEFN NEW C *NAMVAR DEFN UDA1 PGMUDA C *NAMVAR DEFN *LDA PGMLDA C 37 DELETWEC4 C 38 AA DIV BB CC C 39 AAA DIV BBB CCC H 四捨五入の結果 C 16DD DIV EE FF C 40 DSP1 DSPLY 表示 C 41 DSP2 DSPLY RET 表示と応答 C 42 DUMP プログラムダンプ C* C 11 EXCPTDTL01 サイクル外 C 08 EXFMTDTL02 画面出力 C 38 EXSR SBINZ 初期設定処理 C 39 EXSR SBMAIN メイン処理 C 40 EXSR SUB6 終了処理 C* C 41 FEOD FILE1 ???? C 42 FORCEFILE2 強制 C 43 FREE PGM2 フリー C* C 41 IN LDA1 データエリア1 C LLL LOKUPARY2 21 対象は2番 C* C* C 51 52 53 MOVE MM RES 注釈202 C* C 54 55 MOVELMMM RES 注釈204 C* C 13 14 15CC MULT DD EE DD倍する C* C 17 MVR RRR 剰余取得 C 18 DEV1 NEXT FILE9 C* C N OCUR @OCUR C 41 OPEN FILE1 C 42 OPEN FILE2 0213.00 C 43 OPEN FILE3 0214.00 C 44 OPEN FILE4 0215.00 C 45 OUT LDA1 0216.00 C 46 POST POST1 0217.00 C* 0218.00 C 31 READ REC1 99レコード1 C 32 READCREC2 99レコード2 C 33 KEY1 READEREC3 99レコード3 C 34 READPREC4 99レコード4 C 35 KEY1 REDPEREC5 99レコード5 C 36 DEV1 REL REC6 開放 C 88 RESETALL 初期値にリセットす C 77 ROLBK C* C 09 PPP SCAN QQQQ RRR 文字列探索 C KEY1 SETGTFILE1 0229.00 C KEY1 SETLLFILE1 0230.00 C SETON 11 22 0231.00 C SETOF 334455 0232.00 C* 0233.00 C 10 SHTDN 91 0234.00 C 11 SORTAARY 整列処理1 C 12 SORTAARY1 整列処理2 C 13 SORTAARY2 整列処理3 C 21 SQRT SQ AND C 22 LEN SUBSTABCD BCD C 23 SUB CC DD C 24 BB SUB CC DD TAGC TAG01 TAG C TESTB'027' FLD1 66 C TESTB'027' FLD1 77 C TESTB'027' FLD1 88TESTB'027' C TESTB'027' FLD1 667788TESTB'027' C TESTN FLD2 66 TESTN C TESTN FLD2 77 TESTN C TESTN FLD2 88TESTN C TESTN FLD2 667788TESTN C TESTZ FLD3 66 TESTZ C TESTZ FLD3 77 TESTZ C TESTZ FLD3 88TESTZ C TESTZ FLD3 667788TESTZ C* C TIME HMSYMD TIME HMSYMD C* C 09 @A:@B XLATECCC DDD XLATECCC C 31 UNLCKREC3 UNLCKREC3 C 32 UPDATREC4 UPDATREC4 C 33 WRITEWEC5 WRITEWEC5 C Z-ADD111 AAA Z-ADD111 C Z-ADD222 BBB Z-ADD222 C Z-ADD333 CCC Z-ADD333 C Z-ADD444 DDD Z-ADD444 C 32 Z-ADD123 PP Z-ADD123 C Z-SUB999 ZZZZ Z-SUB999 C 33 Z-SUB88 YYY Z-SUB88 C ENDSR 演算仕様書の終り ** DATA1 DATA2 DATA3 DATA4
(C) COPYRIGHT ISHIOKA KATSUHIDE 2024