IBM Support

Retrieving the Job Date in a COBOL Program

Troubleshooting


Problem

COBOL does not currently have a syntax to retrieve the job date. However, COBOL programs can call the system API QWDRJOBD to retrieve the Job Description which contains the job date.

Resolving The Problem

COBOL does not currently have a syntax to retrieve the job date. However, COBOL programs can call the system API QWDRJOBD to retrieve the Job Description which contains the job date.

Following is an example in the API Reference of how to code this. This example works for ILE COBOL and OPM COBOL.

-----------------------------------------------------------------------------------------
Example source WDRJOBD
           05  JOB-DESCRIPTION-NAME                PIC  X(00010).
           05  JOB-DESCRIPTION-LIB-NAME            PIC  X(00010).
           05  USER-NAME                           PIC  X(00010).
           05  JOB-DATE                            PIC  X(00008).
           05  JOB-SWITCHES                        PIC  X(00008).
           05  JOB-QUEUE-NAME                      PIC  X(00010).
           05  JOB-QUEUE-LIB-NAME                  PIC  X(00010).
           05  JOB-QUEUE-PRIORITY                  PIC  X(00002).
           05  HOLD-JOB-QUEUE                      PIC  X(00010).
           05  OUTPUT-QUEUE-NAME                   PIC  X(00010).
           05  OUTPUT-QUEUE-LIB-NAME               PIC  X(00010).
           05  OUTPUT-QUEUE-PRIORITY               PIC  X(00002).
           05  PRINTER-DEVICE-NAME                 PIC  X(00010).
           05  PRINT-TEXT                          PIC  X(00030).
           05  SYNTAX-CHECK-SEVERITY               PIC S9(00009) BINARY.
           05  END-SEVERITY                        PIC S9(00009) BINARY.
           05  MESSAGE-LOG-SEVERITY                PIC S9(00009) BINARY.
           05  MESSAGE-LOG-LEVEL                   PIC  X(00001).
           05  MESSAGE-LOG-TEXT                    PIC  X(00010).
           05  LOG-CL-PROGRAMS                     PIC  X(00010).
           05  INQUIRY-MESSAGE-REPLY               PIC  X(00010).
           05  DEVICE-RECOVERY-ACTION              PIC  X(00013).
           05  TIME-SLICE-END-POOL                 PIC  X(00010).
           05  ACCOUNTING-CODE                     PIC  X(00015).
           05  ROUTING-DATA                        PIC  X(00080).
           05  TEXT-DESCRIPTION                    PIC  X(00050).
           05  RESERVED                            PIC  X(00001).
           05  OFFSET-INITIAL-LIB-LIST             PIC S9(00009) BINARY.     (1)
           05  NUMBER-LIBS-IN-LIB-LIST             PIC S9(00009) BINARY.     (2)
           05  OFFSET-REQUEST-DATA                 PIC S9(00009) BINARY.
           05  LENGTH-REQUEST-DATA                 PIC S9(00009) BINARY.
           05  JOB-MESSAGE-QUEUE-MAX-SIZE          PIC S9(00009) BINARY.
           05  JOB-MESSAGE-QUEUE-FULL-ACTION       PIC  X(00010).
      *    05  RESERVED2                           PIC  X(00001).
      *
      *                             Varying length
      *    05  INITIAL-LIB-LIST                    PIC  X(00011).
      *
      *
      *                             Varying length
      *    05  REQUEST-DATA                        PIC  X(00001).
      *
      *                             Varying length
      *
      * Command String Data Structure
      *
       01  COMMAND-STRING.
           05  TEXT1 PIC X(22) VALUE 'SNDMSG MSG(''LIBRARY- '.
           05  LIB   PIC X(10).
           05  TEXT2 PIC X(15) VALUE ''') TOUSR(QPGMR)'.
      *
       01  COMMAND-LENGTH PIC S9(10)V99999 COMP-3.
       01  RECEIVER-LENGTH PIC S9(9) COMP-4.
       01  FORMAT-NAME PIC X(8) VALUE 'JOBD0100'.
       01  QCMDEXC PIC X(10) VALUE 'QCMDEXC'.
       01  X PIC S9(9) BINARY.
      *
      * Job Description and Library Name Structure
      *
       01  JOBD-AND-LIB-NAME.
           05  JOB-DESC PIC X(10).
           05  JOB-DESC-LIB PIC X(10).
      *
       LINKAGE SECTION.
      *
      * Two Parameters are being passed into this program.
      *
       01  JOBD PIC X(10).
       01  JOBDL PIC X(10).
      *
       PROCEDURE DIVISION USING JOBD, JOBDL.
       MAIN-LINE.
      *
      * Beginning of Mainline
      *
      * Move the two parameters passed into JOB-DESC and JOB-DESC-LIB.
      *
           MOVE JOBD TO JOB-DESC.
           MOVE JOBDL TO JOB-DESC-LIB.
      *
      * Error Code Parameter is set to 100.
      *
      *     MOVE 100 TO BYTES-PROVIDED.
      *
      * Receiver Length Set to 5000.
      *
           MOVE 5000 TO RECEIVER-LENGTH.
      *
      * Call the QWDRJOBD API.
      *
           CALL QWDRJOBD USING RECEIVER-VARIABLE, RECEIVER-LENGTH,
                   FORMAT-NAME, JOBD-AND-LIB-NAME, QUS-EC.
      *
      * See if any errors were returned in the error code parameter.
      *
           PERFORM ERRCOD.
      *
      * Add one to the Initial library list offset because COBOL is a
      * Base 1 language.
      *
           DISPLAY  JOB-DATE.
           MOVE OFFSET-INITIAL-LIB-LIST TO X.
           ADD 1 TO X.
           MOVE 47 TO COMMAND-LENGTH.
      *
      * Let's tell QGPMR the library value was for this job.
      *
           PERFORM NUMBER-LIBS-IN-LIB-LIST TIMES
                   MOVE RECEIVER-VARIABLE(X:10) TO LIB,
                   CALL QCMDEXC USING COMMAND-STRING, COMMAND-LENGTH,
                   ADD 11 TO X,
                   PERFORM RECLEN,
                   END-PERFORM.

      *
           STOP RUN.
      *
      * End of Mainline
      *
      *
      * Subroutine to handle errors returned in the error code
      * parameter.
      *
       ERRCOD.
      *
           IF BYTES-AVAILABLE OF QUS-EC > 0
      *
      * Process errors returned from the API.
      *
             STOP RUN.
      *
      * Subroutine to check to see if there is enough room in the
      * receiver variable for the next library in the list.
      *
       RECLEN.
      *
             IF (X + 10) >= RECEIVER-LENGTH
               STOP RUN.
 

Compile using CRTBNDCBL PGM(<yourlib>/WDRJOBD) SRCFILE(<yourlib>/QCBLLESRC)
Call from command line. The sample requires two parameters to be passed, the jobd description and the library for the jobd.
The sample will send a message to userid QPGMR.
To demonstrate this sample the TOSHJTB jobd was changed to use a hard coded job date 05/10/2025
Job description:   TOSHJTB        Library:   QGPL               
                                                                
User profile . . . . . . . . . . . . . . . . . . :   *RQD       
CL syntax check  . . . . . . . . . . . . . . . . :   *NOCHK     
Hold on job queue  . . . . . . . . . . . . . . . :   *NO        
End severity . . . . . . . . . . . . . . . . . . :   30         
Job date . . . . . . . . . . . . . . . . . . . . :   05/10/2025 
Job switches . . . . . . . . . . . . . . . . . . :   00000000   
Inquiry message reply  . . . . . . . . . . . . . :   *RQD       
Job priority (on job queue)  . . . . . . . . . . :   5          
Job queue  . . . . . . . . . . . . . . . . . . . :   QBATCH     
  Library  . . . . . . . . . . . . . . . . . . . :     QGPL     
Output priority (on output queue)  . . . . . . . :   5          
Printer device . . . . . . . . . . . . . . . . . :   *USRPRF    
Output queue . . . . . . . . . . . . . . . . . . :   *USRPRF    
  Library  . . . . . . . . . . . . . . . . . . . :              
 > CALL PGM(WDRJOBD) PARM(('TOSHJTB') ('QGPL'))     
   05/10/25                                         

 DMSG QPGMR 
Use cmd DSPMSG QPGMR to display the messages:
Queue . . . . . :   QPGMR                   Program . . . . :   *DSPMSG   
  Library . . . :     QUSRSYS                 Library . . . :             
Severity  . . . :   00                      Delivery  . . . :   *HOLD     
                                                                          
Type reply (if required), press Enter.                                    
  From  . . . :   BIMBRA         05/13/25   13:39:56                      
  LIBRARY-  TOSHLAB                                                       
  From  . . . :   BIMBRA         05/13/25   13:39:56                      
  LIBRARY-  QGPL                                                          
  From  . . . :   BIMBRA         05/13/25   13:39:56                      
  LIBRARY-  QTEMP                                                         
  From  . . . :   BIMBRA         05/13/25   13:39:56                      
  LIBRARY-  TOSHX                                                         


 

[{"Type":"MASTER","Line of Business":{"code":"LOB68","label":"Power HW"},"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m3p000000F98bAAC","label":"Programming ILE Languages-\u003ECOBOL"}],"ARM Case Number":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"and future releases;7.1.0"}]

Historical Number

427927123

Document Information

Modified date:
13 May 2025

UID

nas8N1014761