Exemple de programmation COBOL

L'exemple de programme en COBOL, DSQABFCO, est fourni avec QMF. Cet exemple de programme fait partie de la bibliothèque QMF1210.SDSQSAPn (où n correspond à l'identificateur de langue nationale).

L'exemple de programme pour l'interface appelable en COBOL exécute les fonctions suivantes :

QMF ne fournit pas la requête Q1 ou le format F1, mais l'exemple de programme utilise ces objets.

Pour CICS, l'instruction STOP RUN doit être modifiée en instruction GOBACK.

*****************************************************************
*   The following is a COBOL version of the query               *
*   callable interface *** DSQABFCO **.                         *
*****************************************************************
 IDENTIFICATION DIVISION.                                       
 PROGRAM-ID.  DSQABFCO.                                         
   DATE-COMPILED.                                               
 ENVIRONMENT DIVISION.                                          
 DATA DIVISION.                                                 
 WORKING-STORAGE SECTION.                                       
*****************************************************************
* Copy DSQCOMMB definition - contains query interface variables *
*****************************************************************
   COPY DSQCOMMB.                                               
                                                                
* Query interface commands                                      
 01  STARTQI      PIC X(5)  VALUE "START".                      
 01  SETG         PIC X(10) VALUE "SET GLOBAL".                 
 01  QUERY        PIC X(12) VALUE "RUN QUERY Q1".               
 01  REPT         PIC X(22) VALUE "PRINT REPORT (FORM=F1 ".     
 01  ENDQI        PIC X(4)  VALUE "EXIT".            
                                                     
* Query command length                               
 01  QICLTH       PIC 9(8) USAGE IS COMP-4.          
* Number of variables                                
 01  QIPNUM       PIC 9(8) USAGE IS COMP-4.          
* Keyword variable lengths                           
 01  QIKLTHS.                                        
   03   KLTHS     PIC 9(8) OCCURS 10 USAGE IS COMP-4.
* Value Lengths                                      
 01  QIVLTHS.                                        
   03   VLTHS     PIC 9(8) OCCURS 10 USAGE IS COMP-4.
* Start command keyword                              
 01  SNAMES.                                         
   03  SNAME1   PIC X(8) VALUE "DSQSMODE".           
* Start command keyword value                        
 01  SVALUES.                                        
   03  SVALUE1  PIC X(11) VALUE "INTERACTIVE".       
* Set GLOBAL command variable names to set           
01  VNAMES.                                         
   03  VNAME1   PIC X(7) VALUE "MYVAR01".            
   03  VNAME2   PIC X(5) VALUE "SHORT".              
   03  VNAME3   PIC X(7) VALUE "MYVAR03".            
* Variable value parameters                          
 01  VVALUES.                                        
   03   VVALS     PIC 9(8) OCCURS 10 USAGE IS COMP-4.
                                                     
 01   TEMP     PIC 9(8)           USAGE IS COMP-4.   
 PROCEDURE DIVISION.                                 
*                                                    
* Start a query interface session                    
     MOVE DSQ-CURRENT-COMM-LEVEL TO DSQ-COMM-LEVEL.  
     MOVE 5 TO QICLTH.                               
     MOVE 8 TO KLTHS(1).                             
     MOVE 11 TO VLTHS(1).                            
     MOVE 1 TO QIPNUM.                               
     CALL DSQCIB  USING DSQCOMM, QICLTH, STARTQI,    
                        QIPNUM, QIKLTHS, SNAMES,     
*                                                                 
* Set numeric values into query variables using SET GLOBAL command
     MOVE 10 TO QICLTH.                                           
     MOVE 7 TO KLTHS(1).                                          
     MOVE 5 TO KLTHS(2).                                          
     MOVE 7 TO KLTHS(3).                                          
     MOVE 4 TO VLTHS(1).                                          
     MOVE 4 TO VLTHS(2).                                          
     MOVE 4 TO VLTHS(3).                                          
     MOVE 20 TO VVALS(1).                                         
     MOVE 40 TO VVALS(2).                                         
     MOVE 84 TO VVALS(3).                                         
     MOVE 3 TO QIPNUM.                                            
     CALL DSQCIB  USING DSQCOMM, QICLTH, SETG,                    
                        QIPNUM, QIKLTHS, VNAMES,                  
                        QIVLTHS, VVALUES, DSQ-VARIABLE-FINT.      
*                                                                 
* Run a query                                                     
     MOVE 12 TO QICLTH.                        
     CALL DSQCIB USING DSQCOMM, QICLTH, QUERY. 
*                                              
* Print the results of the query               
     MOVE 22 TO QICLTH.                        
     CALL DSQCIB USING DSQCOMM, QICLTH, REPT.  
*                                              
* End the query interface session              
     MOVE 4 TO QICLTH.                         
     CALL DSQCIB USING DSQCOMM, QICLTH, ENDQI. 
                                               
     STOP RUN.