查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
拉姆湖
新的用户
.jpg)
已加入:2011年1月6日 帖子:53 地点:钦奈
|
|
|
|
大家好,
美好的一天,热烈的问候!!
我正在学习如何通过REXX对PANEL进行编码,现在我正试图从PANEL中获取信息,但是信息无法正确获取,我的问题如下。
1.我设计了带有一个输入选项的主面板
输入您的选项==>_
一个。 1 ==>Sub-Panel1
b。 2 ==>Sub-Panel2
C。 3 ==>Sub-Panel3
如果USER输入1作为输入,则用户将被路由到子面板1-2 /> 子面板2 / 3 --> 子面板3
相同的以下设计。
码: |
)ATTR
% TYPE(TEXT) INTENS(HIGH) COLOR(TURQ)
@ TYPE(TEXT) INTENS(HIGH) COLOR(GREEN) SKIP(ON)
+ TYPE(TEXT) INTENS(LOW) SKIP(ON) COLOR(RED)
$ TYPE(TEXT) INTENS(HIGH) COLOR(RED)
_ TYPE(INPUT) INTENS(HIGH) JUST(LEFT) COLOR(TURQ)
)BODY EXPAND(\\)
+ @ENTER您的选项%===>_ZCMD
+
+
+ @1.ABC (SUB-PANEL1)
+
+ @2.BCD(SUB-PANEL2)
+
+ @3.CDE(SUB-PANEL3)
+
+
+ PRESS%PF3 +返回。
)INIT
.ZVARS= '(INPUT)'
/)REINIT
)PROC
&ZSEL=TRANS(TRUNC(&INPUT,'.')
1,'PANEL(sub-panel1)'
2,'PANEL(sub-panel2)'
3,'PANEL(sub-panel3)'
' ',' '
*,'?' )
)END
|
我正在使用REXX程序执行上述设计如下
码: |
"PROFILE NOPREFIX"
"ISPEXEC LIBDEF ISPPLIB数据集ID(“ USER.TEST.SOURCE.PANEL”)"
"ISPEXEC LIBDEF ISPSLIB数据集ID('USER.TEST.SOURCE')"
"ISPEXEC ADDPOP"
"ISPEXEC显示面板(PANEL1)"
"ISPEXEC显示面板(SUBPL1)"
"ISPEXEC显示面板(SUBPL2)"
"ISPEXEC显示面板(SUBPL3)"
"ISPEXEC REMPOP"
ARG 输入
|
尝试执行主面板时出现以下错误
码: |
ISPP241
Panel 'PANEL1' error
.ZVARS字段名称的数量不等于"Z" in/out fields.
当前对话框声明:
DISPLAY PANEL(PANEL1)
|
请帮助我确定我在上面犯的错误。
非常感谢您的宝贵时间。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
在我看来,这则讯息很能自我解释
在面板中,您将字段编码为 Z 当字段大小不足以包含实际字段/变量名称时
在选择面板中很少出现
(当然不是在初学者的水平上)
在这种情况下,请摆脱ZVARS的东西 |
|
回到顶部 |
|
 |
拉姆湖
新的用户
.jpg)
已加入:2011年1月6日 帖子:53 地点:钦奈
|
|
|
|
嗨,恩里科,
您能否建议我,从面板获取INPUT并将INPUT传递给REXX程序的最佳方法是什么,以便我可以尝试使其按我的要求工作。
感谢您的时间和帮助。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
回到顶部 |
|
 |
佩德罗
全球主持人

已加入:2006年9月1日 帖子:2214 地点:硅谷
|
|
回到顶部 |
|
 |
MFKid
新的用户

已加入:2013年11月20日 帖子:91 地点:印度
|
|
|
|
拉姆湖,要显示主面板没有错误,您需要做的就是删除INIT,REINIT中的所有内容&PROC部分(包括标题),然后将_ZCMD更新为_INPUT。
稍后在REXX中,您可以将IF条件语句与INPUT变量一起使用以显示子面板。 (例如:如果Input = 1,则....) |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
有任何理由建议TS实施自己的面板导航基础架构
ISPF肯定会以更好的方式做到这一点? |
|
回到顶部 |
|
 |
拉姆湖
新的用户
.jpg)
已加入:2011年1月6日 帖子:53 地点:钦奈
|
|
|
|
嗨,MFKID,
感谢您对我的查询的建议!
我已使用以下逻辑满足我的要求。
面板设计:
码: |
)INIT
&INPT = ' '
)REINIT
REFRESH(*)
)PROC
VPUT(INPT) SHARED
VER(&INPT,NB,RANGE,1,3)
|
REXX代码:
码: |
地址ISPEXEC"VPUT (INPT) SHARED"
IF INPT = '1' THEN
DO
"ISPEXEC显示面板(SUBPAN1)"
END
IF INPT = '2' THEN
DO
"ISPEXEC显示面板(SUBPAN2)"
END
IF INPT = '3' THEN
DO
"ISPEXEC显示面板(SUBPAN3)"
END
出口
|
上面的代码完全符合我对PANELS的要求。
请让我知道是否还有其他方法可以达到上述要求,因为我无法使用ZVARS取得成功。
感谢您的时间和帮助吨! |
|
回到顶部 |
|
 |
MFKid
新的用户

已加入:2013年11月20日 帖子:91 地点:印度
|
|
|
|
很好。我想您无需在面板程序或REXX中编码“ VPUT(INPT)SHARED”。一旦在面板中定义了输入变量(_INPT),便可以从rexx直接访问该变量。 |
|
回到顶部 |
|
 |
尼克·克劳斯顿
全球主持人
加入时间:2007年5月10日 帖子:2455 地点:英国汉普郡
|
|
|
|
首先,就像Enrico所说的那样,无需rexx代码就可以完成所有操作。 ISPF可以处理所有问题-查看ISP @ PRIM的代码或查看手册。唯一需要的Z变量是ZCMD。
第二:所有这些IF是什么?为什么不使用SELECT或IF / THEN / ELSE?但是最好不要显示任何代码,除非显示选择面板。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
引用: |
请让我知道是否还有其他方法可以达到上述要求,因为我无法使用ZVARS取得成功。
|
另一种方法是正确的方法...
让ISPF处理导航
|
|
回到顶部 |
|
 |
MFKid
新的用户

已加入:2013年11月20日 帖子:91 地点:印度
|
|
|
|
拉姆湖(ibmmainframeforum.com)可能是发布与面板/ rexx设计上的基本/入门级问题相关的查询的更好的地方。 |
|
回到顶部 |
|
 |
|