0

我需要提取用户将键入的密码,但不希望字符显示在屏幕上。你能帮我在 REXX 中实现这一点吗?

4

2 回答 2

6

由于您在 ISPF 中运行,您可以定义一个面板以驻留在 ISPPLIB 连接中,并带有一个不显示的密码字段。

于 2013-08-06T22:21:51.327 回答
6

作为@cshneid,使用 ISPF 面板(并将其放在 ISPPLIB 中)。这是一个示例面板,其中包含取自ISPF 手册的密码字段(请参阅 $ 属性) 。

)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函数将额外的 PDS(临时)添加到 ISPF 。从历史上看,这些 PDS 的 RECFM=FB 并且 LRECL 为 80。这已经改变。您应该检查现有 ispplib PDS 的属性并使用类似的属性。

要显示面板,它需要存储在 ISPPLIB(或使用LIBDEF分配给 ispplib 的 PDS )中。

如果您将面板存储在 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 */

编辑宏指南有一个服务列表(还有返回码)

如果将面板分配到面板库中,也可以使用 ispf 测试模式(ispf 7.1 ???自从我使用 Mainframe 已经有一段时间了)来测试它

于 2013-08-07T00:58:11.313 回答