|
Hi
I have attached my SAS MVS program along with the JCL statements I have
write. I am unable to store the Proc SQl querry data set Hierarchy in the
name of Hier as a permanent SAS dataset. Please suggest me the correct JCL
statement to save a SAS dataset as a permanent dataset as a member in a
library.
Thank You
Reddi
000001 //DA38380H JOB (,02620),
000002 // 'DC4017.NEEL ',
000003 // PRTY=10,
000004 // MSGLEVEL=(1,1),
000005 // MSGCLASS=T,
000006 // NOTIFY=DA38380,
000007 // CLASS=A
000008 //************************************************************
000009 //* JOB DESCRIPTION *
000010 //* - CIC HIERARCHY EXTRACT *00000120
000011 //************************************************************
000012 //************************************************************
000013 //*SAS01 CREATE HIERARCHY EXTRACT FILE *00000120
000014 //************************************************************
000015 //SAS01 EXEC SAS,
000016 // REGION=4096K,
000017 // SASWK=WRKMVS,
000018 // SOUT=*,
000019 // DB2=Q,
000020 // TIME=60,
000021 // WORK1='30000,10000'
000022 //*HIER DD DSN=DWT.CIC.HIER,
000023 //* SPACE=(250,(10,10),RLSE),
000024 //* DCB=(MODEL,RECFM=FB,LRECL=250,BLKSIZE=0),
000025 //* AVGREC=K,
000026 //* DISP=SHR
000027 //* DISP=(NEW,CATLG,DELETE)
000028 //HIERARCH DD DSN=DWT.CIC.HIERARCH,
000029 // SPACE=(250,(10,10),RLSE),
000030 // DCB=(MODEL,RECFM=FB,LRECL=250,BLKSIZE=0),
000031 // AVGREC=K,
000032 // DISP=SHR
000033 //* DISP=(NEW,CATLG,DELETE)
000034 //SYSIN DD *
000035
*******************************************************************;
000036 * list all LEVELS OF A HIERARCHY
*;
000037
*******************************************************************;
000038
000039
000040
000041 PROC SQL;
000042 CONNECT TO DB2(SSID=DB2Q);
000043
000044 CREATE TABLE HIERARCH AS
000045 SELECT * FROM CONNECTION TO DB2(
000046
000047 SELECT CBCHILD.ALIGNMENT_ID CHLDid
000048 , CBCHILD.NAME CHLDname
000049 , CHLDATYP.name CHLDATYP
000050 , CHLDHTYP.name CHLDHTYP
000051 , char(CBCHILD.OPRTNL_START_DATE) CBCSTRT
000052 , char(CBCHILD.OPRTNL_end_DATE) CBCEND
000053 , char(COMBOPAR.START_DATE) COMBSTRT
000054 , char(COMBOPAR.END_DATE) COMBEND
000055 , CBPARENT.ALIGNMENT_ID PARid
000056 , CBPARENT.NAME PARname
000057 , PARHTYP.name PARHTYP
000058
000059 FROM DWSFE000.ALIGNMENT CBCHILD
000060 , DWSFE000.COMBINATON_ALGNMNT COMBOPAR
000061 , DWSFE000.ALIGNMENT CBPARENT
000062 , DWSFE000.ALIGNMENT_TYPE CHLDATYP
000063 , DWSFE000.HIERARCHICAL_TYPE CHLDHTYP
000064 , DWSFE000.HIERARCHICAL_TYPE PARHTYP
000065
000066 WHERE CBCHILD.ALGNMNT_TYPE_CODE = 'CB'
000067 AND CBCHILD.OPRTNL_START_DATE <= CURRENT DATE
000068 AND (CBCHILD.OPRTNL_END_DATE IS NULL
000069 OR CBCHILD.OPRTNL_END_DATE > CURRENT DATE)
000070
000071 AND CBCHILD.ALIGNMENT_ID = COMBOPAR.ALIGNMENT_ID_2
000072 AND COMBOPAR.START_DATE <= CURRENT DATE
000073 AND (COMBOPAR.END_DATE > CURRENT DATE
000074 OR COMBOPAR.END_DATE IS NULL)
000075
000076 AND CBPARENT.ALIGNMENT_ID = COMBOPAR.ALIGNMENT_ID_1
000077 and CBPARENT.ALGNMNT_TYPE_CODE = 'CB'
000078 AND CBPARENT.OPRTNL_START_DATE <= CURRENT DATE
000079 AND (CBPARENT.OPRTNL_END_DATE IS NULL
000080 OR CBPARENT.OPRTNL_END_DATE > CURRENT DATE)
000081
000082 and CBCHILD.ALGNMNT_TYPE_CODE = CHLDATYP.ALGNMNT_TYPE_CODE
000083 and CBCHILD.HRRCHCL_TYPE_CODE = CHLDHTYP.HRRCHCL_TYPE_CODE
000084 and CBPARENT.HRRCHCL_TYPE_CODE = PARHTYP.HRRCHCL_TYPE_CODE
000085
000086 )
000087
000088 ;
000089
000090 %PUT &SQLXMSG;
000091 DISCONNECT FROM DB2;
000092
000093
000094 DATA _NULL_;
000095 SET HIERARCH;
000096 FILE HIER;
000097 RUN;
000098 /* Commented*/
000099 /* DATA ABC(KEEP=YEST);
000100 YEST=DATETIME();
000101 DPART=DATEPART(YEST);
000102 TPART=TIMEPART(YEST);
000103 CALL SYMPUT("TDATE",PUT(DPART,YYMMDD10.));
000104 CALL SYMPUT("FTIME",PUT(TPART,TIME15.6));
000105 TODATE = TRIM("&TDATE.")¦¦"-"¦¦TRIM("&FTIME.");
000106 TODATE=COMPRESS(TODATE);
000107 CALL SYMPUT("TODATE",TODATE);
000108 RUN;
000109
000110 DATA WORK1.YESTDATE;
000111 SET ABC;
000112 RUN;
000113
000114
000115 PROC DATASETS;
000116 DELETE ABC;
000117 RUN;
000118
000119
000120 DATA _NULL_;
000121 SET WORK1.YESDATE;
000122 YDPART=DATEPART(YEST);
000123 YTPART=TIMEPART(YEST);
000124 YESTDAY=PUT(YDPART,YYMMDD10.)¦¦"-"¦¦(PUT
(YPART,TIME15.6);
000125 YESTDAY=COMPRESS(YESTDAY);
000126 CALL SYMPUT("YESTDAY",YESTDAY);
000127 RUN;
000128
000129
000130 PROC SORT DATA=HIERARCH;
000131 BY CHLDID;
000132 RUN;
000133
000134
000135 PROC SORT DATA=HIERARCH1.TODAY;
000136 BY CHLDID;
000137 RUN;
000138
000139
000140 DATA HIERARCH1.COMPARE HIERARCH1.NEWINTDY
000141 HIERARCHY1.NOTINTDY;
000142 MERGE HIERARCH1.TODAY(IN=A) HIERARCH(IN=B);
000143 BY CHLDID;
000144 IF A AND B THEN OUTPUT HIERARCH1.COMPARE;
000145 IF A AND NOT B THEN OUTPUT HIERARCH1.NOTINTDY;
000146 IF B AND NOT A THEN OUTPUT HIERARCH1.NEWINTDY;
000147 RUN;
000148
000149
000150 DATA HIERARCH1.UPDATE;
000151 SET HEIRARCH1.COMPARE;
000152 WHERE RUDT BETWEEN &YESTDAY. AND &TODATE.;
000153 RUN;
000154
000155
000156
000157 DATA HIERARCH;
000158 SET HIERARCH.TODAY;
000159 RUN;
000160
000161
000162
000163 PROC APPEND BASE=HIERARCH1.UPDATE
DATA=HIERARCH1.NEWINTDY;
000164 RUN;
000165
000166
000167
000168 PROC APPEND BASE=HIERARCH1.UPDATE
DATA=HIERARCH1.NOTINTDY;
000169 RUN;
000170
000171
000172
000173 DATA UPDATE1 UPDATE2 UPDATE3 UPDATE4 UPDATE5 UPDATE6
000174 UPDATE7 UPDATE8 UPDATE9 UPDATE10 UPDATE11 UPDATE12
000175 UPDATE13 UPDATE14 UPDATE15 UPDATE16 UPDATE17
000176 UPDATE18 UPDATE19 UPDATE20;
000177 SET HIERARCH1.UPDATE NOBS=PARM;
000178 X = CIEL(PARM/20);
000179 SELECT ;
000180 WHEN(_N_ < X ) OUTPUT UPDATE1;
000181 WHEN(_N_ < X*2) OUTPUT UPDATE2;
000182 WHEN(_N_ < X*3) OUTPUT UPDATE3;
000183 WHEN(_N_ < X*4) OUTPUT UPDATE4;
000184 WHEN(_N_ < X*5) OUTPUT UPDATE5;
000185 WHEN(_N_ < X*6) OUTPUT UPDATE6;
000186 WHEN(_N_ < X*7) OUTPUT UPDATE7;
000187 WHEN(_N_ < X*8) OUTPUT UPDATE8;
000188 WHEN(_N_ < X*9) OUTPUT UPDATE9;
000189 WHEN(_N_ < X*10) OUTPUT UPDATE10;
000190 WHEN(_N_ < X*11) OUTPUT UPDATE11;
000191 WHEN(_N_ < X*12) OUTPUT UPDATE12;
000192 WHEN(_N_ < X*13) OUTPUT UPDATE13;
000193 WHEN(_N_ < X*14) OUTPUT UPDATE14;
000194 WHEN(_N_ < X*15) OUTPUT UPDATE15;
000195 WHEN(_N_ < X*16) OUTPUT UPDATE16;
000196 WHEN(_N_ < X*17) OUTPUT UPDATE17;
000197 WHEN(_N_ < X*18) OUTPUT UPDATE18;
000198 WHEN(_N_ < X*19) OUTPUT UPDATE19;
000199 OTHERWISE OUTPUT UPDATE20;
000200 END;
000201 RUN;
000202
000203
000204 */
000205 /*commented*/
000206
000207 ****************************************************;
000208 * CREATE THE EXTRACT FILE OF HIER DATA *;
000209 ****************************************************;
000210 DATA _NULL_;
000211 SET HIERARCH;
000212 FILE HIERARCH;
000213 PUT
000214 CHLDID Z9.
000215 '¦' CHLDNAME
000216 '¦' CHLDATYP
000217 '¦' CHLDHTYP
000218 '¦' CBCSTRT
000219 '¦' CBCEND
000220 '¦' COMBSTRT
000221 '¦' COMBEND
000222 '¦' PARid Z9.
000223 '¦' PARname
000224 '¦' PARHTYP
000225 ;
000226
000227 /*
000228 //*
*******************************************************************
000229 //* * STEPFL01 ABEND THE JOB IF THE SAS STEP
FAILED. *
000230 //*
*******************************************************************
000231 //STEPFL01 EXEC PGM=STEPFAIL,
000232 // COND=(0,EQ,SAS01.SAS)
|