Sample Program

Presents a sample COBOL program that calls the Public CASSPOOL API.

This sample program passes keys to CASSPOOL and writes the returned data to an output file.

       identification division.
       program-id. Program1.

       environment division.
       configuration section.
       input-output section.
       file-control.
               SELECT ASCII-FILE
               ASSIGN TO ASCII-DSN
               ORGANIZATION IS LINE SEQUENTIAL
               FILE STATUS ASCII-FILE-STATUS.
       data division.
            FILE SECTION.
       FD  ASCII-FILE
           LABEL RECORDS STANDARD.
       01  ASCII-DATA                  PIC X(80).
       working-storage section.
       01 ascii-file-status        pic xx.
       01 ascii-dsn                pic x(250).
       
       01 disp-rc                  pic 9999.
       01 disp-rsn                 pic 9999.
       01 disp-type                pic 9. 
       01 disp-job-nbr             pic 9(6).
       
       01 directory-name           pic x(260).
       01 flags                    pic x(4) comp-5. 
       01 name-length              pic x(4) comp-5. 
       01 status-code              pic x(2) comp-5.
       
       01  save-job-name           pic x(8).
       01  save-job-nbr            pic x(4) comp-x.
  
       
       01 pubcas-area.
       copy "mfpubcas.cpy" replacing ==()== by ==pubcas==.

       procedure division.
       
           move '$outdir/output.txt' to ASCII-DSN
           open output ascii-file
           if ascii-file-status <> '00'
               display 'open output  failed '  ascii-file-status
               goback
           end-if  
       
           move 0 to flags
           call "CBL_GET_CURRENT_DIR" using by value flags
                           by value       name-length
                           by reference   directory-name
                           returning      status-code
  
           perform get-messages                *> type 6
           
           perform get-o-hold                  *> type 7
           
           perform get-ds-hold                 *> type 8
           
           perform get-o-hold-type-jobname     *> type 7 by job name
           
           perform get-o-hold-type-create-date *> type 7 by date
           
           perform o-spool-files-jobname       *> type 8 and associated 
                                               *> type 10s
                                               
           perform o-held-spool-files-jobname  *> type 7 and associated 
                                               *> type 9s
           
            
           display 'test prog ended '
           
           goback.
           
                 
       o-held-spool-files-jobname section.   
           move spaces to ascii-data
           perform write-outfile  
           move 'By Jobs with held output spool files ' to ascii-data
           perform write-outfile       
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type-job-name 
                                   to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-o-hold-78   to pubcas-type 
           move 78-CAS-FUNC-STGT   to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           *> loop through the type output records to find jobs with
           *> output spool files
           perform until pubcas-retcode > 8
                      or pubcas-type    <>  pubcas-o-hold-78  
                      
       
               *> for each o-hold record
               *> print details
               *> save key
               *> get associated output spool records (ds-hold)
               *> reposition for next o-hold record               
               move pubcas-type      to disp-type
               move pubcas-job-nbr   to disp-job-nbr
                                    
               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       disp-job-nbr    delimited by size
                       ','             delimited by size 
                       pubcas-job-name 
                                       delimited by size
                       ','             delimited by size 
                       pubcas-dat-time 
                                       delimited by size                
                       into ascii-data
               perform write-outfile  
               
               move pubcas-job-name    to save-job-name
               move pubcas-job-nbr     to save-job-nbr
                              
               move low-values         to pubcas-area
               move 78-KEY-IS-job-NUMBER 
                                       to pubcas-key-id   
               move save-job-nbr       to pubcas-job-nbr
               
               move 78-CAS-FUNC-STGT   to pubcas-func
               perform call-pubcas
           
               move 78-CAS-FUNC-GN     to pubcas-func
               perform call-pubcas
               perform until pubcas-retcode > 8
                      or pubcas-job-nbr   <>  save-job-nbr  
                   *> all the output spool files for this job 
                   if pubcas-type = pubcas-ds-hold-78
                       move spaces to ascii-data
                       string 
                         '     '                    delimited by size
                         pubcas-SYSOT-STEP-NAME     delimited by size
                         ','             delimited by size
                         pubcas-SYSOT-PSTP-NAME     delimited by size
                         ','             delimited by size
                         pubcas-SYSOT-DD-NAME       delimited by size
                       into ascii-data
                       perform write-outfile        
                   end-if   
                   perform call-pubcas
               end-perform
               
               *> reposition on the next job name that has a type 8 record  
               move low-values         to pubcas-area
               move 78-KEY-IS-type-job-name 
                                       to pubcas-key-id    
               move pubcas-o-hold-78   to pubcas-type 
               move save-job-name      to pubcas-job-name
               move save-job-nbr       to pubcas-job-nbr
               move 78-CAS-FUNC-STGT   to pubcas-func
               perform call-pubcas
               
               *> get next next job
               move 78-CAS-FUNC-GN     to pubcas-func
               perform call-pubcas
               
               if  pubcas-job-name  = save-job-name
                   and
                   pubcas-job-nbr   = save-job-nbr
                   *> STGT and GN gets the same type 8 
                   *> record ( duplicate keys allowed )
                   *> so need a second GN to get the next record
                   move 78-CAS-FUNC-GN     to pubcas-func
                   perform call-pubcas
               end-if    
             
           end-perform
           
           move 78-CAS-FUNC-CLOS       to pubcas-func
           perform call-pubcas
       
       exit section.    
                  
           
       o-spool-files-jobname section.   
           move spaces to ascii-data
           perform write-outfile  
           move 'By Jobs with output spool files ' to ascii-data
           perform write-outfile       
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type-job-name 
                                   to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-out-78      to pubcas-type 
           move 78-CAS-FUNC-STGT   to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           *> loop through the type output records to find jobs with
           *> output spool files
           perform until pubcas-retcode > 8
                      or pubcas-type    <>  pubcas-out-78  
                      
       
               *> for each o-hold record
               *> print details
               *> save key
               *> get associated output spool records (ds-hold)
               *> reposition for next o-hold record               
               move pubcas-type      to disp-type
               move pubcas-job-nbr   to disp-job-nbr
                                    
               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       disp-job-nbr    delimited by size
                       ','             delimited by size 
                       pubcas-job-name 
                                       delimited by size
                       ','             delimited by size 
                       pubcas-dat-time 
                                       delimited by size                
                       into ascii-data
               perform write-outfile  
               
               move pubcas-job-name    to save-job-name
               move pubcas-job-nbr     to save-job-nbr
                              
               move low-values         to pubcas-area
               move 78-KEY-IS-job-NUMBER 
                                       to pubcas-key-id   
               move save-job-nbr       to pubcas-job-nbr
               
               move 78-CAS-FUNC-STGT   to pubcas-func
               perform call-pubcas
           
               move 78-CAS-FUNC-GN     to pubcas-func
               perform call-pubcas
               perform until pubcas-retcode > 8
                      or pubcas-job-nbr   <>  save-job-nbr  
                   *> all the output spool files for this job 
                   if pubcas-type = pubcas-ds-out-78
                       move spaces to ascii-data
                       string 
                         '     '                    delimited by size
                         pubcas-SYSOT-STEP-NAME     delimited by size
                         ','             delimited by size
                         pubcas-SYSOT-PSTP-NAME     delimited by size
                         ','             delimited by size
                         pubcas-SYSOT-DD-NAME       delimited by size
                       into ascii-data
                       perform write-outfile        
                   end-if   
                   perform call-pubcas
               end-perform
               
               *> reposition on the next job name that has a type 8 record  
               move low-values         to pubcas-area
               move 78-KEY-IS-type-job-name 
                                       to pubcas-key-id    
               move pubcas-out-78      to pubcas-type 
               move save-job-name      to pubcas-job-name
               move save-job-nbr       to pubcas-job-nbr
               move 78-CAS-FUNC-STGT   to pubcas-func
               perform call-pubcas
               
               *> get next next job
               move 78-CAS-FUNC-GN     to pubcas-func
               perform call-pubcas
               
               if  pubcas-job-name  = save-job-name
                   and
                   pubcas-job-nbr   = save-job-nbr
                   *> STGT and GN gets the same type 8 
                   *> record ( duplicate keys allowed )
                   *> so need a second GN to get the next record
                   move 78-CAS-FUNC-GN     to pubcas-func
                   perform call-pubcas
               end-if    
             
           end-perform
           
           move 78-CAS-FUNC-CLOS       to pubcas-func
           perform call-pubcas
       
       exit section.    
                  
       get-o-hold-type-create-date section.
           move spaces to ascii-data
           perform write-outfile  
           move 'By Type and Date - hold ' to ascii-data
           perform write-outfile       
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type-date 
                                   to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-o-hold-78   to pubcas-type 
           move 78-CAS-FUNC-STGT   to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           perform until pubcas-retcode > 8
                      or pubcas-type    <>  pubcas-o-hold-78  
                                                   
               move pubcas-type      to disp-type
               move pubcas-job-nbr   to disp-job-nbr
               
               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       disp-job-nbr    delimited by size
                       ','             delimited by size 
                       pubcas-job-name 
                                       delimited by size
                       ','             delimited by size 
                       pubcas-dat-time 
                                       delimited by size                
                       into ascii-data
               perform write-outfile  
                     
               move 78-CAS-FUNC-GN  to pubcas-func
               perform call-pubcas
           end-perform
           
           move 78-CAS-FUNC-CLOS    to pubcas-func
           perform call-pubcas
       exit section. 
       
           
       get-o-hold-type-jobname section.
           move spaces to ascii-data
           perform write-outfile  
           move 'By Type and Job Name - o-hold ' to ascii-data
           perform write-outfile       
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type-job-name 
                                   to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-o-hold-78  to pubcas-type 
           move 78-CAS-FUNC-STGT   to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           perform until pubcas-retcode > 8
                      or pubcas-type    <>  pubcas-o-hold-78  
                                                   
               move pubcas-type      to disp-type
               move pubcas-job-nbr   to disp-job-nbr
               
               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       disp-job-nbr    delimited by size
                       ','             delimited by size 
                       pubcas-job-name 
                                       delimited by size
                       ','             delimited by size 
                       pubcas-dat-time 
                                       delimited by size                
                       into ascii-data
               perform write-outfile  
                     
               move 78-CAS-FUNC-GN  to pubcas-func
               perform call-pubcas
           end-perform
           
           move 78-CAS-FUNC-CLOS    to pubcas-func
           perform call-pubcas
       exit section. 
       
       get-ds-out section.
           move spaces to ascii-data
           perform write-outfile  
              
           move 'By Type - ds-out ' to ascii-data
           perform write-outfile  
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type     to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-ds-out-78   to pubcas-type 
           move 78-CAS-FUNC-STGT   to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           perform until pubcas-retcode > 8
                      or pubcas-type    <> pubcas-o-hold-78
                             
               move pubcas-type      to disp-type
               move pubcas-job-nbr   to disp-job-nbr
                       
               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       disp-job-nbr    delimited by size
                       ','             delimited by size 
                       pubcas-job-name delimited by size
                       into ascii-data
               perform write-outfile  
                      
               move 78-CAS-FUNC-GN  to pubcas-func
               perform call-pubcas
           end-perform
           
           move 78-CAS-FUNC-CLOS    to pubcas-func
           perform call-pubcas
       exit section. 


           
       get-o-hold section.
           move spaces to ascii-data
           perform write-outfile  
           move 'By Type - o-hold ' to ascii-data
           perform write-outfile  
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type     to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-o-hold-78   to pubcas-type 
           move 78-CAS-FUNC-STGT   to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           perform until pubcas-retcode > 8
                      or pubcas-type    <> pubcas-o-hold-78
                             
               move pubcas-type      to disp-type
               move pubcas-job-nbr   to disp-job-nbr
                       
               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       disp-job-nbr    delimited by size
                       ','             delimited by size 
                       pubcas-job-name delimited by size
                       ','             delimited by size
                       pubcas-sysot-create-date
                                       delimited by size
                       into ascii-data
               perform write-outfile  
                      
               move 78-CAS-FUNC-GN  to pubcas-func
               perform call-pubcas
           end-perform
           
           move 78-CAS-FUNC-CLOS    to pubcas-func
           perform call-pubcas
       exit section. 
       
       get-ds-hold section.
           move spaces to ascii-data
           perform write-outfile  
           move 'By Type - ds-hold ' to ascii-data
           perform write-outfile  
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type     to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-ds-hold-78   to pubcas-type 
           move 78-CAS-FUNC-STGT    to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           perform until pubcas-retcode > 8 
                      or pubcas-type    <> pubcas-ds-hold-78 
                             
               move pubcas-type      to disp-type
               move pubcas-job-nbr   to disp-job-nbr

               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       disp-job-nbr    delimited by size
                       ','             delimited by size 
                       pubcas-sysot-job-name 
                                       delimited by size
                       ','             delimited by size
                       pubcas-sysot-step-name
                                       delimited by size
                       ','             delimited by size 
                       pubcas-sysot-pstp-name
                                       delimited by size
                       ','             delimited by size 
                       pubcas-sysot-dd-name
                                       delimited by size
                       ','             delimited by size
                       pubcas-sysot-create-date
                                       delimited by size 
                       into ascii-data
               perform write-outfile           
          
       
               move 78-CAS-FUNC-GN  to pubcas-func
               perform call-pubcas
           end-perform
           
           move 78-CAS-FUNC-CLOS    to pubcas-func
           perform call-pubcas
       exit section. 
       
       get-messages section.
       
           move 'Messages '        to ascii-data
           perform write-outfile
       
           move low-values         to pubcas-area
           move 78-KEY-IS-type     to pubcas-key-id    
           
           move 78-CAS-FUNC-OPEN   to pubcas-func
           perform call-pubcas
           
           move pubcas-mesg-78     to pubcas-type 
           move 78-CAS-FUNC-STGT   to pubcas-func
           perform call-pubcas
           
           move 78-CAS-FUNC-GN     to pubcas-func
           perform call-pubcas
           
           perform until pubcas-retcode <> 0
               or pubcas-type > pubcas-mesg-78
               
               move pubcas-type      to disp-type
               if pubcas-msglg-mesg-length > 256
                   move 256 to pubcas-msglg-mesg-length
               end-if    
               move spaces to ascii-data 
               string  disp-type       delimited by size
                       ','             delimited by size
                       pubcas-msglg-mesg(1:pubcas-msglg-mesg-length)
                                       delimited by size
                       into ascii-data
               perform write-outfile         
       
               move 78-CAS-FUNC-GN  to pubcas-func
               perform call-pubcas
           end-perform
           
           move 78-CAS-FUNC-CLOS    to pubcas-func
           perform call-pubcas
       exit section. 

         
           
       call-pubcas section.
           call "mvscaspb" using pubcas-area
           if pubcas-retcode > 8
               move pubcas-RETCODE to disp-rc
               move pubcas-RSNCODE to disp-rsn
               display 'call failed func ' pubcas-func ','
                                           disp-rc ',' disp-rsn
                                           ',' pubcas-file-status
               goback
           end-if 
       exit section.      
           
       write-outfile section.
           write ASCII-DATA
           if ascii-file-status <> '00'
               display 'write output  failed '  ascii-file-status
               goback
           end-if 
       exit section     
       
       end program Program1.