//BRXXXLOD JOB (BRXXX,,,1),'CREATE IAF LOAD',TIME=1 //********************************************************** //**** PROGRAM TO CONVERT LEGACY IAF FILE LAYOUT ******** //**** TO NEW DATABASE LAYOUTS. ******** //**************************************************************** //**** *** MAINTENANCE *** ******* //**** CHANGE THE JOB CARD TO REFLECT YOUR ENVIRONMENT ******* //**** ******* //**** CHANGE THE INPUT FILE NAME TO YOUR INPUT FILE NAME ******* //**** ******* //**** CHANGE THE OUTPUT FILE NAME AND THE FILE NAME IN ******* //**** THE HOUSEKEPPING STEP TO YOUR FILE NAME ******* //**************************************************************** //************ HOUSEKEPPING ***************************** //DELETE EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A //SYSIN DD * DELETE (BOR.UNIV.INSTRUCTIONAL.ACTIVITY) DELETE (BOR.UNIV.COURSE.MEETINGS) SET MAXCC = 0 /* //SELECT EXEC SAS WORK='50000,50000' //IAFIN DD DSN=BOR.UNIV.INPUT.FILE,DISP=SHR //IAFOUT DD DSN=BOR.UNIV.INSTRUCTIONAL.ACTIVITY, // DISP=(NEW,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=3000,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(15,9),RLSE) //MTIME DD DSN=BOR.UNIV.COURSE.MEETINGS, // DISP=(NEW,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=3000,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(15,9),RLSE) //* //**** CHANGE THE NUMWKS PARAMETER BELOW TO BE THE STANDARD ******* //**** NUMBER OF WEEKS IN THE TERM YOU ARE SUBMITTING ******* %LET NUMWKS=01; OPTIONS SYMBOLGEN ERRORS=1; DATA IAF(KEEP=UNIV TERMID SESSFLG CRSPRE CRSNO CCOIND CRSSECT PCRSTYPE VCREDFLG CRSCIP CRSBE ACCTCRS ENRLCRED CRSCRED INSTHRS REMOTE TECHIND1 TECHIND2 TECHIND3 CNTRYCD URESV CAMPUS2) MEETINGS; INFILE IAFIN LRECL=440 TRUNCOVER; INPUT @001 IAFKEY $CHAR23. @001 UNIV $CHAR04. @005 TERMID $CHAR06. @005 YEAR $CHAR04. @009 MONTH $CHAR02. @011 SESSFLG $CHAR01. @012 CRSSCID $CHAR12. @012 COURSE $CHAR08. @012 CRSPRE $CHAR03. @015 CRSNO $CHAR04. @019 CCOIND $CHAR01. @020 CRSSECT $CHAR04. @024 CNTRYCD $CHAR02. @026 FIL_B_M1 $CHAR20. @044 FIL_U_M1 $CHAR20. @064 PCRSTYPE $CHAR01. @065 VCREDFLG $CHAR01. @066 CRSCIP $CHAR06. @072 CRSBE $CHAR01. @073 ACCTCRS $CHAR09. @082 ENRLCRED ZD4. @086 ENRLHDCT ZD4. @090 CRSCRED ZD3.1 @093 TOTCRSHR ZD6.1 @099 FNDCRSHR ZD6.1 @105 INSTHRS ZD5.2 @110 FNDDOCHR ZD6.1 @116 TOTDOCHR ZD6.1 @122 REMOTE $CHAR01. @123 TECHIND $CHAR03. @123 TECHIND1 $CHAR01. @124 TECHIND2 $CHAR01. @125 TECHIND3 $CHAR01. @126 BOGRESV $CHAR20. @146 URESV $CHAR20. @; IF CCOIND = ' ' THEN CCOIND = '.'; OUTPUT IAF; N=0; LOOP: N + 1; IF N<=5 THEN DO; INPUT TIMEBEG $CHAR04. TIMEEND $CHAR04. +(-8) TIMEBHR $CHAR02. TIMEBMN $CHAR02. TIMEEHR $CHAR02. TIMEEMN $CHAR02. UMTFLG $CHAR01. CRSDAYS $CHAR07. BLDGNO $CHAR04. +(-4) SBLDG $CHAR04. SROOM $CHAR07. +(-7) ROOM $CHAR07. +(-7) ROOMPRE $CHAR02. ROOMNO $CHAR04. ROOMSUF $CHAR01. CRSTYPE $CHAR01. CRSCAMP $CHAR02. +(-2) CAMPUS $CHAR02. CRSCNTY $CHAR04. SITEZIP $CHAR09. FIL_B_S1 $CHAR02. FIL_U_S1 $CHAR10. @; FORMAT CAMPUS2 $CHAR04.; CAMPUS2 = '00'||CAMPUS; OUTPUT MEETINGS; GOTO LOOP; END; RUN; DATA _NULL_; SET IAF; FILE IAFOUT DLM='|' LRECL=3000; PUT _N_ UNIV TERMID SESSFLG CRSPRE CRSNO CCOIND CRSSECT PCRSTYPE VCREDFLG CRSCIP CRSBE ACCTCRS ENRLCRED CRSCRED INSTHRS REMOTE TECHIND1 TECHIND2 TECHIND3 CNTRYCD BOGRESV URESV; RUN; DATA MEETINGS; SET MEETINGS; IF CCOIND = ' ' THEN CCOIND = '.'; IF TIMEBEG = ' ' THEN TIMEBEG = '0000'; IF TIMEEND = ' ' THEN TIMEEND = '0000'; IF BLDGNO = ' ' THEN BLDGNO = '.'; IF ROOMPRE = ' ' THEN ROOMPRE = '.'; IF ROOMNO = ' ' THEN ROOMNO = '.'; IF ROOMSUF = ' ' THEN ROOMSUF = '.'; FORMAT SUNDAY $CHAR01.; FORMAT MONDAY $CHAR01.; FORMAT TUESDAY $CHAR01.; FORMAT WEDNESDAY $CHAR01.; FORMAT THURSDAY $CHAR01.; FORMAT FRIDAY $CHAR01.; FORMAT SATURDAY $CHAR01.; FORMAT SITE $CHAR04.; SITE = '.'; SUNDAY = SUBSTR(CRSDAYS,1,1); IF SUNDAY NOT = ' ' THEN SUNDAY = '1'; IF SUNDAY = ' ' THEN SUNDAY = '0'; MONDAY = SUBSTR(CRSDAYS,2,1); IF MONDAY NOT = ' ' THEN MONDAY = '1'; IF MONDAY = ' ' THEN MONDAY = '0'; TUESDAY = SUBSTR(CRSDAYS,3,1); IF TUESDAY NOT = ' ' THEN TUESDAY = '1'; IF TUESDAY = ' ' THEN TUESDAY = '0'; WEDNESDAY = SUBSTR(CRSDAYS,4,1); IF WEDNESDAY NOT = ' ' THEN WEDNESDAY ='1'; IF WEDNESDAY = ' ' THEN WEDNESDAY = '0'; THURSDAY = SUBSTR(CRSDAYS,5,1); IF THURSDAY NOT = ' ' THEN THURSDAY = '1'; IF THURSDAY = ' ' THEN THURSDAY = '0'; FRIDAY = SUBSTR(CRSDAYS,6,1); IF FRIDAY NOT = ' ' THEN FRIDAY = '1'; IF FRIDAY = ' ' THEN FRIDAY = '0'; SATURDAY = SUBSTR(CRSDAYS,7,1); IF SATURDAY NOT = ' ' THEN SATURDAY = '1'; IF SATURDAY = ' ' THEN SATURDAY = '0'; NBR_WKS_MET = "&NUMWKS"; OUTPUT; RUN; DATA MEETING2; SET MEETINGS; KEY = UNIV||TERMID||SESSFLG||CRSPRE||CRSNO||CCOIND||CRSSECT||TIMEBEG ||TIMEEND|| UMTFLG||CRSDAYS||BLDGNO||ROOMPRE||ROOMNO||ROOMSUF; PROC SORT DATA = MEETING2; BY KEY; DATA MEETING3; SET MEETING2; BY KEY; IF FIRST.KEY; DATA _NULL_; SET MEETING3; FILE MTIME DLM='|' LRECL=3000; PUT _N_ UNIV TERMID SESSFLG CRSPRE CRSNO CCOIND CRSSECT TIMEBEG TIMEEND SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY BLDGNO ROOMPRE ROOMNO ROOMSUF UMTFLG CRSTYPE CAMPUS2 SITE CRSCNTY SITEZIP NBR_WKS_MET FIL_U_S1; RUN;