Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1083215
  • 博文数量: 106
  • 博客积分: 9093
  • 博客等级: 中将
  • 技术积分: 2770
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-01 17:22
文章分类

全部博文(106)

文章存档

2014年(1)

2012年(29)

2011年(32)

2010年(20)

2008年(24)

分类:

2011-07-26 16:58:51

定义panel有三种方法
第一种:DTL,是Dialog Tag Language简称。一本书专门介绍这个的。叫《Dialog Tag Language Guide and Reference》
第二种:使用DTL和panel definition statements。
第三种:只使用panel definition statements

现在目前只会点第三种用法,有本书叫《Dialog Developer's Guide and Reference》里面有说明。

panel definition statements分好多个section,如)panel,)attr,)body,)proc,)end等等。

)panel一般常用的是定义这个panel使用什么function key。即声明KEYLIST。我的博文中有一些例子。

)attr
一般定义一些panel的属性,如text文本什么颜色,文本大小写,输入输出项什么样式的。如下面的例子
)ATTR                                                       
* TYPE(TEXT)   INTENS(HIGH) COLOR(BLUE)  CAPS(OFF)          
# TYPE(TEXT)   INTENS(HIGH) COLOR(WHITE) CAPS(OFF)          
@ TYPE(TEXT)   INTENS(LOW)  COLOR(GREEN)                    
_ TYPE(INPUT)  INTENS(HIGH) COLOR(WHITE) PAD('_') CAPS(OFF) 
{ TYPE(OUTPUT) INTENS(LOW)  COLOR(WHITE) CAPS(OFF)          

)body
是定义在panel上你要显示什么。如果不想显示command line可以使用如下代码
)BODY CMD()    这样command line就不显示了

)proc
在这个section中可以定义一些verify,get和put一些变量值等等,下面是个简单的例子
)PROC                                                               
 ver(&DBname,nb)                                                    
 ver(&ARVdate,nb,STDDATE)                                           
 &KEYNUM = .PFKEY                                                   
 vput(DBname ARVdate) SHARED                                     
 IF (&KEYNUM = 'PF03')                                              
    &NOMORE  = 'Y'                                                  
 VGET(Info)
                                                        
)end表明panel定义完成。呵呵

下面是个简单的完整的例子
)PANEL KEYLIST(KEYPLAX,TRA,SHARED)
)ATTR
* TYPE(TEXT)   INTENS(HIGH) COLOR(BLUE)  CAPS(OFF)
# TYPE(TEXT)   INTENS(HIGH) COLOR(WHITE) CAPS(OFF)
@ TYPE(TEXT)   INTENS(LOW)  COLOR(GREEN)
_ TYPE(INPUT)  INTENS(HIGH) COLOR(WHITE) PAD('_') CAPS(OFF)
{ TYPE(OUTPUT) INTENS(LOW)  COLOR(WHITE) CAPS(OFF)
)BODY CMD()
*                          Database Archiving Tool
*
*         @This utility will archive data in a database to GDGs
*
* Database/HLQ name:_DBname        *Date for Archiving:_ARVdate   #(yyyy/mm/dd)
*
* Table Name 1:_TBLname1      +
*
* Table Name 2:_TBLname2      +
*
* Table Name 3:_TBLname3      +
*
* Table Name 4:_TBLname4      +
*
* Table Name 5:_TBLname5      +
*
* Table Name 6:_TBLname6      +
*
*
* {INFO
)PROC
 ver(&DBname,nb)
 ver(&ARVdate,nb,STDDATE)
 &KEYNUM = .PFKEY
 vput(DBname ARVdate TBLname1 TBLname1 TBLname2 TBLname3 TBLname4 +
      TBLname5 TBLname6) SHARED
 IF (&KEYNUM = 'PF03')
    &NOMORE  = 'Y'
 VGET(INFO)
)END

panel效果如下
                          Database Archiving Tool                             
                                                                              
          This utility will archive data in a database to GDGs                
                                                                              
 Database/HLQ name: ______________ Date for Archiving: __________ (yyyy/mm/dd)
                                                                              
 Table Name 1: ______________                                                 
                                                                              
 Table Name 2: ______________                                                 
                                                                              
 Table Name 3: ______________                                                 
                                                                              
 Table Name 4: ______________                                                 
                                                                              
 Table Name 5: ______________                                                 
                                                                              
 Table Name 6: ______________                                                 
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
 F2=Split  F3=Exit   F9=Swap                     

在做panel的时候如何验证panel的正确性那。答案是在ispf的主菜单上有一个专门的工具,就是Option 7  Dialog Test。

如何使用呢?!
进入7  Dialog Test 后显示如下pop panel
Esssssssssssssssssssssssssssss Dialog Test ssssssssssssssssssssssssssssssN
e   Menu  Utilities  View  Help                                          e
e sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss  e
e                         Primary Option Panel                           e
e Option ===>                                                            e
e                                                                        e
e 1 Functions       Invoke dialog functions/selection panel              e
e 2 Panels          Display panels                                       e
e 3 Variables       Display/set variable information                     e
e 4 Tables          Display/modify table information                     e
e 5 Log             Browse ISPF log                                      e
e 6 Dialog Services Invoke dialog services                               e
e 7 Traces          Specify trace definitions                            e
e 8 Breakpoints     Specify breakpoint definitions                       e
e T Tutorial        Display information about Dialog Test                e
e X Exit            Terminate dialog testing                             e
e  F1=Help       F2=Split      F3=Exit       F4=Expand     F5=Rfind      e
e  F6=Resize     F7=Backward   F8=Forward    F9=Swap      F10=Actions    e
DssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssM

要想使用需要设置一下不然的话他就会使用默认值来找你的panel。
选择6 Dialog Services进入设置,执行下面的语句,当你测试panel的时候就会到你指定的dataset去找了。如
LIBDEF ISPPLIB DATASET ID('c210408.rexx.exec') STACK
他就会去C210408.REXX.EXEC这个dataset去找你的panel了。

返回Dialog Test。选择2 Panels测试你的panel,在如下画面中输入你要测试的panel就可以进行测试了
如上面的例子。我的panel叫P@30610
Esssssssssssssssssssss Dialog Test sssssssssssssssssssssN
e   Menu  Save  Utilities  Help                         e
e ssssssssssssssssssssssssssssssssssssssssssssssssssss  e
e                    Display Panel                      e
e Command ===>                                          e
e                                                       e
e Panel name  . . . . . . . P@30610                     e
e Message id  . . . . . . .              (Optional)     e
e Cursor field  . . . . . .              (Optional)     e
e Cursor position . . . . .              (Optional)     e
e Message pop-up field  . .              (Optional)     e
e                                                       e
e Enter "/" to select option                            e
e    Display in window                                  e
e                                                       e
e                                                       e
e  F1=Help      F2=Split     F3=Exit      F4=Expand     e
e  F5=Rfind     F6=Resize    F7=Backward  F8=Forward    e
DsssssssssssssssssssssssssssssssssssssssssssssssssssssssM

正确的话,panel就会显示为上面提到的。

现在只是了解一些皮毛。希望大家一起讨论一下。
阅读(1683) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~