• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

[分享]informix-4gl 7.2编写的通用菜单函数!!

发布: 2007-6-08 22:43 | 作者:  大梦 " | 来源: | 查看: 32次 | 进入软件测试论坛讨论

领测软件测试网
################################################################################
#                                                                              #
#                版本号: Ver 1.0       研制时间:2001.2.15                      #
#                                                                              #
################################################################################
globals 
       define winopened                    char(1)
       define thrmenu      array[4]    of  char(16)
       define popmenu      array[4,5]  of  char(14)
       define hlpmenu      array[4,5]  of  char(60)
       define poprowno     array[4]    of  smallint
       define maxmenuno                    smallint
       define menuno, currow, rstart       smallint
       define p_branch_no                  char(6)
       define p_branch_name                char(60)
       define p_today                      char(13)
       define p_clerk_code                 char(10)
       define p_clerk_pass                 char(15)
end globals
main
       options message line last,
               comment line last-2,
               error   line last,
               prompt  line last-1,
               form    line first+1,
               input   wrap,
               accept key interrupt
       options delete   key control-o
       options insert   key control-i
       options next     key control-n
       options previous key control-p
       options accept   key control-z
       defer interrupt
#      set isolation to dirty read
#      set lock mode to wait 5
#      whenever error continue
#      call startlog("err.log"
 
       let p_branch_no  = arg_val(1)
       let p_clerk_code = arg_val(2)
       let p_clerk_pass = arg_val(3)
       call initmenu()
       open window mtwin at 2,2 with  1 rows,78 columns attribute(border)
       open window mswin at 5,2 with 18 rows,78 columns attribute(border)
 while true
       call dispmenu(0)
       case menuno
            when 1
                 case currow
                      when 1
                      when 2
                      when 3
                      when 4 
                      when 5 exit while
                 end case
            when 2
                 case currow
                      when 1
                      when 2
                      when 3
                      when 4 
                      when 5 exit while
                 end case
            when 3
                 case currow
                      when 1
                      when 2
                      when 3
                      when 4
                      when 5 exit while
                 end case
            when 4
                 case currow
                      when 1 
                      when 2 
                      when 3 
                      when 4 
                      when 5 exit while
                 end case
       end case
end while
close window popwin
close window mswin
close window mtwin
end main

#####################################################
# 函数名称: initmenu()                              #
# 作    用: 初始化菜单函数                          #
#####################################################
function initmenu()
define i smallint
   let menuno = 1
   let currow = 1
   let rstart = 4
   initialize thrmenu to null
   initialize popmenu to null

   let maxmenuno    = 4

   let thrmenu[1]   = " A.柜面处理模块 "
   let thrmenu[2]   = " B.数据报表模块 "
   let thrmenu[3]   = " C.参数维护模块 " 
   let thrmenu[4]   = " D.系统帮助模块 "
 
   let poprowno[1]  = 5
   let popmenu[1,1] = "1.原始数据维护"
   let popmenu[1,2] = "2.日清日结处理"
   let popmenu[1,3] = "3.佣金数据查询"
   let popmenu[1,4] = "4.综合查询处理"
   let popmenu[1,5] = "E.退        出"

   let hlpmenu[1,1] = "对各机构的原始数据进行查询、增、删、改处理"
   let hlpmenu[1,2] = "对各机构录入的数据进行日清日洁处理"
   let hlpmenu[1,3] = "对各机构的业务员,部门进行佣金统计处理"
   let hlpmenu[1,4] = "对各机构的数据进行综合查询处理"
   let hlpmenu[1,5] = "退出柜面处理系统"
 
   let poprowno[2]  = 5
   let popmenu[2,1] = "1.佣金统计报表"
   let popmenu[2,2] = "2.个人统计报表"
   let popmenu[2,3] = "3.部门统计报表"
   let popmenu[2,4] = "4.机构统计报表"
   let popmenu[2,5] = "E.退        出"

   let hlpmenu[2,1] = "对各机构业务员的佣金信息进行打印处理"
   let hlpmenu[2,2] = "分机构对业务员进行综合统计"
   let hlpmenu[2,3] = "分机构对部门进行综合统计"
   let hlpmenu[2,4] = "分机构进行综合统计"
   let hlpmenu[2,5] = "退出柜面处理系统"

   let poprowno[3]  = 5
   let popmenu[3,1] = "1.机构部门维护"
   let popmenu[3,2] = "2.人员信息维护"
   let popmenu[3,3] = "3.险种信息维护"
   let popmenu[3,4] = "4.佣金参数维护"
   let popmenu[3,5] = "E.退        出"
   
   let hlpmenu[3,1] = "设定机构、部门信息"
   let hlpmenu[3,2] = "设业务员基本信息"
   let hlpmenu[3,3] = "设定大类险种、明细险种及交费方式信息"
   let hlpmenu[3,4] = "设定各明细险种的佣金参数"
   let hlpmenu[3,5] = "退出柜面处理系统"
   
   let poprowno[4]  = 5
   let popmenu[4,1] = "1.系统版本信息"
   let popmenu[4,2] = "2.系统开发环境"
   let popmenu[4,3] = "3.系统操作指南"
   let popmenu[4,4] = "4.信息反馈简介"
   let popmenu[4,5] = "E.退        出"

   let hlpmenu[4,1] = "显示柜面处理系统的相关版本信息"
   let hlpmenu[4,2] = "显示柜面处理系统的开发及应用环境"
   let hlpmenu[4,3] = "显示柜面处理系统的各种操作指南"
   let hlpmenu[4,4] = "显示本系统的信息反馈方式或获取相关资料"
   let hlpmenu[4,5] = "退出柜面处理系统"

   let winopened = "N"
end function

#####################################################
# 函数名称: dispmenu()                              #
# 作    用: 显示菜单函数                            #
# 参    数: oper: = 0 显示菜单和选择                #
#####################################################
function dispmenu(oper)
define oper smallint
define i,j,k smallint
define answ char(1)
define cstart smallint
while true
                current window is mtwin
                let p_today = today using " mmm dd,yyyy "
               #display p_today at 1,66 attribute(reverse,underline)
                display "作者: 大梦 " at 1,66 attribute(reverse,underline)
for i = 1 to 4
    let j = (i-1) * 16 + 1
    display thrmenu[i] at 1,j
end for
let j = (menuno-1) * 16 + 1
display thrmenu[menuno] at 1,j attribute(reverse)
if currow <> 0 then 
   let cstart = (menuno-1)*16 + 3
   let i = poprowno[menuno] + 1
   if winopened = "N" then
      open window popwin at rstart, cstart with i rows , 14 columns attribute (border,prompt line i)
      let winopened = "Y"
   else
      current window is popwin
   end if
for i = 1 to poprowno[menuno]
    display popmenu[menuno,i] at i,1
end for
display popmenu[menuno,currow] at currow,1 attribute(reverse)
                
end if
if oper = 1 then
   return
end if
while true
prompt "   请 选 择:" for char answ
on key (up)
                                if currow = 1 then
   display popmenu[menuno,currow] at currow,1
                                   let currow = poprowno[menuno]
                                else
   if currow <> 1 and currow <> 0 then
      display popmenu[menuno,currow] at currow,1
      let currow = currow - 1
   end if
end if
                display popmenu[menuno,currow] at currow,1 attribute(reverse)
                
on key (down)
                                if currow = poprowno[menuno] then
   display popmenu[menuno,currow] at currow,1
                                   let currow = 1
                                else
   if currow <> poprowno[menuno] and currow <> 0 then
      display popmenu[menuno,currow] at currow,1
      let currow = currow + 1
   end if
end if
display popmenu[menuno,currow] at currow,1 attribute(reverse)
                

on key (left)
if winopened = "Y" then
   close window popwin
   let winopened = "N"
end if
if menuno > 1 then
let menuno = menuno - 1
else
let menuno = maxmenuno
end if
if poprowno[menuno] <> 0 then
let currow = 1
else
let currow = 0
end if
exit while

on key (tab,right)
if winopened = "Y" then
   close window popwin
   let winopened = "N"
end if
if menuno < maxmenuno then
   let menuno = menuno + 1
else
   let menuno = 1
end if
if poprowno[menuno] <> 0 then
   let currow = 1
else
   let currow = 0
end if
exit while

on key (control-z,return)
return  
end prompt
if answ matches "[Ee]" then
   let currow = poprowno[menuno]
   return
end if
case 
     when answ matches "[Aa]"
  if winopened = "Y" then
     close window popwin
     let winopened = "N"
    end if
  let menuno = 1
  exit while
     when answ matches "[Bb]"
  if winopened = "Y" then
     close window popwin
     let winopened = "N"
    end if
  let menuno = 2
  exit while
     when answ matches "[Cc]"
  if winopened = "Y" then
     close window popwin
     let winopened = "N"
    end if
  let menuno = 3
  exit while
     when answ matches "[Dd]"
  if winopened = "Y" then
     close window popwin
     let winopened = "N"
    end if
  let menuno = 4
  exit while
end case
if answ >= poprowno[menuno] or answ is null or answ < 1 then
   continue while
else
   if answ < poprowno[menuno] then
      let currow = answ
      return
   end if
end if
end while
end while
end function


 geekchi 回复于:2002-12-20 13:59:26
好东西,有帮助

 sdccf 回复于:2002-12-20 21:05:35
试了一下,挺不错的。

 背包 回复于:2002-12-20 21:20:10
有点wkl仁兄的风范,多么希望在这里能多看点这样的贴子!

 [中国信合] 回复于:2002-12-21 00:55:49
大梦谁先觉,平生我自知。
大梦的硬盘盘净是些好东西。

 macrosun 回复于:2002-12-21 10:47:54
是不是从cbps里抽出来的呀,西西

 大梦 回复于:2002-12-21 16:35:23
不过自己还是改了不少!

 牵手 回复于:2003-06-15 18:08:38
很强;
如果再加上数据库,用户可以自行维护菜单就更好了

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网