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