farmer111 发表于 2016-11-18 08:20:05

REXX与DB2的交互

/**********READDB2********************/                                CHECKDB2: PROCEDURE                                                
  ADDRESS TSO "SUBCOM DSNREXX"                                       
  IF RC=0 THEN                                                         
  SAY 'IT OK TO USE DSNREXX'                                       
  ELSE                                                               
  DO                                                               
  SAY 'SORRY'                                                      
  SAY RC                                                         
  END                                                               
  IF RC <> 0 THEN                                                      
  DO                                                               
  S_RC = RXSUBCOM(&quot;ADD&quot;,&quot;DSNREXX&quot;,&quot;DSNREXX&quot;)                     
  IF RC <> 0 THEN                                                
  SAY RC                                                         
  &quot;SUBCOM DSNREXX&quot;                                                
  IF RC=0 THEN                                                   
  SAY 'IT OK TO USE DSNREXX'                                    
  ELSE
  DO                                                      
  SAY 'SORRY'                                             
  EXIT                                                   
  END                                                      
  END                                                            
  RETURN                                                         
  /********************CONNECTDB2*****************/               
  CONNECTDB2: PROCEDURE                                          
  ADDRESS DSNREXX                                                
  &quot;CONNECT DB9G&quot;                                                   
  IF SQLCODE = 0 THEN                                             
  SAY 'CONNECT OK'                                             
  ELSE                                                            
  DO                                                            
  SAY 'CONNECT ERR'                                          
  SAY SQLCODE                                                
  EXIT                                                         
  END                                                            
  RETURN   
  /********************READDATA*******************/                  
  READDATA: PROCEDURE                                                
  ADDRESS TSO                                                         
  DSNX=&quot;'CBK.A3.DB2.KEYWORD'&quot;                                          
  &quot;ALLOC DA(&quot;DSNX&quot;) FI(MYINDA) SHR&quot;                                    
  &quot;EXECIO 1 DISKR MYINDA (STEM NEWVAR.&quot;                              
  &quot;EXECIO 1 DISKR MYINDA (FINIS&quot;                                       
  SAY &quot;FINIS1&quot; RC                                                      
  &quot;FREE F(MYINDA)&quot;                                                   
  SAY &quot;FREE1&quot; RC                                                      
  PARSE VALUE NEWVAR.1 WITH KEYWORD A B CD                           
  SAY &quot;NEWVAR.1&quot; NEWVAR.1                                             
  SAY &quot;KEYWORD&quot; KEYWORD                                                
  ADDRESS DSNREXX                                                      
  SQLSTAT = &quot;SELECT * FROM IBMUSER.BEIFEN WHERE SID > &quot;KEYWORD&quot;&quot;      
  EXECSQL &quot;DECLARE C71 CURSOR WITH HOLD FOR S71&quot;                     
  SAY SQLCODE                                                         
  ADDRESS DSNREXX                                                      
  EXECSQL &quot;PREPARE S71 INTO :OUTSQLDA FROM :SQLSTAT&quot;                  
  SAY &quot;PREPARE&quot; SQLCODE                                                
  &quot;EXECSQL OPEN C71&quot;                                                   
  SAY 'OPEN' SQLCODE                                                   
  SAY RC                                                            
  DO X = 1 TO 5                                                   
  'EXECSQL FETCH C71 USING DESCRIPTOR :OUTSQLDA'               
  IF SQLCODE = 0 THEN                                          
  DO                                                         
  STR = ''                                                
  DO I = 1 TO OUTSQLDA.SQLD                              
  LINE = OUTSQLDA.I.SQLDATA                           
  /*SAY 'LINE IS' LINE*/                                 
  STR = STR || ' ' || LINE                              
  END                                                      
  SAY STR                                                
  /*CALL WRITEFILE STR */                                    
  WRITEFILE(STR)                                             
  END                                                      
  ELSE                                                         
  SAY &quot;FIND SQLCODE&quot; SQLCODE                                 
  END                                                               
  EXECSQL &quot;COMMIT&quot;                                                
  RETURN                                                               
  /*****************WRITEFILE********************************/         
  WRITEFILE: PROCEDURE                                                   
  PARSE ARG STRING1                                                      
  ADDRESS TSO                                                            
  DSN =&quot;'CBK.A3.DB2.READOPT'&quot;                                          
  DSN1=&quot;'CBK.A3.DB2.KEYWORD'&quot;                                          
  &quot;ALLOC DA(&quot;DSN&quot;)FI(MYOUTDD) MOD&quot;                                    
  &quot;ALLOC DA(&quot;DSN1&quot;) FI(MYKEYDD) SHR&quot;                                    
  &quot;NEWSTACK&quot;                                                            
  PUSH STRING1                                                         
  &quot;EXECIO 1 DISKW MYOUTDD (FINIS&quot;                                       
  PUSH STRING1                                                         
  &quot;EXECIO 1 DISKW MYKEYDD (FINIS&quot;                                       
  SAY &quot;FINIS2&quot; RC                                                      
  &quot;DELSTACK&quot;                                                         
  SAY RC                                                            
  &quot;FREE F(MYOUTDD)&quot;                                                
  &quot;FREE F(MYKEYDD)&quot;                                                
  SAY &quot;FREE2&quot; RC                                                   
  RETURN 0                                                         
  /*******************SEND FTP***************/                     
  FTPD: PROCEDURE                                                   
  QUEUE &quot;//IBMUSERA JOB NOTIFY=&SYSUID&quot;                              
  QUEUE &quot;//STEP0    EXEC PGM=FTP,PARM='172.2.238.210'&quot;               
  QUEUE &quot;//OUTPUT   DD SYSOUT=*&quot;                                    
  QUEUE &quot;//SYSPRINT DD SYSOUT=*&quot;                                    
  QUEUE &quot;//INPUT    DD *&quot;                                          
  QUEUE &quot;IBMUSER&quot;                                                
  QUEUE &quot;SYS1   &quot;                                                
  QUEUE &quot;PUT 'CBK.A3.DB2.READOPT'&quot;                                 
  QUEUE &quot;QUIT&quot;                                                   
  QUEUE &quot;/*&quot;                                                         
  QUEUE &quot;//STEP1 EXEC PGM=IEFBR14&quot;                                 
  QUEUE &quot;//DD1   DD   DSN=CBK.A3.DB2.READOPT,&quot;                     
  QUEUE &quot;//      DISP=(SHR,DELETE)&quot;                              
  QUEUE &quot;//STEP2 EXEC PGM=IEFBR14&quot;                                 
  QUEUE &quot;//DD2   DD   DSN=CBK.A3.DB2.READOPT,&quot;                     
  QUEUE &quot;//      DISP=(,CATLG),SPACE=(CYL,(10,10)),&quot;            
  QUEUE &quot;//      RECFM=FB,LRECL=80,BLKSIZE=3200,UNIT=3390&quot;      
  QUEUE &quot;\\&quot;                                                      
  ADDRESS TSO &quot;SUBMIT * END(\\)&quot;                                    
  SAY &quot;ADDRESS TSO&quot; RC                                             
  RETURN
页: [1]
查看完整版本: REXX与DB2的交互