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
前ページ | 次ページ | 目 次 |