免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7680 | 回复: 11
打印 上一主题 下一主题

AS/400开发经验点滴(六)--如何制作下拉菜单(源码) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-11 11:04 |只看该作者 |倒序浏览
按:前几天,有两位朋友谈及下拉菜单。我也来凑凑热闹,毕竟是自己的亲自经验。


AS/400开发经验点滴(六)
---- 如何制作下拉菜单


九.在AS/400上实现弹出下拉菜单

1.步骤

AS/400上使用下拉菜单的软件很少见,但下拉菜单的优点又显而易见,AS/400的SDA工具提供了制造下拉菜单的功能。

用SDA创建显示文件,可以用多种RECORD类型可以选择:RECORD, USRDFN,SFL, SFLMSG,WINDOW, WDWSFL,PULDWN, PDNSFL,MNUBAR。其中的MNUBAR和PULDWN两种类型就是制造下拉菜单的两种必须类型。
                 
使用SDA工具只需遵循以下六个步骤就可以创建下拉菜单:

1.        用STRSDA启动SDA,选择DESIGN SCREEN
2.        创建一个或多个类型为pull-down(PULDWN)的RECORD
3.        创建一个类型menu-bar(MNUBAR)的RECORD
4.        定义PULDWN RECORD的fields
5.        定义MNUBAR RECORD的fileds
6.        测试下拉菜单

2. 显示文件

这几步详细步骤信息可以参见SDA参考书。下面就是我创建的一个下拉菜单的示范显示文件:


  1.      A*%%TS  SD  20040210  110218  BLOG        REL-V5R1M0  5722-WDS
  2.      A*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  3.      A*                                                               *
  4.      A* FILE NAME        : PULLMENU                                   *
  5.      A* DESCRIPTION      : PULL DOWN MENU SAMPLE                      *
  6.      A* VERSION          : 2.00                                       *
  7.      A* PROGRAMMER       : BLOG LIOU                                  *
  8.      A* CREATION DATE    : 1998.02.22 - V1.00                         *
  9.      A* MODIFIED DATE    : 1998.05.08 - V2.00                         *
  10.      A* MODIFIED DATE    : 2004.02.10 - V2.10                         *
  11.      A*                                                               *
  12.      A*################################################################
  13.      A*%%EC
  14.      A                                      DSPSIZ(24 80 *DS3)
  15.      A                                      INVITE
  16.      A                                      INDARA
  17.      A                                      MNUBARSW(CA10)
  18.      A                                      MNUCNL(CA12)
  19.      A                                      HELP(01)
  20.      A                                      CF02
  21.      A                                      CF03
  22.      A                                      CSRINPONLY
  23.      A*                                     OVERLAY
  24.      A*                                     MNUBARDSP(MENUBAR &MNUCHI &PULCHI)
  25.      A          R APPSCR
  26.      A*%%TS  SD  20040210  110218  BLOG        REL-V5R1M0  5722-WDS
  27.      A                                      CSRLOC(LINNBR     POSNBR)
  28.      A                                      RTNCSRLOC(*WINDOW &LINNBR &POSNBR)
  29.      A                                      KEEP
  30.      A            LINNBR         3S 0H
  31.      A            POSNBR         3S 0H
  32.      A                                 23  1'F1=HELPF2=SWITCH LINE MENU  F3=E-
  33.      A                                      XIT F12=CANCEL                     -
  34.      A                                                '
  35.      A                                      DSPATR(RI)
  36.      A                                      COLOR(BLU)
  37.      A                                 11 26'==  PULL DOWN MENU SAMPLE =='
  38.      A                                      COLOR(BLU)
  39.      A                                 20 14'BLOGIMS VERSION 1.00, (C)COPYRIGHT-
  40.      A                                       XXXXXXX CORP. 1998.'
  41.      A                                      DSPATR(UL)
  42.      A                                      COLOR(WHT)
  43.      A*                                 3 63DATE
  44.      A*                                     EDTCDE(Y)
  45.      A*                                     DSPATR(HI)
  46.      A*                                 3 72TIME
  47.      A*                                     DSPATR(HI)
  48.      A*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  49.      A          R MENUBAR
  50.      A*%%TS  SD  19980518  164123  BLOG        REL-V3R7M0  5716-PW1
  51.      A                                      RTNCSRLOC(*WINDOW &LINNBR &POSNBR)
  52.      A                                      CSRLOC(LINNBR     POSNBR)
  53.      A                                      OVERLAY
  54.      A                                      KEEP
  55.      A                                      MNUBAR
  56.      A                                      MNUBARDSP(&PULCHI)
  57.      A            LINNBR         3S 0H
  58.      A            POSNBR         3S 0H
  59.      A            PULCHI         2S 0H
  60.      A            MNUCHI         2Y 0B  1  2CHCSLT((*COLOR PNK))
  61.      A                                      MNUBARCHC(1 APULDWN '中心日终')
  62.      A                                      MNUBARCHC(2 BPULDWN '查询处理')
  63.      A                                      MNUBARCHC(3 CPULDWN '网络监视')
  64.      A                                      MNUBARCHC(4 DPULDWN '报标管理')
  65.      A                                      MNUBARCHC(5 EPULDWN '系统管理')
  66.      A                                      MNUBARCHC(6 FPULDWN '数据维护')
  67.      A*----------------------------------------------------------------
  68.      A          R APULDWN
  69.      A*%%TS  SD  19980510  083341  BLOG        REL-V3R7M0  5716-PW1
  70.      A                                      PULLDOWN(*NOSLTIND)
  71.      A            FLD001         2Y 0B  1  1SNGCHCFLD
  72.      A                                      CHOICE(1 '>;1*********')
  73.      A                                      CHOICE(2 '>;2*********')
  74.      A                                      CHOICE(3 '>;3*********')
  75.      A                                      CHOICE(4 '>;4*********')
  76.      A                                      CHOICE(5 '>;5*********')
  77.      A                                      CHOICE(6 '>;6*********')
  78.      A                                      CHOICE(7 '>;7*********')
  79.      A                                      CHOICE(8 '>;8*********')
  80.      A                                      CHOICE(9 '>;9*********')
  81.      A                                      CHOICE(10 '>;A*********')
  82.      A                                      CHOICE(11 '>;B*********')
  83.      A                                      CHOICE(12 '>;C*********')
  84.      A                                      CHOICE(13 '>;D*********')
  85.      A                                      CHOICE(14 '>;E*********')
  86.      A          R BPULDWN
  87.      A*%%TS  SD  19980508  220549  BLOG        REL-V3R7M0  5716-PW1
  88.      A                                      PULLDOWN
  89.      A            FLD001         2Y 0B  1  1CHOICE(1 '*********')
  90.      A                                      CHOICE(2 '*********')
  91.      A                                      CHOICE(3 '*********')
  92.      A                                      CHOICE(4 '*********')
  93.      A                                      CHOICE(5 '*********')
  94.      A                                      CHOICE(6 '*********')
  95.      A                                      SNGCHCFLD
  96.      A          R CPULDWN
  97.      A*%%TS  SD  19980508  220549  BLOG        REL-V3R7M0  5716-PW1
  98.      A                                      PULLDOWN
  99.      A            FLD001         2Y 0B  1  1SNGCHCFLD
  100.      A                                      CHOICE(1 '*********')
  101.      A                                      CHOICE(2 '*********')
  102.      A                                      CHOICE(3 '*********')
  103.      A          R DPULDWN
  104.      A*%%TS  SD  19980508  220549  BLOG        REL-V3R7M0  5716-PW1
  105.      A                                      PULLDOWN
  106.      A            FLD001         2Y 0B  1  1SNGCHCFLD(*RSTCSR)
  107.      A                                      CHOICE(1 '*********')
  108.      A                                      CHCUNAVAIL((*COLOR BLU))
  109.      A          R EPULDWN
  110.      A*%%TS  SD  19980508  220549  BLOG        REL-V3R7M0  5716-PW1
  111.      A                                      PULLDOWN
  112.      A            FLD001         2Y 0B  1  1SNGCHCFLD
  113.      A                                      CHOICE(1 '*********')
  114.      A                                      CHOICE(2 '*********')
  115.      A                                      CHOICE(3 '*********')
  116.      A                                      CHOICE(4 '*********')
  117.      A**                                    CHOICE(5 '*********')
  118.      A                                      CHOICE(5 '*********')
  119.      A          R FPULDWN
  120.      A*%%TS  SD  19980508  160451  BLOG        REL-V3R7M0  5716-PW1
  121.      A                                      PULLDOWN(*NOSLTIND)
  122.      A            FLD001         2Y 0B  1  1SNGCHCFLD
  123.      A                                      COLOR(BLU)
  124.      A                                      CHOICE(1 '>;1*********')
  125.      A                                      CHOICE(2 '>;2*********')
  126.      A                                      CHOICE(3 '>;3*********')
  127.      A                                      CHOICE(4 '>;4*********')
  128.      A                                      CHOICE(5 '>;5*********')
  129.      A                                      CHOICE(6 '>;6*********')
  130.      A                                      CHOICE(7 '>;7*********')
  131.      A                                      CHOICE(8 '>;8*********')
  132.      A                                      CHOICE(9 '>;9*********')
  133.      A                                      CHOICE(10 '>;A*********')
  134.      A                                      CHOICE(11 '>;B*********')
  135.      A                                      CHOICE(12 '>;C*********')
  136.      A                                      CHOICE(13 '>;D*********')
复制代码



3. RPG程序

但是光有显示文件还不行,必须与高级程序(RPG或CL)结合起来,才能完成下显拉菜单的程序调用功能。要使RPG程序知道正确的调用,RPG程序就必须知道示文件当前的选择。这个选择是有两项组成,一个是MNUBAR的当前选择,一个PULDWN的选择。这两个选择项都是在显示文件的MNUBAR RECORD定义的,分别是MNUCHI和PULCHI,要在显示文件里正确获得这两项值,还必须在MNUBAR RECORD里定义当前光标位置,这是由定义LINNBR和POSNBR两个变量来体现的。初学者常犯的一个错误就是:已成功创建下拉菜单显示文件,但在RPG程序中却无法成功调用应用程序,问题就出在这里。

有了MNUCHI和PULCHI,那么在RPG程序中就可以准确知道当前的选择,从而分别调用相应的程序。调用程序方式可以多种多样,可以直接调用,也可以把程序名写在一个PF文件里,动态调用。下面示范RPG程序中MNUCHI为CENTER的调用就是用参数文件来实现的,其他全部直接调用。

比如定义MENUPGM的PF文件来存放调用程序名:


  1.      A*
  2.      A                                      UNIQUE
  3.      A          R MNUPGM
  4.      A            MNUCHI         2S 0
  5.      A            PULCHI         2S 0
  6.      A            PDNPGM        10A
  7.      A          K MNUCHI
  8.      A          K PULCHI

复制代码


下面是RPG程序:


  1.      H*################################################################
  2.      H*                                                               *
  3.      H* PROGRAM NAME   : PULLMENUR                                    *
  4.      H* VERSION        : 2.00                                         *
  5.      H* FUNCTION       :                                              *
  6.      H* PROGRAMMER     : BLOG LIOU                                    *
  7.      H* MODIFIED BY    :                                              *
  8.      H* CREATION DATE  : 1998.02.19 - V1.00                           *
  9.      H* MODIFIED DATE  : 1998.05.08 - V2.00                           *
  10.      H* MODIFIED DATE  : 2004.02.10 - SAMPLE                          *
  11.      H*                                                               *
  12.      H*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  13.      FMENUPGM IF  E           K        DISK
  14.      FPULLMENUCF  E                    WORKSTN
  15.      I*--------------------------------------------------------------
  16.      I           SDS
  17.      I                                     *STATUS  STATUS
  18.      C*--------------------------------------------------------------
  19.      C                     MOVE *BLANK    PGMNAM  8
  20.      C           CHIKEY    KLIST
  21.      C                     KFLD           MNUCHI           
  22.      C                     KFLD           PULCHI           
  23.      C*
  24.      C*################################################################
  25.      C*
  26.      C           MNMENU    TAG
  27.      C                     Z-ADD2         POSNBR
  28.      C           MENULP    TAG
  29.      C                     Z-ADD1         LINNBR
  30.      C                     WRITEAPPSCR
  31.      C                     EXFMTMENUBAR
  32.      C           *INKC     IFEQ *ON
  33.      C                     GOTO ENDPGM
  34.      C                     ENDIF
  35.      C           MNUCHI    CASEQ1         CENTER           
  36.      C           MNUCHI    CASEQ2         DATQRY           
  37.      C           MNUCHI    CASEQ3         NETMON           
  38.      C           MNUCHI    CASEQ4         RPTPRT           
  39.      C           MNUCHI    CASEQ5         SYSADM           
  40.      C           MNUCHI    CASEQ6         DATMNT           
  41.      C                     ENDCS
  42.      C           *INKB     IFEQ '1'
  43.      C                     CALL 'ALTMENU'
  44.      C                     ENDIF
  45.      C                     GOTO MENULP
  46.      C           ENDPGM    TAG
  47.      C                     SETON                     LR
  48.      C                     RETRN
  49.      C*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  50.      C*
  51.      C*--------------------------------------------------
  52.      C           CENTER    BEGSR
  53.      C                     Z-ADDPULCHI    XZXM    20
  54.      C           CHIKEY    CHAINMNUPGM               60
  55.      C  N60                MOVE PDNPGM    PGMNAM
  56.      C                     CALL PGMNAM
  57.      C                     PARM '0000'    RMSG    4
  58.      C           EXTRZ     ENDSR
  59.      C*----------------------------------------------------------------
  60.      C           DATQRY    BEGSR                           
  61.      C                     SELEC
  62.      C           PULCHI    WHEQ 1
  63.      C                     CALL 'DSPWDZT'                  
  64.      C           PULCHI    WHEQ 2
  65.      C                     CALL 'AMDSPDB'
  66.      C           PULCHI    WHEQ 3
  67.      C                     CALL 'QRYLSZH'
  68.      C           PULCHI    WHEQ 4                          
  69.      C                     CALL 'DSPRZF'
  70.      C           PULCHI    WHEQ 5                          
  71.      C   60                MOVEL'CXKMGZ'  PGMNAM
  72.      C                     CALL PGMNAM                 56
  73.      C  N56                FREE PGMNAM
  74.      C           PULCHI    WHEQ 6                          
  75.      C   60                MOVEL'CXZZXX'  PGMNAM
  76.      C                     CALL PGMNAM                 56
  77.      C  N56                FREE PGMNAM
  78.      C                     ENDSL
  79.      C                     ENDSR
  80.      C*----------------------------------------------------------------
  81.      C           NETMON    BEGSR                           
  82.      C                     SELEC
  83.      C           PULCHI    WHEQ 1
  84.      C                     CALL 'WATCHNH'
  85.      C           PULCHI    WHEQ 2
  86.      C                     CALL 'WATCHRH'
  87.      C           PULCHI    WHEQ 3
  88.      C                     CALL 'WATCHHH'
  89.      C                     ENDSL
  90.      C                     ENDSR
  91.      C*----------------------------------------------------------------
  92.      C           RPTPRT    BEGSR                           
  93.      C                     CALL 'BBMENU'
  94.      C                     ENDSR
  95.      C*----------------------------------------------------------------
  96.      C           SYSADM    BEGSR                           
  97.      C                     SELEC
  98.      C           PULCHI    WHEQ 1
  99.      C                     CALL 'MNTJGDY'
  100.      C           PULCHI    WHEQ 2
  101.      C                     CALL 'MNTGYDY'
  102.      C           PULCHI    WHEQ 3
  103.      C                     CALL 'BAKACDAT'
  104.      C           PULCHI    WHEQ 4
  105.      C                     CALL 'RSTACDAT'
  106.      C           PULCHI    WHEQ 5
  107.      C                     CALL 'MNTQLSJ'
  108.      C                     ENDSL
  109.      C                     ENDSR
  110.      C*----------------------------------------------------------------
  111.      C           DATMNT    BEGSR                           
  112.      C                     SELEC
  113.      C           PULCHI    WHEQ 1
  114.      C   60                MOVEL'MNTKMDM' PGMNAM
  115.      C                     CALL PGMNAM
  116.      C           PULCHI    WHEQ 2
  117.      C                     CALL 'MNTJYDM'
  118.      C           PULCHI    WHEQ 3
  119.      C                     CALL 'MNTLLDM'
  120.      C           PULCHI    WHEQ 4
  121.      C                     CALL 'MNTHLDM'
  122.      C           PULCHI    WHEQ 5
  123.      C                     CALL 'MNTYWLB'
  124.      C           PULCHI    WHEQ 6
  125.      C                     CALL 'MNTPZDM'
  126.      C           PULCHI    WHEQ 7
  127.      C                     CALL 'MNTZDDM'
  128.      C           PULCHI    WHEQ 8
  129.      C                     CALL 'MNTRQDM'
  130.      C           PULCHI    WHEQ 9
  131.      C                     CALL 'MNTXJDM'
  132.      C           PULCHI    WHEQ 10
  133.      C                     CALL 'MNTCSDM'
  134.      C           PULCHI    WHEQ 11
  135.      C                     CALL 'MNTCDDY'
  136.      C           PULCHI    WHEQ 12
  137.      C                     CALL 'MNTSQLB'
  138.      C           PULCHI    WHEQ 13
  139.      C                     CALL 'MNTXYMM'
  140.      C                     ENDSL
  141.      C                     ENDSR
  142.      C*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  143.      C           *PSSR     BEGSR
  144.      C                     GOTO MNMENU
  145.      C                     ENDSR
  146.      C*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
复制代码



上面的示范程序实际编译通过,可以作为创建下拉菜单参考。也可以直接修改本示范程序而不是通过SDA定义来创建下拉菜单。


BLOG LIOU
2004.2.11

pull2.JPG (90.93 KB, 下载次数: 60)

pull2.JPG

pull1.JPG (79.14 KB, 下载次数: 38)

pull1.JPG

论坛徽章:
0
2 [报告]
发表于 2004-02-11 11:11 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

You could search GOOGLE, there is a shareware DBGwhich will tech you haw to generate 下拉菜单.
.

论坛徽章:
0
3 [报告]
发表于 2004-02-11 11:31 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

终于等到了 研究中。。。。

论坛徽章:
0
4 [报告]
发表于 2004-02-11 13:49 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

说真的,看了楼主发表了一系列文章,感触很深......打从心眼里都很感激你了。
你的编程经验很丰富—即水平很高!
顶!!!
同时期待你有更多、更新鲜的文章出炉......
等我收集完《AS/400开发经验点滴》后,将制作成一本书,在左上角标识"RICOH"内部使用的同时,封面上肯定标明—BLOGLIOU原著。

论坛徽章:
0
5 [报告]
发表于 2004-02-11 13:52 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

学习中......顶

论坛徽章:
0
6 [报告]
发表于 2004-02-11 15:23 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

这是第六帖呀,谁能提供前5个的地址呀

论坛徽章:
0
7 [报告]
发表于 2004-02-11 15:30 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

[quote]原帖由 "Lanyd"]这是第六帖呀,谁能提供前5个的地址呀[/quote 发表:


点击楼主“原创精华”的数字,就可以“顺藤摸瓜”了......
:wink:  :wink:  :wink:
andrewleading_h 该用户已被删除
8 [报告]
发表于 2004-02-11 15:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2004-02-12 08:39 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

已经下载,正在学习,非常感激提供

论坛徽章:
0
10 [报告]
发表于 2004-02-12 09:36 |只看该作者

AS/400开发经验点滴(六)--如何制作下拉菜单(源码)

原帖由 "qingzhou" 发表:
说真的,看了楼主发表了一系列文章,感触很深......打从心眼里都很感激你了。
你的编程经验很丰富—即水平很高!
顶!!!
同时期待你有更多、更新鲜的文章出炉......
等我收集完《AS/400开发经验点滴》后,将制..........


qingzhou兄过奖了,400博大精深,我实际也只懂只鳞半爪,一些《经验点滴》愿与大家共享,如若兄台把经验点滴制书出版,莫忘分我一半奖金啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP