Using CA Earl or Earl Service, rather than produce a report, how can I output the report data in comma-delimited format?
Here is an example of a technique which will create a comma-delimited output file rather than producing a report.
Using the sample AIRPORTS file, a description of which may be found in the SAMPJCL member EARLSAMP, create a new request, using SET statements to assign input values and commas to the output fields of the new comma-delimited data file. Then specify the CA Earl PUT command to write the data to the output flat file.
//EARL EXEC PGM=EARL
... your Earl JCL ...
//PUTOUT DD DISP=(NEW,CATLG,DELETE),
// DSN=your.common.delimited.output.file,
// SPACE=...,UNIT=...,VOL=SER=vvvvv,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSIN DD *
AIRPORTS:FILE EARLGET RECORD=57
DEF A_NAME 1-18 X 'NAME OF' 'AIRPORT'
DEF A_CITY 20-35 X 'CITY'
DEF A_COUNTRY 40-43 X 'COUNTRY' 'ABBREVIATION'
DEF A_PASS 50-57 N 'NUMBER OF' 'PASSENGERS'
PUTOUT: FILE OUTPUT RECORD=80
DEF O_NAME 1-18 X
DEF O_C1 19-19 X
DEF O_CITY 20-35 X
DEF O_C2 36-36 X
DEF O_COUNTRY 37-40 X
DEF O_C3 41-41 X
DEF O_PASS 42-49 N
DEF O_REST 50-80 X
START:
GET AIRPORTS
IF AIRPORTS = 'E'
GOTO EOJ
ENDIF
SET O_NAME = A_NAME
SET O_C1 = ','
SET O_CITY = A_CITY
SET O_C2 = ','
SET O_COUNTRY = A_COUNTRY
SET O_PASS = A_PASS
SET O_C3 = ','
PUT PUTOUT
GOTO START
END
/*
The above request will result with the following messages in the Earl SYSPRINT...
FILE NAME RECORDS READ RECORDS WRITTEN
AIRPORTS 50 0
PUTOUT 0 50
**** END OF PROCESSING PHASE
** 0 HITFILE RECORDS WRITTEN
CALR802E NO DATA SELECTED FOR ANY REPORT
And, the resulting flat file will contain...
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ATLANTA ,ATLANTA ,US ,47649470 BALTIMORE INTL. ,BALTIMORE ,US , 9146286 BOSTON ,BOSTON ,US ,23283047 CHARLES DE GAULLE ,PARIS ,FR ,16040641 CHARLOTTE INTL. ,CHARLOTTE ,US ,12978582 COPENHAGEN ,COPENHAGEN ,DEN ,10622814 ...etc...
You will need to customize your CA Earl report using the PUT/SET technique as shown above.