RPG RPGプログラミングメモ
前ページ 次ページ 目 次




下記プログラムは、プログラミングに際してサンプルになるように命令を集めたものです。
ロジック的には意味をもちません。ソースファイルに登録して、参照用として利用して下さい。

’10.05.15改定



     **===============================================================
     ** ID   : SAMPLE
     ** NAME : BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
     ** FUNC : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
     **        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
     **        CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
     ** VER  : 01.01.00  AS OF  '10.05.15
     ** NOTE :このプログラムは処理としては意味を持ちません。
     **       プログラミングのときの参照用として利用して下さい。
     **
     **. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
     H            Y-                                    1
     **画面ファイル
     FDSP23   CF  E                    WORKSTN
     F                                              KINFDS WSINF
     F                                        RRN   KSFILE SFL01
     **外部ファイル、ユーザーオープン
     FF500    UF  E           K        DISK                           UC
     **外部ファイル、COMITあり
     FF700    UF  E           K        DISK         KCOMIT
     **プログラム記述ファイル
     FFILE1   IF  F      80            DISK
     **レコード様式のリネーム
     FM520    IF  E           K        DISK
     **レコード様式のリネーム
     FM520A   IF  E           K        DISK
     F            M520R                             KRENAMEM520RA
     **印刷ファイル(プログラム記述ファイル)
     FQPRINT  O   F     132     OV     PRINTER
     E*---------------------------------------------------------------
     **交互配列(コンパイル時ローディング)
     E                    COD     1   4  2  ANAM   022
     **配列(コンパイル時ローディング)
     E                    ARY     1   5  5 0
     **配列
     E                    CHR        26  1
     **配列、開始時にファイルからデータローディング
     E    T800            TBL         9  7 0
     I*---------------------------------------------------------------
     **. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
     I*フィールドのリネーム
     I          E DSF580
     I              EXT01                           NEW01
     I              EXT02                           NEW02
     I* プログラム状況 PGM-ID JOB-ID USER JOB-NO
     I           SDS
     I                                     *PROGRAM W@PID
     I                                      244 253 W@JID
     I                                      254 263 W@USR
     I                                      264 269 W@JNO
     I*カーソル位置情報
     IWSINF       DS
     I                                    B 370 3710WSPOS
     I                                    B 378 3790WSNO
     I* システム日付・時刻の構造--------------------------------
     I            DS
     I                                        1  140HMSYMD
     I                                        1   64TIME
     I                                        7  140DATE8
     I                                        7  100YEAR4
     I                                        9  140DATE
     I                                        9  100YEAR
     I                                       11  120MONTH
     I                                       13  140DAY
     I* STR
     IREC1        DS
     I                                        1  80 FLD80
     I* LOCAL-DATAAREA
     ILDA2        DS
     I                                        1   2 RC2
     I                                        5  100YMD
     I* USER-DATAAREA
     IUDA2        DS
     I                                        1   1 OLD1
     I                                        1   1 MARK
     I                                        3   50MASI
     I                                        6  10 DUMMY2
     I*呼出しスタック                     ↓OCCURS
     ISTACK       DS                         10
     I                                        1  10 S@ID
     I                                       11  20 S@USR
     I                                       21  40 NAMAE
     I* F900の外部記述を使った構造体
     ISTR900    E DSF900
     I* F900の外部記述を使った構造体      OCCURS
     IREC       E DSM500                      4
     I* 初期値
     ISTR1        DS
     I I            'ABCD'                    1   4 ITEM1
     I I            123456                    5  100ITEM2
     I*名前つき定数
     I              'ABCDEFGHIJKLMNOPQRST-C         ABC
     I              'UVWXYZ'
     I              'ZABCDEFGHIJKLMNOPQRS-C         ZAB
     I              'TUVWXY'
     I              '1111111111222222'    C         KANA01
     C*---------------------------------------------------------------
     ** PLIST
     C           *ENTRY    PLIST
     C           MISE      PARM           PARM1   2
     **
     C           PLIST1    PLIST
     C                     PARM           PARM2
     C                     PARM           PARM3   6
     ** KLIST
     C           KLIST1    KLIST
     C                     KFLD           YY
     C           KLIST2    KLIST
     C                     KFLD           FLD01   4
     C                     KFLD           FLD02   6
     **参照型の変数定義
     C           *LIKE     DEFN ITEM2     PARM2
     C           *LIKE     DEFN OLD1      NEW1
     **LDA,UDA
     C           *NAMVAR   DEFN *LDA      LDA2             LOCAL-DATA-ARA
     C           *NAMVAR   DEFN ARA1      UDA2             USER-DATA-ARA
     **LDA,UDAの入力
     C                     IN   LDA2
     C                     IN   UDA2
     **LDA,UDAの出力
     C                     OUT  LDA2
     C                     OUT  UDA2
     ** CLEAR/RESET
     C                     CLEARSTR1                       0 / BLANK
     C                     RESETSTR1                       初期値
     **日付取得 YYMMDD
     C                     Z-ADDUDATE     YMD6    60
     **日付取得 YYYYMMDD
     C                     Z-ADD*DATE     YMD8    80
     **表示
     C                     MOVELABC       C52    52        表示USER
     C           C52       DSPLY                           表示USER
     C           '1ST-STEP'DSPLY                           表示USER
     C           '2ND-STEP'DSPLY'*EXT'                     表示USER
     **表示、操作員へ
     C           'JOB-END 'DSPLY'QSYSOPR'                  表示OPR
     **表示と応答
     C           'OK?'     DSPLY          ANS     1        表示・返答
     ** 割付
     C                     MOVEL*ALLX'F1' FLAG    1
     C                     MOVEL*ALL'-'   BAR    80
     C                     Z-ADD011       A       70        変数A
     C                     Z-ADD003       B       70        変数B
     C                     Z-ADD000       X       70        添字
     C                     Z-ADD000       CNT     70        読取数
     C                     Z-ADD000       RRN     70        RRN
     C                     Z-ADDB         X                  X=B
     C                     Z-SUBB         X                  X=-B
     **四則演算
     C           A         ADD  B         X                  X=A+B
     C           A         SUB  B         X                  X=A-B
     C           A         MULT B         X                  X=A*B
     C           A         DIV  B         X                  X=A/B
     C*四捨五入
     C           A         DIV  B         X         H        X=A/B
     **四則演算(2)
     C                     ADD  B         X                  X=X+B
     C                     SUB  B         X                  X=X-B
     C                     MULT B         X                  X=X*B
     C*剰余を取得(カーソル位置情報の例)
     C           WSPOS     DIV  256       LIN     20         行
     C                     MVR            COL     20         カラム
     C*
     C*平方根
     C                     SQRT B         X                  X=SQRT(B)
     C*配列の合計
     C                     XFOOTARY       X                  X=SUM (B)
     C*整列
     C                     SORTAARY                         整列
     C*配列要素への割付
     C                     MOVEA'ABCDEFGH'CHR,01
     C                     MOVEA'23456'   CHR,02
     C                     Z-ADD001       X
     C                     MOVEL'CC'      C2      2
     C           C2        LOKUPCOD,X                    12
     C           *IN12     IFEQ *ON
     C                     MOVELNAM,X     C22    22
     C                     ENDIF
     C*文字列の割付
     C                     MOVEL'ABCD'    C08    08        左詰め(1)
     C                     MOVE 'ABCD'    C08    08        右詰め(2)
     C                     MOVEL'12345678'C08               (3)
     C                     MOVEL'ABCD'    C08               (4)
     C                     MOVEL'ABCD'    C08       P       (5)
     C* CAT (文字列の連結)
     C                     MOVEL'ABC'     C03     3
     C           C03       CAT  '12345'   C08     8
     C                     MOVEL'ABC'     C10    10 P
     C* 文字列の連結ブランクを挿入しないで
     C                     CAT  'D':0     C10              'ABCD      '
     C                     MOVEL'ABC'     C10    10 P
     C* 文字列の連結ブランクを挿入して
     C           C10       CAT  'D':1     C10              'ABC D     '
     C* SCAN (文字列の探索)
     C                     MOVEL'ABC12345'C08     8
     C           '123'     SCAN C08       S1      70
     C* CHECK
     C                     MOVEL'  CDEFGH'C08     8
     C           'X'       CHECKC08       N       70   51
     C           ' '       CHECKC08       N       70   51
     C           ' '       CHECKC08:2     N       70     52
     C*文字列長さ取得
     C                     MOVEL'ABCDE   'C08     8
     C           ' '       CHEKRC08       L       70
     C*文字列切だし
     C                     Z-ADD5         L       70
     C           L         SUBSTABC:3     C05     5
     C*トランスレート
     C*  文字列ABCとZABを使用して変換する。結果は'HAL'
     C           ABC:ZAB   XLATE'IBM'     C03     3
     C* OPEN /CLOSE
     C                     OPEN F500
     C                     CLOSEF500
     C* SETLL
     C                     MOVEL020101    KEY1    60
     C           KEY1      SETLLF500R
     C* SETGT
     C           *HIVAL    SETGTF500R
     C* READ 次の読み取り
     C                     READ F500R                    99
     C* READ  FILE1 INTO  REC1
     C                     READ FILE1     REC1           98
     C* READP 一つ前のレコードの読取
     C                     READPF500R                    99
     C                     READPFILE1     REC1           98
     C* READE
     C           KANA01    READEM520RA                   99
     C* REDPR
     C           KANA01    READEM520RA                   99
     C* UPDAT 読取りしたレコードの更新
     C                     READ F500R                    99
     C           *IN99     IFEQ *OFF
     C                     UPDATF500R
     C                     ENDIF
     C* UPDAT 読取りしたレコードの削除
     C                     READ F500R                    99
     C           *IN99     IFEQ *OFF
     C                     DELETF500R
     C                     ENDIF
     C* WRITE              ・・・
     C                     WRITEFMT99
     C* WRITE REC2 TO FILE2
     C                     WRITEFILE2     REC2
     C* EXCPT
     C                     EXCPTDTL01
     C* EXFMT              ・・・
     C                     EXFMTFMT01
     C* CHAIN              ・・・
     C           KLIST1    CHAINF700R                09
     C                     UPDATF700R
     C           '123'     CHAINM520R                09
     C* ロックなしのCHAIN
     C           KLIST1    CHAINF700R               N09
     C*実行制御
     C* IF                 ・・・
+----C           A         IFEQ *ZERO
|    C                     Z-ADD0         X
+----C                     ELSE
|    C                     Z-ADD12        X
+----C                     ENDIF
     C* SELEC
+----C                     SELEC
+----C           FLAG      WHEQ 'A'
|    C                     Z-ADD1         X
+----C           FLAG      WHEQ 'B'
|    C                     Z-ADD2         X
+----C                     OTHER
|    C                     Z-ADD0         X
+----C                     ENDSL
     C* DO                 ・・・
     C                     MOVEL'CC'      C2      2
+----C           001       DO   004       X
|    C           C2        IFEQ COD,X
|    C                     MOVELNAM,X     C22    22
|    C                     LEAVE
|    C                     ENDIF
+----C                     ENDDO
     C* 固定回数繰返し
     C                     Z-ADD000       N       70
+----C                     DO   10
|    C                     ADD  2         N
+----C                     ENDDO
     C* 1回だけ繰返し
+----C                     DO
|    C                     MOVEL*BLANK    AA
+----C                     ENDDO
     C* DO-UNTIL
     C                     Z-ADD0         N
+----C           *IN99     DOUEQ*ON
|    C                     READ FILE1     REC1           99
|    C           *IN99     IFEQ *OFF
|    C                     ADD  1         N
|    C                     ENDIF
+----C                     ENDDO
     C* DO-WHILE
     C                     READ FILE1     REC1           99
+----C           *IN99     DOWEQ*OFF
|    C           MARK      ANDEQ'*'
|    C                     READ FILE1     REC1           99
+----C                     ENDDO
     C* GOTO
     C                     GOTO NEXT
     C* LEAVE & ITER
     C                     Z-ADD0         N
+----C           *IN99     DOUEQ*ON
|    C                     READ FILE1     REC1           99
|    C           *IN99     IFEQ *OFF
|    C                     ADD  1         N
|    C                     ITER
|    C                     ELSE
|    C                     ADD  999       N
|    C                     LEAVE
|    C                     ENDIF
+----C                     ENDDO
     C* TAG                処理
     C           NEXT      TAG
     C* CALLプログラムの呼出し
     C                     CALL 'PGM01'
     C                     PARM ITEM1     PARM1
     C                     PARM ITEM2     PARM2
     C* CALLプログラムの呼出し2
     C                     CALL 'PGM01'   PLST1
     C*
     C                     MOVEL'PGM02'   PGID   10 P
     C                     CALL PGID
     C* RPGからCLコマンドの実行
     C                     CALL 'QCMDEXC'
     C                     PARM 'WRKSPLF' P@CMD  30
     C                     PARM 030       P@LEN  155
     C* SETON/SETOF
     C                     SETON                     414243
     C                     SETOF                     515253
     C*
     C                     SETON                     U1U2U3 JOB-SW
     C* TESTN
     C                     MOVEL'1234'    N1      4
     C                     MOVEL'  34'    N2      4
     C                     MOVEL'    '    N3      4
     C                     MOVEL' 2 4'    N4      4
     C                     MOVEL'AAAA'    N5      4
     C*こんな結果になります。                               41 42 43
     C                     TESTN          N1         414243 1  0  0
     C                     TESTN          N2         414243 0  1  0
     C                     TESTN          N3         414243 0  0  1
     C                     TESTN          N4         414243 0  0  0
     C                     TESTN          N5         414243 0  0  0
     C* COMIT
     C                     COMIT
     C* EXSR
     C                     EXSR SUB99
     C* OCUR
     C           X         OCUR STACK
     C*---------------------------------------------------------------
     C* BEGSR
     C           SUB1      BEGSR
     C*                   処理
     C                     ENDSR
     C*---------------------------------------------------------------
     C           SUB99     BEGSR
     C*
     C                     SETON                     LR    LAST REC
     C                     RETRN
     C*
     C                     ENDSR
     OQPRINT  E 2              DTL01
     O                         MISE       3
     O                         NAMAE     24
**
AA バー竜宮城
BB 居酒屋すずめの涙
CC ボッタクリ鬼の館
DD パーラー天国
** ARY **
20000
02000
00200
00020
00002






前ページ 次ページ 目 次