Use CL procedures

This gives an overview of the types of operations performed using CL procedures

In general, you can:
  • Use variables, logic control commands, expressions, and built-in functions to manipulate and process data within a CL procedure:
    PGM
    DCL &C *LGL
    DCL &A *DEC VALUE(22)
    DCL &B *CHAR VALUE(ABCDE)
    •
    •
    •
    CHGVAR &A (&A + 30)
    •
    •
    •
    IF (&A < 50) THEN(CHGVAR &C '1')
    •
    DSPLIB ('Q' ∨∨ &B)
    •
    IF (%SST(&B 5 1)=E) THEN(CHGVAR &A 12)
    •
    •
    •
    ENDPGM
  • Use a system value as a variable in a CL procedure.
    Use a system value as a variable in a CL procedure.
  • Use a job attribute as a variable in a CL procedure.
    Use a job attribute as a variable in a CL procedure.
  • Send and receive data to and from a display file with a CL procedure.
    Send and receive data to and from a display file with a CL procedure.
  • Create a CL procedure to monitor error messages for a job, and take corrective action if necessary.
            PGM
     
            MONMSG MSGID(CPF0001) EXEC(GOTO ERROR)
            CALL PROGA
            CALL PROGB
            RETURN
    ERROR:  SNDPGMMSG MSG('A CALL command failed') MSGTYPE(*ESCAPE)
            ENDPGM
  • Control processing among procedures and programs and pass parameters from a CL procedure to other procedures or programs to override files.

Control processing among procedures and programs and pass parameters from a CL procedure to other procedures or programs to override files.

Used as a controlling procedure, a CL procedure can call procedures written in other languages. The preceding illustration shows how control can be passed between a CL procedure and RPG IV* and ILE COBOL procedures in an application. To use the application, a workstation user would request program A, which controls the entire application. The illustration shows a single bound program (PGMA) that is called using the CALL command with PGMA. PGMA consists of:


The following illustration shows how control can be passed between a CL procedure and RPG IV* and ILE COBOL procedures in an application.

The procedures can be created as indicated in the following example. You can enter source for procedures in separate source members.

    CRTCLMOD PGMA
    CRTRPGMOD PGMB
    CRTRPGMOD PGMC
    CRTCLMOD PGMD
    CRTCBLMOD PGME
    CRTCLMOD PGMF
    CRTPGM PGM(PGMA) +
           MODULE(PGMA PGMB PGMC PGMD PGME PGMF) +
           ENTMOD(*FIRST)