CLLE SNDRCVF command not allowed

281 Views Asked by At

I am trying to compile this piece of CL code using Rational Series but keep getting error.

This is my CL code:

         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

And this is my DSPF code

 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 

Is there a problem with my CL code or DSPF code?

2

There are 2 best solutions below

1
On BEST ANSWER

You forgot to say what error you were getting. It's always important to put all the information about error messages into your questions.

There are two errors.

  • &IN03 is not defined
  • Your assignment to *IN03 should be to &IN03, but that's not how you do an assignment in CLP

If you want to be able to press F3, you have to code something like CA03(03) in the "Functions" for the record format.

To assign a variable in CL, code

CHGVAR name value
1
On

Looking at the documentation here, I suspect you need to add RCDFMT to your DCLF spec like so:

     DCLF       FILE(LAB4DF) RCDFMT(RECORD1)

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

If you really do only have 1 record format in your display file, then you can also omit the RCDFMT from both commands like so:

     DCLF       FILE(LAB4DF)

     SNDRCVF    /* send, recieve file */