IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

I need to write into a flat file ( REXX and SQL Combination)


IBM Mainframe Forums -> DB2
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Vallabhaneni

New User


Joined: 30 Sep 2006
Posts: 5

PostPosted: Thu Jan 15, 2009 10:30 pm
Reply with quote

Please see below my code. It's working fine, but I need to write the output into the flat file from the SQL.
Code:

/*REXX*/                                       
ADDRESS TSO "SUBCOM DSNREXX"                   
IF RC <> 0 THEN DO                             
   S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')   
   IF S_RC <> 0 THEN                           
      SAY 'PROBLEM LOADING DB2 ENVIRONMENT'     
   ELSE                                         
      SAY 'SUCCESS'                             
   END                                         
ELSE                                           
  ADDRESS DSNREXX                               
  "CONNECT" DB2P                               
  IF RC = 0 THEN DO                             
   SAY RC                                       
   SAY SQLCODE                                 
 SQLSTMT = "SELECT *                           
 FROM QUALIF.XXXXX_XXX_TABLE                   
 WHERE XXXXXXXXX_CD = 300 "                     
ADDRESS DSNREXX "EXECSQL PREPARE S4 INTO :TBSQLDA FROM :SQLSTMT"
ADDRESS DSNREXX "EXECSQL DECLARE C4 CURSOR FOR S4"             
ADDRESS DSNREXX "EXECSQL OPEN C4"                               
DO UNTIL (SQLCODE <> 0)                                         
ADDRESS DSNREXX "EXECSQL FETCH C4 USING DESCRIPTOR :TBSQLDA"   
IF SQLCODE = 0 THEN DO                                         
LINE = ' '                                                     
DO I = 1 TO TBSQLDA.SQLD                                       
/*            SAY "  > COLUMN NUMBER: " I  */                   
/*            SAY "    COLUMN VALUE:  " TBSQLDA.I.SQLDATA*/     
LINE = LINE HUDAVK.REXX.OUTPUT1                                 
END I                                                           
END                                                             
END                                                             
ADDRESS DSNREXX "EXECSQL CLOSE C4"                             
ADDRESS DSNREXX "DISCONNECT"                                   
S_RC = RXSUBCOM('DELETE','DSNREXX','DSNREXX')                   
END   
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Fri Jan 16, 2009 12:54 am
Reply with quote

Hello,

If you run this in batch, you should be able to capture the output in a dataset rather than a sysout=.
Back to top
View user's profile Send private message
technut

New User


Joined: 27 Dec 2007
Posts: 73
Location: India

PostPosted: Fri Jan 16, 2009 3:19 pm
Reply with quote

Code:
 DO I = 1 TO TBSQLDA.SQLD                                               
 /*            SAY "  > COLUMN NUMBER: " I  */                         
 /*            SAY "    COLUMN VALUE:  " TBSQLDA.I.SQLDATA*/           
 DATA = TBSQLDA.I.SQLDATA                                               
 QUEUE DATA                                                             
 END I                                                                 
 END                                                                   
 END                                                                   
 END                                                                   
 ADDRESS DSNREXX "EXECSQL CLOSE C4"                                     
 ADDRESS DSNREXX "DISCONNECT"                                           
 S_RC = RXSUBCOM('DELETE','DSNREXX','DSNREXX')                         
 END                                                                   
QUEUE ''                                                               
ADDRESS "TSO"                                                           
"PROFILE NOPREFIX"                                                     
SYSTSPRT_NAME = STRIP(SYSVAR(SYSUID)) || '.TEST.FILE'                 
SAY SYSTSPRT_NAME                                                       
IF SYSDSN(SYSTSPRT_NAME) ¬= 'OK' THEN     
   DO                                                                   
     "ALLOC F(SYSTSPRT) DA(" SYSTSPRT_NAME ") NEW SPACE(1,1) CYLINDERS 
      DSORG(PS) LRECL(133) BLKSIZE(1330)"                               
   END                                                                 
 IF SYSDSN(SYSTSPRT_NAME) = 'OK' THEN                                   
    DO                                                                 
      "ALLOC F(SYSTSPRT) DA(" SYSTSPRT_NAME ") SHR REU"                 
    END                                                                 
 "EXECIO * DISKW SYSTSPRT ( FINIS"                                     
 "DELSTACK"                                                             
 "FREE FI(SYSTSPRT)"                                                   
 "ISPEXEC BROWSE DATASET('" || SYSTSPRT_NAME || "')"                   
 EXIT 0                                                                                               

Try the above code..
This worked for me. Depending on the way you want the output to be displayed in the file, you can manipulate TBSQLDA.I.SQLDATA .

If you run the above code, data for all the columns in the TABLE gets written into the output file line after line.

Let me know if this works for you..
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DB2

 


Similar Topics
Topic Forum Replies
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts Running REXX through JOB CLIST & REXX 13
No new posts Error to read log with rexx CLIST & REXX 11
No new posts Extracting Variable decimal numbers f... DFSORT/ICETOOL 17
No new posts SFTP Issue - destination file record ... All Other Mainframe Topics 2
Search our Forums:

Back to Top