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

1
Hosted by www.Geocities.ws