我正试图使用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代码有问题吗?
你忘了说你得到了什么错误。把所有关于错误消息的信息都放进你的问题中总是很重要的。
有两个错误。
- &IN03未定义
- 您对*IN03的分配应该是对&IN03,但这不是您在CLP中执行任务的方式
如果您想按F3,您必须在"函数"中为记录格式编写类似CA03(03(的代码。
要在CL中分配变量,请对进行编码
CHGVAR name value
查看此处的文档,我怀疑您需要将RCDFMT
添加到DCLF
规范中,如下所示:
DCLF FILE(LAB4DF) RCDFMT(RECORD1)
SNDRCVF RCDFMT(RECORD1) /* send, recieve file */
如果你的显示文件中确实只有一个记录格式,那么你也可以从两个命令中省略RCDFMT
,比如:
DCLF FILE(LAB4DF)
SNDRCVF /* send, recieve file */