0

我正在尝试使用 Rational Series 编译这段 CL 代码,但一直出错。

这是我的 CL 代码:

         PGM

         DCLF       FILE(LAB4DF)

         SNDRCVF    RCDFMT(RECORD1) /* send, recieve file */
         DOWHILE    (&IN03 = '0')
            SELECT
               WHEN       (&USERINPUT = '1' *OR &USERINPUT = '01') CALLSUBR   OPTION1
               OTHERWISE  DO
                  *IN03      = '1'
               ENDDO
            ENDSELECT
         ENDDO

         SUBR       OPTION1
            DSPLIBL
         ENDSUBR

         ENDPGM

这是我的 DSPF 代码

 A          R RECORD1
 A                                  1 38'LAB 4'
 A                                  3  3'Please select one of the following-
 A                                       options:'
 A                                  6 11'3.  Maximum Invalid Signon Attempt-
 A                                      s allowed'
 A                                  8 11'5.  Run Instructor''s Insurance Pr-
 A                                      ogram'
 A                                  5 11'2.  Signed on User''s Message Queu-
 A                                      e'
 A                                  1  3'Yathavan Parameshwaran'
 A                                  7 11'4.  Initial number of active jobs -
 A                                      for storage allocation'
 A                                  4 11'1.  Previous sign on by signed on -
 A                                      user'
 A                                 14 11'F3 = Exit'
 A                                 14 31'F21 = Command Line'
 A                                  2 70TIME
 A                                  1 72DATE
 A                                  9 11'Option: '
 A            USERINPUT      2   B  9 19
 A  91                                  DSPATR(RI)
 A  92                                  DSPATR(PC)
 A            MSGTXT1       70   O 11 11
 A            MSGTXT2       70   O 12 11 

我的 CL 代码或 DSPF 代码有问题吗?

4

2 回答 2

3

你忘了说你遇到了什么错误。将有关错误消息的所有信息放入您的问题中总是很重要的。

有两个错误。

  • &IN03 未定义
  • 您对 *IN03 的分配应该是 &IN03,但这不是您在 CLP 中进行分配的方式

如果您希望能够按 F3,则必须在“功能”中为记录格式编写类似 CA03(03) 的代码。

要在 CL 中分配一个变量,代码

CHGVAR name value
于 2019-11-04T11:55:03.060 回答
-1

查看此处的文档,我怀疑您需要像这样添加RCDFMTDCLF规范中:

     DCLF       FILE(LAB4DF) RCDFMT(RECORD1)

     SNDRCVF    RCDFMT(RECORD1) /* send, recieve file */

如果您的显示文件中确实只有 1 种记录格式,那么您也可以RCDFMT从两个命令中省略 ,如下所示:

     DCLF       FILE(LAB4DF)

     SNDRCVF    /* send, recieve file */
于 2019-11-04T06:23:11.810 回答