Typical DCL Command Procedure to run the program :
$!
$! This command procedure will create the MS Word data source file
$! in order to produce labels for the Campus Pipeline student login
$! sheets.
$!
$ SET NOVERIFY
$ SET NOCONTROL_Y
$ ASK := READ/PROMPT=
$ SAY := WRITE SYS$OUTPUT
$!
$! Delete any hold files that may have been left over from previous runs.
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$!
$ COPY SI$FEX:ZKFILE.MFD; SYS$LOGIN:*.MAS;
$ COPY/LOG SI$FEX_USER:WORDFMT.MFD SYS$LOGIN:*.MAS;
$ CL
$!
$! Create course section list file.
$!
$ OPEN/WRITE crs_file SYS$LOGIN:CRSFILE.DOC
$ CLOSE crs_file
$!
$! Create data source hold file.
$!
$ OPEN/WRITE cert_file SYS$LOGIN:CERTHOLD.DOC
$ CLOSE cert_file
$!
$! Prompt for term.
$!
$ENTER_PARM_TERM:
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
"Enter the current five digit term (CCYYX) >>> " TERMIN
$ LEN_TERMIN = F$LENGTH(TERMIN)
$ IF LEN_TERMIN .NE. 5 THEN GOTO ENTER_PARM_TERM
$ TYP_TERMIN = F$TYPE(TERMIN)
$ IF TYP_TERMIN .NES. "INTEGER" THEN GOTO ENTER_PARM_TERM
$!
$! Prompt for course section.
$!
$ENTER_PARM_CRS:
$!
$ SAY ""
$ SAY "Enter the course section to create MS Word data source file for..."
$ SAY ""
$ SAY "Ex : ENG 101 01 {for a single section} or "
$ READ SYS$COMMAND/TIME=60/END=EXIT_LOOP/ERROR=EXIT_LOOP/PROMPT= -
" ENG 101 {for all sections} >>> " CRSIN
$ LEN_CRSIN = F$LENGTH(CRSIN)
$ IF (LEN_CRSIN .NE. 10) .AND. (LEN_CRSIN .NE. 7) THEN GOTO ENTER_PARM_CRS
$ TYP_CRSIN = F$TYPE(CRSIN)
$ IF TYP_CRSIN .NES. "STRING" THEN GOTO ENTER_PARM_CRS
$!
$ IF (LEN_CRSIN .EQ. 7)
$ THEN
$ CRSIN = F$EDIT(CRSIN,"UPCASE") + " $$"
$ ELSE
$ CRSIN = F$EDIT(CRSIN,"UPCASE")
$ ENDIF
$!
$! Add course section to list.
$!
$ OPEN/APPEND crs_file SYS$LOGIN:CRSFILE.DOC
$ WRITE crs_file CRSIN
$ CLOSE crs_file
$!
$! Prompt user for more course sections.
$!
$ CL
$ SAY ""
$ ASK "Enter in more courses [Y]? " SYS$COMMAND YN
$ IF YN .EQS. "" THEN YN = "Y"
$ IF YN .EQS. "Y" THEN GOTO ENTER_PARM_CRS
$!
$! Create/run FOCUS program for all course sections in list.
$!
$ CL
$ SAY ""
$ SAY "Please wait while program executes..."
$ SAY ""
$ OPEN/READ crs_file SYS$LOGIN:CRSFILE.DOC
$!
$READ_LOOP_FST:
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$ READ/END_OF_FILE=EXIT_LOOP_LST crs_file crs_record
$ COM_FILE = "SYS$LOGIN:FOCTEMP.COM"
$!
$ OPEN/WRITE output_file 'COM_FILE'
$!
$ WRITE output_file "$ DEFINE FOC$DIR1 SI$DATA"
$ WRITE output_file "$ DEFINE FOC$DIR2 SI$FEX,SI$MFD"
$ WRITE output_file "$ SET DEFAULT SYS$LOGIN"
$ WRITE output_file "$ FOCUS"
$ WRITE output_file "EXEC SI$FEX_USER:(FOCEXEC name)"
$ WRITE output_file TERMIN
$ WRITE output_file F$EXTRACT(0,10,crs_record)
$ WRITE output_file "FIN"
$ WRITE output_file "$ EXIT"
$!
$ CLOSE output_file
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE'
$ SYNCHRONIZE FOCTEMP
$!
$! Check to see if hold files were created.
$!
$ IF (F$SEARCH("SYS$LOGIN:RTTMP1.FTM;") .EQS. "")
$ THEN
$ CL
$ SAY " "
$ SAY "No course enrollment found for the following : "
$ SAY F$EXTRACT(0,10,crs_record)
$ SAY " "
$ WAIT 00:00:05
$ GOTO READ_LOOP_FST
$ ENDIF
$!
$ CONVERT/APPEND SYS$LOGIN:CARDOUT.FTM SYS$LOGIN:CERTHOLD.DOC
$ GOTO READ_LOOP_FST
$!
$EXIT_LOOP_LST:
$!
$ CLOSE crs_file
$!
$ OPEN/READ input_file SYS$LOGIN:CERTHOLD.DOC
$ OPEN/WRITE output_file SYS$LOGIN:CERTMAIL.DOC
$!
$! Write header record.
$!
$ READ/END_OF_FILE=EXIT_LOOP_HOLD input_file in_record
$ WRITE output_file "START|CPUSER|NAME|PIN|END*"
$!
$READ_LOOP_HOLD:
$!
$! Write detail records.
$!
$ READ/END_OF_FILE=EXIT_LOOP_HOLD input_file in_record
$!
$ IF F$EXTRACT(0,6,in_record) .EQS. "START|"
$ THEN
$ WRITE output_file in_record
$ ENDIF
$!
$ GOTO READ_LOOP_HOLD
$!
$EXIT_LOOP_HOLD:
$!
$ CLOSE input_file
$ CLOSE output_file
$!
$ USER = F$EDIT(F$GETJPI("","USERNAME"),"UPCASE,COLLAPSE")
$ MAIL/SUBJECT="CP Course MS Data File" SYS$LOGIN:CERTMAIL.DOC 'USER'
$!
$ CL
$ SAY " "
$ SAY " "
$ WAIT 00:00:05
$!
$EXIT_LOOP:
$!
$ SAY " "
$ SAY "All done..."
$ SAY " "
$!
$! CLEAN UP.
$!
$ DELETE/LOG SYS$LOGIN:CERTMAIL.DOC;*
$ DELETE/LOG SYS$LOGIN:CERTHOLD.DOC;*
$ DELETE/LOG SYS$LOGIN:CERTIN.DOC;*
$ DELETE/LOG SYS$LOGIN:CRSFILE.DOC;*
$ DELETE/LOG SYS$LOGIN:FOCTEMP.COM;*
$ DELETE/LOG SYS$LOGIN:FOCTEMP.LOG;*
$ DELETE/LOG SYS$LOGIN:*.MAS;*
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$!
$ EXIT
FOCUS program :
SET PAGE = NOPAGE
SET LINES = 999999
JOIN CLEAR *
-PROMPT &INTRM/A5.ENTER THE FIVE DIGIT TERRM OF INPUT COURSE SECTION (CCYYX) :
-PROMPT &CRS/A11.ENTER THE NAME OF INPUT CCOURSE SECTION (EX : YOD 626 40) :
FILEDEF ZKFILE DISK ZS$DATA:ZKFILE.DAT
-*
-* Retrieve students who are enrolled in the input class.
-*
DEFINE FILE RTFILE
CHK_CRS/A7=EDIT(SECTION_ID,'9999999');
END
TABLE FILE RTFILE
PRINT CHK_CRS SECTION_ID BY STU_ID
WHERE TERM EQ '&INTRM';
WHERE CURR_ATTEMPTED_HRS GT 0;
WHERE SPE_STATUS EQ 'E';
WHERE SECTION_ID EQ '&CRS';
ON TABLE HOLD AS RTTMP1
END
-*
-* Retrieve student name and pin number.
-*
JOIN STU_ID IN RTTMP1 TO KEY IN AAFILE AS J1
DEFINE FILE RTTMP1
TMP_NAME/A32 = GETTOK(STU_NAME,32,2,',',32,TMP_NAME);
SFX_NAME/A5 = GETTOK(STU_NAME,32,3,',',5,SFX_NAME);
FMN_NAME/A32 = LJUST(32,TMP_NAME,FMN_NAME);
FST_NAME/A32 = GETTOK(FMN_NAME,32,1,' ',32,FST_NAME);
MDL_NAME/A32 = GETTOK(STU_NAME,32,2,',',32,MDL_NAME);
LST_NAME/A15 = GETTOK(STU_NAME,32,1,',',32,LST_NAME);
L_NAME/A15 = MXCASE(15,LST_NAME,L_NAME);
EXPNDNME/A72 = FMN_NAME || (' '|LST_NAME|' ') || SFX_NAME || '*';
CMPRSNME/A32 = GETTOK (EXPNDNME,66,1,'*',32,CMPRSNME);
R_NAME/A32 = LJUST(32,CMPRSNME,R_NAME);
NAME/A32 = MXCASE(32,R_NAME,NAME);
END
TABLE FILE RTTMP1
PRINT NAME PIN SECTION_ID BY STU_ID
WHERE PIN NE '';
ON TABLE HOLD AS RTTMP2
END
-*
-* Retrieve Campus Pipeline Id.
-*
TABLE FILE ZKFILE
PRINT ZK_PERSON_ID BY ZK_APPLICATION_ID
ON TABLE HOLD AS ZKTMP1
END
-*
-* Create the MS Word data source file.
-*
JOIN STU_ID IN RTTMP2 TO ZK_APPLICATION_ID IN ZKTMP1 AS J1
TABLE FILE RTTMP2
PRINT ZK_PERSON_ID NAME PIN SECTION_ID BY STU_ID
ON TABLE HOLD AS RTTMP3
END
-*
DEFINE FILE RTTMP3
L1/A99 = 'START' || '|' || ZK_PERSON_ID || '|' || NAME || '|' || PIN ||
'|' || 'END*';
END
TABLE FILE RTTMP3
PRINT L1 AS ' ' IN 1
ON TABLE SAVE AS CARDIN FORMAT DOC
BY SECTION_ID NOPRINT
BY ZK_PERSON_ID NOPRINT
END
-*
FILEDEF WORDFMT DISK CARDIN.DOC
TABLE FILE WORDFMT
PRINT DATA_FIELD
ON TABLE SAVE AS CARDOUT
END
-*
JOIN CLEAR *
This page hosted by
Get your own Free Homepage