定义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就会显示为上面提到的。
现在只是了解一些皮毛。希望大家一起讨论一下。
阅读(1647) | 评论(0) | 转发(1) |