我需要提取用户将输入的密码,但不需要 要在屏幕上显示的字符。你能帮我在REXX中实现这个目标。
答案 0 :(得分:6)
由于您在ISPF中运行,因此您可以使用不显示的密码字段定义驻留在ISPPLIB并置中的面板。
答案 1 :(得分:6)
作为@cshneid,使用ISPF Panel(并将其放在ISPPLIB中)。 以下是一个示例面板,其中包含取自ISPF Manual。
的密码字段(请参阅$ attribute))ATTR
* TYPE(TEXT) INTENS(HIGH) COLOR(WHITE) CAPS(OFF)
# TYPE(TEXT) INTENS(HIGH) COLOR(BLUE) CAPS(OFF)
@ TYPE(TEXT) INTENS(LOW) COLOR(BLUE) HILITE(REVERSE)
? TYPE(TEXT) INTENS(LOW) COLOR(TURQ) CAPS(OFF)
_ TYPE(INPUT) INTENS(HIGH) COLOR(YELLOW)
$ TYPE(INPUT) INTENS(NON)
ø TYPE(OUTPUT) INTENS(LOW) COLOR(TURQ) CAPS(OFF)
)BODY
* --------------------------@EMPLOYEE RECORD*--------------------------
# SERIAL NO.*===>_SERNUM +&rbl %
#
#
# NAME:?&LAST, &FIRST
#
# ADDRESS:øADDR1 +
# øADDR2 +
# øADDR3 +
# øADDR4 +
#
# POSITION:øPOSIT +
#
# YEARS EXPERIENCE:øYRS+
#
# SALARY:øSALARY + # PASSWORD*===>$PSW +
# (Password is required for salary)
#
#
* Enter#END*command to terminate application.
#
)PROC
VER(&SERNUM,NB,NUM)
.ATTR(.CURSOR) = 'COLOR(RED) HILITE(BLINK)'
)END
请注意我没有可供检查的大型机,因此可能存在一些语法错误:
显示面板的Rexx命令:
Address ispexec display panel(panelName)
如果您需要将DSN添加到ISPPLIB
"ispexec libdef ispplib dataset id(panel-dsn)"
ISPF使用一系列文件(ispplib,ispmlib,isptlib等)来存储它使用的详细信息。您可以使用rexx / clist程序中的 LIBDEF 功能向ISPF添加额外的PDS(临时)。从历史上看,这些PDS的RECFM = FB且LRECL为80.这已发生变化。您应该检查现有ispplib PDS的属性并使用类似的属性。
要显示面板,需要将其存储在ISPPLIB(或分配给的PDS)中 ispplib使用 LIBDEF )。
如果您将面板存储在pds my.panels(test)中并将my.panels分配给ISPPLIB,则rexx为:
/* rexx */
address ispexec 'display panel(test)'
say rc /* show return code, will indicate possible errors */
如果您使用 LIBDEF ,那么rexx就是
/* rexx */
address ispexec "libdef ispplib dataset id(panel-dsn)"
say rc
address ispexec 'display panel(test)'
say rc /* show return code, will indicate possible errors */
Edit Macro guide有一个服务列表(还有返回码)
如果你将面板分配到面板库,你也可以使用ispf测试模式(ispf 7.1 ???我使用大型机已经有一段时间了)测试它