BrianGarland / vscode-rpgfree

Visual Studio Code extension to convert fixed format RPGLE to free format
MIT License
18 stars 11 forks source link

Fixed format call with plist does not convert properly #69

Open as400rcool opened 1 year ago

as400rcool commented 1 year ago

This is original code: ? ? CALL USER DEFINED ROUTINE TO XREF TO A FUND/FUNCTION/ACCOUNT# ? C ARGLSR BEGSR C AGL@1 PLIST C PARM P@MODE MODE X=SHUTDOWN C PARM P@CMD COMMAND TO EXECUTE C PARM P@PYT PAYER TYPE C PARM P@PYR PAYER CODE C PARM P@PGM PROGRAM C PARM P@DPT DEPT C PARM P@LOC LOCATION C PARM P@CLI CLIENT# C PARM P@STF STAFF# C PARM P@SRV SERVICE C PARM P@FND RESULT: FUND (ALPH C PARM P@FNC RESULT: FUNCTION "" C PARM P@ACC RESULT: ACCOUNT ? C EVAL P@FND = BLANKS C EVAL P@FNC = BLANKS C EVAL P@ACC = ZEROS ? C IF ARGLFF <> BLANKS C AND ARO(24) = 'Y' ? C MOVE IN91 S@@91 ? C CALL ARGLFF AGL@1 91 ? C IF IN91 = ON C MOVE BLANKS ARGLFF C ENDIF ? C MOVE S@@91 IN91 ?* C ENDIF C ENDSR

this is how it converts

    //   CALL USER DEFINED ROUTINE TO XREF TO A FUND/FUNCTION/ACCOUNT#

   BEGSR ARGLSR;

     P@FND = *BLANKS;
     P@FNC = *BLANKS;
     P@ACC = *ZEROS;

     IF ARGLFF <> *BLANKS AND ARO(24) = 'Y';

 C                   MOVE      *IN91         S@@91

       RGLF(P@MODE:P@CMD:P@PYT:P@PYR:P@PGM:P@DPT:P@LOC:P@CLI:P@STF:P@SRV:P@FND:P@FNC:P@ACC);

       IF *IN91 = *ON;
 C                   MOVE      *BLANKS       ARGLFF
       ENDIF;

 C                   MOVE      S@@91         *IN91

     ENDIF;
   ENDSR;

Notice the call is truncated since it has a long parm list?