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 |
のように通常の表示と変わるところはない。
