先の例の POPUPを表示するための RPGのソースを紹介する。
0001.00 H DFTNAME(ANS005) DATEDIT(*YMD/) 0002.00 F******** 商品コード照会 ***************************************** 0003.00 FANS005FM CF E WORKSTN 0004.00 FSHOHIN IF E K DISK 0005.00 F***************************************************************** 0006.00 D KYR S 10 DIM(500) 0007.00 D DS 0008.00 D OPT 1 5 0009.00 D DIM(5) 0010.00 D OPT001 1 1 0011.00 D OPT002 2 2 0012.00 D OPT003 3 3 0013.00 D OPT004 4 4 0014.00 D OPT005 5 5 0015.00 D DS 0016.00 D CDR 1 50 0017.00 D DIM(5) 0018.00 D CDR001 1 10 0019.00 D CDR002 11 20 0020.00 D CDR003 21 30 0021.00 D CDR004 31 40 0022.00 D CDR005 41 50 0023.00 D DS 0024.00 D NMR 1 120 0025.00 D DIM(5) 0026.00 D NMR001 1 24 0027.00 D NMR002 25 48 0028.00 D NMR003 49 72 0029.00 D NMR004 73 96 0030.00 D NMR005 97 120 0031.00 C*----------------------------------------------------+ 0032.00 C *ENTRY PLIST 0033.00 C PARM PRM001 10 0034.00 C*----------------------------------------------------+ 0035.00 C*( 初期画面 ) 0036.00 C *LOVAL SETLL SHOHIN 0037.00 C EXSR READ 0038.00 C*----------------------------------------------------+ 0039.00 C START TAG 0040.00 C EXFMT WINDOW 0041.00 C*----------------------------------------------------+ 0042.00 C SETOFF 99 0043.00 C*( CF12 )- 前画面 0044.00 C *IN12 IFEQ '1' 0045.00 C SETON LR 0046.00 C LR RETURN 0047.00 C END 0048.00 C*( ROLL-UP) 0049.00 C *IN14 IFEQ '1' 0050.00 C EXSR ROLLUP 0051.00 C END 0052.00 C*( ROLL-DOWN ) 0053.00 C *IN15 IFEQ '1' 0054.00 C EXSR ROLDWN 0055.00 C END 0056.00 C*( CHECK ) 0057.00 C EXSR CHECK 0058.00 C GOTO START 0059.00 C****************************************************** 0060.00 C *INZSR BEGSR 0061.00 C****************************************************** 0062.00 C* 初期のみの実行 0063.00 CSR Z-ADD 8 WNDL 0064.00 CSR Z-ADD 29 WNDP 0065.00 CSR MOVE *LOVAL SETCOD 10 0066.00 CSR Z-ADD 1 RL 4 0 0067.00 CSR MOVE *BLANKS PRM001 0068.00 CSR INZEND ENDSR 0069.00 C****************************************************** 0070.00 C READ BEGSR 0071.00 C****************************************************** 0072.00 CSR EXSR CLEAR 0073.00 CSR 1 DO 5 N 4 0 0074.00 CSR READ SHOHIN 50 0075.00 CSR 50 GOTO REDEND 0076.00 CSR N IFEQ 1 0077.00 CSR MOVE SHCODE KYR(RL) 0078.00 CSR END 0079.00 CSR MOVE SHCODE CDR(N) 0080.00 CSR MOVE SHNAME NMR(N) 0081.00 CSR END 0082.00 CSR REDEND ENDSR 0083.00 C****************************************************** 0084.00 C CLEAR BEGSR 0085.00 C****************************************************** 0086.00 CSR MOVE *BLANKS OPT 0087.00 CSR MOVE *BLANKS CDR 0088.00 CSR MOVE *BLANKS NMR 0089.00 CSR ENDSR 0090.00 C****************************************************** 0091.00 C ROLLUP BEGSR 0092.00 C****************************************************** 0093.00 CSR ADD 1 RL 0094.00 CSR EXSR READ 0095.00 CSR ENDSR 0096.00 C****************************************************** 0097.00 C ROLDWN BEGSR 0098.00 C****************************************************** 0099.00 CSR RL IFGT 1 0100.00 CSR SUB 1 RL 0101.00 CSR KYR(RL) SETLL SHOHIN 0102.00 CSR EXSR READ 0103.00 CSR END 0104.00 CSR ENDSR 0105.00 C****************************************************** 0106.00 C CHECK BEGSR 0107.00 C****************************************************** 0108.00 CSR 1 DO 5 N 0109.00 CSR OPT(N) IFEQ '1' 0110.00 CSR MOVE CDR(N) PRM001 0111.00 CSR SETON LR 0112.00 CSR RETURN 0113.00 CSR END 0114.00 CSR END 0115.00 CSR ENDSR
単純な照会PGM であるのでさほど解説は要らないと思うが*INZSR
で
0063.00 CSR Z-ADD 8 WNDL 0064.00 CSR Z-ADD 29 WNDP
によって POPUPの表示位置を設定しているとに注意して欲しい。
親画面の RPG から操作員が押したカーソルの位置を取得してこの PGM に渡すようにして、
動的に POPUPの表示位置を決めることもできる。
一般的にはカーソルの位置を起点としてから POPUPの表示が開始されるといかにも、
それらしい印象を与えることができる。
例えば、今ご覧になっているこの画面でマウスポインターをセットして右ボタンを押すと
フローティング・メニューがこの画面(HTML)の上に表示されるはずだ。