IBM i でもメニュー・バーを定義することができる。
Windowsではメニュー・バーの利用は一時期はほとんど見なくなったが
最近少し見かけるようになった。
メニュー・バーを選択すると次のようにプル・ダウンが表示される。
[メニュー・バーDSPFサンプル・ソース]
ソースはこちらから
0001.00 A DSPSIZ(24 80 *DS3) 0002.00 A MSGLOC(24) 0003.00 A PRINT 0004.00 A R DSPHEAD 0005.00 A TEXT(' 初期画面 ') 0006.00 A* 11:59:33 QSECOFR REL-R06M00 5714-UT1 0007.00 A CF03(03 ' 終了 ') 0008.00 A ROLLUP(07) 0009.00 A ROLLDOWN(08) 0010.00 A BLINK 0011.00 A INZRCD 0012.00 A 1 27' 仕入先マスターの照会 ' 0013.00 A DSPATR(RI) 0014.00 A* 1 72' 日付 ' 0015.00 A* DATE 8Y 0O 1 80 0016.00 A 2 2' 仕入先コード ' 0017.00 A SRCODE 4A B +1TEXT(' 仕入先コード ') 0018.00 A 91 ERRMSG('ロールアップ できない ' 91) 0019.00 A 92 ERRMSG('ロールダウン できない ' 92) 0020.00 A* + 1'-' 0021.00 A 11 13' 参照するコードを + 0022.00 A 入れて実行キーを押してください ' 0023.00 A DSPATR(HI) 0024.00 A 22 2'ROLL UP/DOWN' 0025.00 A 23 2'F3= 終了 ' 0026.00 A R INZMSG 0027.00 A OVERLAY PUTRETAIN 0028.00 A 23 2'F3= 終了 ' 0029.00 A R MNUBAR MNUBAR 0030.00 A MNUBARDSP 0031.00 A MNUBARSW(CA09) 0032.00 A CF03(03 ' 終了 ') 0033.00 A* OVERLAY PUTRETAIN 0034.00 A*%%TS SD 19940302 221529 QTR REL-V2R2M0 5738-PW1 0035.00 A MNUFLD 2Y 0B 1 2 0036.00 A MNUBARCHC(1 DSPDTA01 ' 基本情報 ') 0037.00 A MNUBARCHC(2 DSPDTA02 ' 分類情報 ') 0038.00 A MNUBARCHC(3 DSPDTA03 ' 支払情報 ') 0039.00 A MNUBARCHC(4 DSPDTA04 ' 督促条件 ') 0040.00 A MNUBARCHC(5 DSPDTA05 ' 追加情報 ') 0041.00 A MNUBARCHC(6 DSPDTA06 ' 更新情報 ') 0042.00 A* 23 2'F3= 終了 ' 0043.00 A R DSPDTA01 0044.00 A PULLDOWN 0045.00 A TEXT(' 基本情報 01') 0046.00 A CF03(03 ' 終了 ') 0047.00 A CF10(10 ' 更新 ') 0048.00 A CF23(23 ' 削除 ') 0049.00 A CF12(12 ' 前画面 ') 0050.00 A ROLLUP(07) 0051.00 A ROLLDOWN(08) 0052.00 A SETOF(99) 0053.00 A BLINK 0054.00 A 1 27' 仕入先マスターの照会 ' 0055.00 A DSPATR(RI) 0056.00 A 3 2' 仕入先コード ' 0057.00 A SRCODE 4A O 3 18TEXT(' 仕入先コード ') 0058.00 A 91 ERRMSG('ロールアップ できない ' 91) 0059.00 A 92 ERRMSG('ロールダウン できない ' 92) 0060.00 A 4 2' 基本情報 ' 0061.00 A DSPATR(RI) 0062.00 A 5 10' 仕入先名 ' 0063.00 A SRNMJ 32A B 5 25TEXT(' 仕入先名 ') 0064.00 A 6 10' 略名 ' 0065.00 A SRNMK R B 6 25REFFLD(@SIREMT/SRNMK QTRFIL/SIREMT) 0066.00 A 7 10' 電話番号 ' 0067.00 A SRTEL R B 7 25REFFLD(@SIREMT/SRTEL QTRFIL/SIREMT) 0068.00 A 8 10' FAX 番号 ' 0069.00 A SRFAX R B 8 25REFFLD(@SIREMT/SRFAX QTRFIL/SIREMT) 0070.00 A 9 10' 〒 ' 0071.00 A SRZIP R B 9 25REFFLD(@SIREMT/SRZIP QTRFIL/SIREMT) 0072.00 A TEXT('*ZIPCODE') 0073.00 A 10 10' 住所1 ' 0074.00 A SRADR1 R B 10 25REFFLD(@SIREMT/SRADR1 QTRFIL/SIREMT) 0075.00 A TEXT('*ADDR1') 0076.00 A 11 10' 住所2 ' 0077.00 A SRADR2 R B 11 25REFFLD(@SIREMT/SRADR2 QTRFIL/SIREMT) 0078.00 A TEXT('*ADDR2') 0079.00 A 12 10' 担当者名 ' 0080.00 A STANTO R B 12 25REFFLD(@SIREMT/STANTO QTRFIL/SIREMT) 0081.00 A* 23 2'F3= 終了 ' 0082.00 A* 23 35'F10= 更新 ' 0083.00 A* 23 53'F23= 削除 ' 0084.00 A* 23 69'F12= 前画面 ' 0085.00 A R DSPDTA02 0086.00 A PULLDOWN 0087.00 A TEXT(' 分類情報 02') 0088.00 A CF03(03 ' 終了 ') 0089.00 A CF10(10 ' 更新 ') 0090.00 A CF23(23 ' 削除 ') 0091.00 A CF12(12 ' 前画面 ') 0092.00 A ROLLUP(07) 0093.00 A ROLLDOWN(08) 0094.00 A SETOF(99) 0095.00 A BLINK 0096.00 A 1 27' 仕入先マスターの照会 ' 0097.00 A DSPATR(RI) 0098.00 A 3 2' 仕入先コード ' 0099.00 A SRCODE 4A O 3 15TEXT(' 仕入先コード ') 0100.00 A 91 ERRMSG('ロールアップ できない ' 91) 0101.00 A 92 ERRMSG('ロールダウン できない ' 92) 0102.00 A 4 2' 分類情報 ' 0103.00 A DSPATR(RI) 0104.00 A 5 10' 仕入先名 ' 0105.00 A SRNMJ 32A B 5 25TEXT(' 仕入先名 ') 0106.00 A 13 10' 仕入先区分 ' 0107.00 A SRKB@ 2Y 0B 13 25 0108.00 A SNGCHCFLD((*NUMCOL 2)) 0109.00 A CHOICE(1 ' 仕入先 ') 0110.00 A CHOICE(2 ' 外注先 ') 0111.00 A 14 10' 業種区分 ' 0112.00 A SGYOSH R B 14 25REFFLD(@SIREMT/SGYOSH QTRFIL/SIREMT) 0113.00 A* 0114.00 A R DSPDTA03 0115.00 A PULLDOWN 0116.00 A TEXT(' 支払情報 03') 0117.00 A CF03(03 ' 終了 ') 0118.00 A CF10(10 ' 更新 ') 0119.00 A CF23(23 ' 削除 ') 0120.00 A CF12(12 ' 前画面 ') 0121.00 A ROLLUP(07) 0122.00 A ROLLDOWN(08) 0123.00 A SETOF(99) 0124.00 A BLINK 0125.00 A 1 27' 仕入先マスターの照会 ' 0126.00 A DSPATR(RI) 0127.00 A 3 2' 仕入先コード ' 0128.00 A SRCODE 4A O 3 15TEXT(' 仕入先コード ') 0129.00 A 91 ERRMSG('ロールアップ できない ' 91) 0130.00 A 92 ERRMSG('ロールダウン できない ' 92) 0131.00 A 4 2' 支払情報 ' 0132.00 A DSPATR(RI) 0133.00 A 5 10' 仕入先名 ' 0134.00 A SRNMJ 32A B 5 25TEXT(' 仕入先名 ') 0135.00 A* 0136.00 A R DSPDTA04 0137.00 A PULLDOWN 0138.00 A TEXT(' 督促条件 04') 0139.00 A CF03(03 ' 終了 ') 0140.00 A CF10(10 ' 更新 ') 0141.00 A CF23(23 ' 削除 ') 0142.00 A CF12(12 ' 前画面 ') 0143.00 A ROLLUP(07) 0144.00 A ROLLDOWN(08) 0145.00 A SETOF(99) 0146.00 A BLINK 0147.00 A 1 27' 仕入先マスターの照会 ' 0148.00 A DSPATR(RI) 0149.00 A 3 2' 仕入先コード ' 0150.00 A SRCODE 4A O 3 15TEXT(' 仕入先コード ') 0151.00 A 91 ERRMSG('ロールアップ できない ' 91) 0152.00 A 92 ERRMSG('ロールダウン できない ' 92) 0153.00 A 4 2' 督促条件 ' 0154.00 A DSPATR(RI) 0155.00 A 5 10' 仕入先名 ' 0156.00 A SRNMJ 32A B 5 25TEXT(' 仕入先名 ') 0157.00 A* 0158.00 A R DSPDTA05 0159.00 A PULLDOWN 0160.00 A TEXT(' 追加情報 05') 0161.00 A CF03(03 ' 終了 ') 0162.00 A CF10(10 ' 更新 ') 0163.00 A CF23(23 ' 削除 ') 0164.00 A CF12(12 ' 前画面 ') 0165.00 A ROLLUP(07) 0166.00 A ROLLDOWN(08) 0167.00 A SETOF(99) 0168.00 A BLINK 0169.00 A 1 27' 仕入先マスターの照会 ' 0170.00 A DSPATR(RI) 0171.00 A 3 2' 仕入先コード ' 0172.00 A SRCODE 4A O 3 15TEXT(' 仕入先コード ') 0173.00 A 91 ERRMSG('ロールアップ できない ' 91) 0174.00 A 92 ERRMSG('ロールダウン できない ' 92) 0175.00 A 4 2' 追加情報 ' 0176.00 A DSPATR(RI) 0177.00 A 5 10' 仕入先名 ' 0178.00 A SRNMJ 32A B 5 25TEXT(' 仕入先名 ') 0179.00 A* 0180.00 A R DSPDTA06 0181.00 A PULLDOWN 0182.00 A TEXT(' 更新情報 06') 0183.00 A CF03(03 ' 終了 ') 0184.00 A CF10(10 ' 更新 ') 0185.00 A CF23(23 ' 削除 ') 0186.00 A CF12(12 ' 前画面 ') 0187.00 A ROLLUP(07) 0188.00 A ROLLDOWN(08) 0189.00 A SETOF(99) 0190.00 A BLINK 0191.00 A 1 27' 仕入先マスターの照会 ' 0192.00 A DSPATR(RI) 0193.00 A 3 2' 仕入先コード ' 0194.00 A SRCODE 4A O 3 15TEXT(' 仕入先コード ') 0195.00 A 91 ERRMSG('ロールアップ できない ' 91) 0196.00 A 92 ERRMSG('ロールダウン できない ' 92) 0197.00 A 4 2' 更新情報 ' 0198.00 A DSPATR(RI) 0199.00 A 5 10' 仕入先名 ' 0200.00 A SRNMJ 32A B 5 25TEXT(' 仕入先名 ')
[解説]
メニュー・バーは最上部だけのひとつのレコードであり
0029.00 A R MNUBAR MNUBAR 0030.00 A MNUBARDSP 0031.00 A MNUBARSW(CA09) 0032.00 A CF03(03 ' 終了 ') 0033.00 A* OVERLAY PUTRETAIN 0034.00 A*%%TS SD 19940302 221529 QTR REL-V2R2M0 5738-PW1 0035.00 A MNUFLD 2Y 0B 1 2 0036.00 A MNUBARCHC(1 DSPDTA01 ' 基本情報 ') 0037.00 A MNUBARCHC(2 DSPDTA02 ' 分類情報 ') 0038.00 A MNUBARCHC(3 DSPDTA03 ' 支払情報 ') 0039.00 A MNUBARCHC(4 DSPDTA04 ' 督促条件 ') 0040.00 A MNUBARCHC(5 DSPDTA05 ' 追加情報 ') 0041.00 A MNUBARCHC(6 DSPDTA06 ' 更新情報 ')
である。
MNUBARCHC(1 DSPDTA01 ‘ 基本情報 ‘)
のようにひとつのメニュー項目はプル・ダウンとして別の画面を用意しておき
その画面レコードには
0043.00 A R DSPDTA01 0044.00 A PULLDOWN
のように PULLDOWN を定義する必要がある。
[メニュー・バーRPGサンプル・ソース]
ソースはこちらから
0001.00 H DFTNAME(MNUBAR) DATEDIT(*YMD/) 0002.00 F******** メニュー・バー ******************************************** 0003.00 FMNUBARFM CF E WORKSTN 0004.00 FSIREMT IF E K DISK 0005.00 F********************************************************************** 0006.00 C*----------------------------------------------------+ 0007.00 C START TAG | 0008.00 C EXFMT DSPHEAD | 0009.00 C*----------------------------------------------------+ 0010.00 C SETOFF 99 0011.00 C*( CF03 )- 終了 0012.00 C *IN03 IFEQ *ON CF12 0013.00 C SETON LR 0014.00 C LR RETURN 0015.00 C END CF12 0016.00 C*( 実行キー ) 0017.00 C SETOFF 99 0018.00 C SRCODE CHAIN SIREMT 99 0019.00 C 99 SETON 61 0020.00 C 99 GOTO START 0021.00 C Z-ADD 1 MNUFLD 0022.00 C MOVEL 'AA' SRNMJ 0023.00 C*----------------------------------------------------+ 0024.00 C DSPLY TAG | 0025.00 C WRITE INZMSG | 0026.00 C EXFMT MNUBAR | 0027.00 C*----------------------------------------------------+ 0028.00 C SETOFF 99 0029.00 C*( CF03 )- 終了 0030.00 C *IN03 IFEQ *ON CF12 0031.00 C SETON LR 0032.00 C LR RETURN 0033.00 C END CF12 0034.00 C*( CF12 )- 前画面 0035.00 C *IN12 IFEQ *ON CF12 0036.00 C SETOFF 12 0037.00 C GOTO START 0038.00 C END CF12 0039.00 C*( 実行キー ) 0040.00 C GOTO DSPLY 0041.00 C END TAG
[解説]
RPG では特にメニュー・バー独自のコーディングは必要ない。
表示の方法は
0025.00 C WRITE INZMSG | 0026.00 C EXFMT MNUBAR |
のように通常の表示と変わるところはない。