Typical DCL Command Procedure to set up the program :
$ SET NOVERIFY $ SAY :== "WRITE SYS$OUTPUT" $! $ SAY "This report produces the graduate index card labels for the" $ SAY "specified academic terms. The graduate name, the full major" $ SAY "name, and any honors are listed." $ SAY " " $ SAY "CHECK TO MAKE SURE CORRECT MAJOR DECODE FILE IS BEING USED..." $ SAY " " $! $ENTER_PARM: $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the first academic term to run this report for >>> " FSTTRMIN $ LEN_FSTTRMIN = F$LENGTH(FSTTRMIN) $ IF LEN_FSTTRMIN .NE. 3 THEN GOTO ENTER_PARM $ TYP_FSTTRMIN = F$TYPE(FSTTRMIN) $ IF TYP_FSTTRMIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $ SAY " " $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the second academic term to run this report for >>> " SECTRMIN $ LEN_SECTRMIN = F$LENGTH(SECTRMIN) $ IF LEN_SECTRMIN .NE. 3 THEN GOTO ENTER_PARM $ TYP_SECTRMIN = F$TYPE(SECTRMIN) $ IF TYP_SECTRMIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $ SAY " " $ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= - "Enter the third academic term to run this report for >>> " THDTRMIN $ LEN_THDTRMIN = F$LENGTH(THDTRMIN) $ IF LEN_THDTRMIN .NE. 3 THEN GOTO ENTER_PARM $ TYP_THDTRMIN = F$TYPE(THDTRMIN) $ IF TYP_THDTRMIN .NES. "INTEGER" THEN GOTO ENTER_PARM $! $! Build parameter for (FOCEXEC name) $! $ EXEC1_REC = "EXEC (FOCEXEC name) FSTTRM=" + FSTTRMIN + - ", SECTRM=" + SECTRMIN + ", THDTRM=" + THDTRMIN $ OPEN/READ INPUT_FILE SI$FOCUS_USER:(FOCEXEC name).COM $ OPEN/WRITE OUTPUT_FILE SI$FOCUS_USER:(FOCEXEC name).TMP $READ_MORE_001: $ READ/END_OF_FILE=BEGIN_001 INPUT_FILE IN_RECORD $ IF F$EXTRACT(0,4,IN_RECORD) .EQS. "EXEC" $ THEN $ WRITE OUTPUT_FILE EXEC1_REC $ ELSE $ OUTFILE_REC = IN_RECORD $ WRITE OUTPUT_FILE OUTFILE_REC $ ENDIF $ GOTO READ_MORE_001 $BEGIN_001: $ CLOSE OUTPUT_FILE $ CLOSE INPUT_FILE $ OPEN/WRITE OUTPUT_FILE SI$FOCUS_USER:EMPTY_FILE_(FOCEXEC name).DOC $ EXEC1_REC = "PARAMETERS USED : First term = " + FSTTRMIN + - ", Second Term = " + SECTRMIN + ", Third term = " + THDTRMIN $ WRITE OUTPUT_FILE EXEC1_REC $ CLOSE OUTPUT_FILE $ RENAME SI$FOCUS_USER:(FOCEXEC name).TMP SI$FOCUS_USER:(FOCEXEC name).COM;/LOG $ SUBMIT/QUE=SYS$FOCUS SI$FOCUS_USER:(FOCEXEC name).COM $! $EXIT: $ EXIT
Typical DCL Command Procedure to actually run the program :
$ DELETE SI$FOCUS_USER:*.FTM;*/LOG
$ DELETE SI$FOCUS_USER:*.MAS;*/LOG
$ COPY SI$FOCUS_USER:PUNCH2.MFD; SI$FOCUS_USER:PLAY5.MAS; /LOG
$ DEFINE FOC$DIR1 SI$DATA
$ SET DEFAULT SI$FOCUS_USER
$ FOCUS
EXEC (FOCEXEC name) FSTTRM=(First enrollment term), SECTRM=(Second enrollment term), THDTRM=(Third enrollment term)
FIN
$!
$! REFORMAT MAILING LABELS
$!
$ OPEN/READ INPUT_FILE PLAY3.FTM
$ OPEN/WRITE OUTPUT_FILE TEMPFILE.TMP
$ PG_BK_REC = "<FF>"
$!
$ READ/END_OF_FILE=BEGIN_SHA INPUT_FILE IN_RECORD
$ OUTFILE_REC = " "
$ WRITE OUTPUT_FILE OUTFILE_REC
$ WRITE OUTPUT_FILE OUTFILE_REC
$!
$ LAB_CNT = 1
$ LINE_CNT = 1
$READ_MORE_SHA:
$ READ/END_OF_FILE=BEGIN_SHA INPUT_FILE IN_RECORD
$ CHK_FST_SP = F$EXTRACT(0,1,IN_RECORD)
$ IF CHK_FST_SP .EQS. "?"
$ THEN
$ GOSUB FIX_LABEL
$ LINE_CNT = 1
$ LAB_CNT = LAB_CNT + 1
$ GOSUB CHECK_NEW_PAGE
$ ELSE
$ FST_CHUNK1 = F$EXTRACT(0,62,IN_RECORD)
$ FST_CHUNK2 = F$EXTRACT(62,62,IN_RECORD)
$ OUTFILE_REC = FST_CHUNK1 + " " + FST_CHUNK2
$ WRITE OUTPUT_FILE OUTFILE_REC
$ LINE_CNT = LINE_CNT + 1
$ ENDIF
$ GOTO READ_MORE_SHA
$BEGIN_SHA:
$ CLOSE OUTPUT_FILE
$ CLOSE INPUT_FILE
$ RENAME TEMPFILE.TMP TEMPFILE.DOC;/LOG
$ COPY TEMPFILE.DOC Z$PRT:(FOCEXEC name).PRT;/LOG
$ DELETE TEMPFILE.DOC;*/LOG
$ OPEN/APPEND OUTPUT_FILE SI$FOCUS_USER:EMPTY_FILE_(FOCEXEC name).DOC
$ OUTFILE_REC=" "
$ WRITE OUTPUT_FILE OUTFILE_REC
$ OUTFILE_REC="FILE NAME : Z$PRT:" + -
F$EXTRACT(21,16,F$SEARCH("Z$PRT:(FOCEXEC name).PRT"))
$ WRITE OUTPUT_FILE OUTFILE_REC
$ OUTFILE_REC=" "
$ WRITE OUTPUT_FILE OUTFILE_REC
$ OUTFILE_REC="DATE/TIME FILE CREATED : " + F$TIME()
$ WRITE OUTPUT_FILE OUTFILE_REC
$ OUTFILE_REC=" "
$ WRITE OUTPUT_FILE OUTFILE_REC
$ CLOSE OUTPUT_FILE
$ NAME = F$GETJPI("","USERNAME")
$ MAIL/SUBJECT="INDEX CARD LABELS" -
SI$FOCUS_USER:EMPTY_FILE_(FOCEXEC name).DOC 'NAME'
$ DELETE/LOG SI$FOCUS_USER:EMPTY_FILE_(FOCEXEC name).DOC;*
$ EXIT
$FIX_LABEL:
$ IF LINE_CNT .LT. 13
$ THEN
$ OUTFILE_REC = " "
$ WRITE OUTPUT_FILE OUTFILE_REC
$ LINE_CNT = LINE_CNT + 1
$ GOTO FIX_LABEL
$ ELSE
$ RETURN
$ ENDIF
$CHECK_NEW_PAGE:
$ IF LAB_CNT .EQ. 6
$ THEN
$ OUTFILE_REC = PG_BK_REC
$ WRITE OUTPUT_FILE OUTFILE_REC
$ OUTFILE_REC = " "
$ WRITE OUTPUT_FILE OUTFILE_REC
$ WRITE OUTPUT_FILE OUTFILE_REC
$ LAB_CNT = 1
$ ENDIF
$ RETURN
FOCUS program :
-* THIS FOCEXEC WILL PRODUCE THE GRADUATE INDEX CARD LABELS.
-* VARIABLES USED :
-* FSTTRM : THE FIRST ACADEMIC TERM TO EXTRACT FROM
-* SECTRM : THE SECOND ACADEMIC TERM TO EXTRACT FROM
-* THDTRM : THE THIRD ACADEMIC TERM TO EXTRACT FROM
-*
OFFLINE CLOSE
FILEDEF OFFLINE DISK Z$PRT:TEMPFILE.DOC
-*
-* CHANGE FILE DEFINITION IF THE COMPLETE DEGREE NAME IS NEEDED.
-*
FILEDEF D_MAJOR DISK SI$FOCUS_USER:D_MAJOR_ENH.DOC
SET PAGE=NOPAGE
SET LINES=999999
SET FOCSTACK=32
JOIN CLEAR *
DEFINE FILE RPFILE
TERM_DEG_OUT/A3=IF TRM_DEG_EXPC NE ' ' THEN TRM_DEG_EXPC ELSE
DEG_TRM_RP;
END
TABLE FILE RPFILE
PRINT ROOT_KEY_RP SID_RP TERM_DEG_OUT
ON TABLE HOLD AS RPTEMP1
WHERE (TRM_DEG_EXPC EQ '&FSTTRM' OR '&SECTRM' OR '&THDTRM') OR
(DEG_TRM_RP EQ '&FSTTRM' OR '&SECTRM' OR '&THDTRM');
IF DEG_STAT_RP EQ '1' OR '2' OR '3'
END
JOIN ROOT_KEY_RP IN RPTEMP1 TO KEY IN RPFILE AS J1
TABLE FILE RPTEMP1
PRINT ROOT_KEY_RP SID_RP GPA_RP LST_TRM_STAT TERM_DEG_OUT
ON TABLE HOLD AS RPTEMP2
IF STU_LVL_STAT EQ 'CR'
END
JOIN CLEAR *
JOIN TEMP_KEY WITH ROOT_KEY_RP IN RPTEMP2 TO KEY IN RTFILE AS J1
DEFINE FILE RPTEMP2
TEMP_KEY/A14=(TERM_DEG_OUT|ROOT_KEY_RP);
END
TABLE FILE RPTEMP2
PRINT ROOT_KEY_RP SID_RP GPA_RP LST_TRM_STAT TERM_DEG_OUT
RPT9_FLG_RT RPT3_FLG_RT
ON TABLE HOLD AS RPTEMP3
WHERE TERM_RT EQ TERM_DEG_OUT;
END
JOIN TEMP_KEY WITH ROOT_KEY_RP IN RPTEMP3 TO KEY IN RTFILE AS J2
DEFINE FILE RPTEMP3
TEMP_KEY/A14=(TERM_DEG_OUT|ROOT_KEY_RP);
END
TABLE FILE RPTEMP3
PRINT GPA_RP LST_TRM_STAT TERM_DEG_OUT RPT9_FLG_RT RPT3_FLG_RT
PRIM_MJR1_RT PRIM_MJR2_RT PRIM_MNR_RT PRIM_CERT_RT
SCND_MJR1_RT SCND_MJR2_RT SCND_MNR_RT SCND_CERT_RT
GRAD_CD_RT PRIM_DEG_RT
BY SID_RP
ON TABLE HOLD AS RPTEMP5
WHERE TERM_RT EQ TERM_DEG_OUT;
END
DEFINE FILE RQFILE
GRAD_NAME_124/A54=TSCR_TXT_RQ;
JN_KEY_RQ/A11=('XX'|SID_RQ);
END
TABLE FILE RQFILE
PRINT GRAD_NAME_124 SID_RQ BY JN_KEY_RQ
ON TABLE HOLD AS RQTEMP1
IF POSITION_RQ EQ 'G'
IF TXT_LINE_NUM EQ '1'
END
DEFINE FILE RQFILE
CHK_FLD/A3=
EDIT(TSCR_TXT_RQ,'$$$$$$$$$999$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$');
END
MATCH FILE RQFILE
PRINT TSCR_TXT_RQ AS PHI_TEXT BY SID_RQ
IF CHK_FLD EQ 'PHI'
RUN
FILE RQFILE
PRINT TSCR_TXT_RQ AS WHO_TEXT BY SID_RQ
IF CHK_FLD EQ 'WHO'
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
MATCH FILE HOLD
PRINT PHI_TEXT WHO_TEXT BY SID_RQ
RUN
FILE RQFILE
PRINT TSCR_TXT_RQ AS ALL_TEXT BY SID_RQ
IF CHK_FLD EQ 'ALL'
AFTER MATCH HOLD OLD-OR-NEW
END
-RUN
DEFINE FILE HOLD
JN_KEY/A11=('XX'|SID_RQ);
END
TABLE FILE HOLD
PRINT PHI_TEXT WHO_TEXT ALL_TEXT SID_RQ BY JN_KEY
ON TABLE HOLD AS RPTEMP10
END
JOIN CLEAR *
JOIN TEMP_KEY WITH SID_RP IN RPTEMP5 TO KEY IN AAFILE AS J1
JOIN TEMP_KEY WITH SID_RP IN RPTEMP5 TO JN_KEY_RQ IN RQTEMP1 AS J5
JOIN TEMP_KEY WITH SID_RP IN RPTEMP5 TO JN_KEY IN RPTEMP10 AS J6
DEFINE FILE RPTEMP5
TEMP_KEY/A11=('XX'|SID_RP);
WHICH_NAME/A54=IF GRAD_NAME_124 NE ' ' THEN GRAD_NAME_124 ELSE
STU_NAME_AA;
TMP_NAME/A54 = GETTOK(WHICH_NAME,54,2,',',54,TMP_NAME);
SFX_NAME/A5 = GETTOK(WHICH_NAME,54,3,',',5,SFX_NAME);
FMN_NAME/A54 = LJUST(54,TMP_NAME,FMN_NAME);
FST_NAME/A54 = GETTOK(FMN_NAME,54,1,' ',54,FST_NAME);
MDL_NAME/A54 = GETTOK(WHICH_NAME,54,3,' ',54,MDL_NAME);
LST_NAME/A54 = GETTOK(WHICH_NAME,54,1,',',54,LST_NAME);
EXPNDNME/A116 = FMN_NAME || (' '|LST_NAME|' ') || SFX_NAME || '*';
CMPRSNME/A54 = GETTOK (EXPNDNME,110,1,'*',54,CMPRSNME);
R_NAME/A54 = LJUST(54,CMPRSNME,R_NAME);
-*
OUT_PROGRAM1/A60=DECODE PRIM_MJR1_RT (D_MAJOR ELSE ' ');
OUT_PROGRAM2/A60=DECODE PRIM_MJR2_RT (D_MAJOR ELSE ' ');
OUT_PROGRAM3/A60=DECODE PRIM_MNR_RT (D_MAJOR ELSE ' ');
OUT_PROGRAM4/A60=DECODE PRIM_CERT_RT (D_MAJOR ELSE ' ');
OUT_PROGRAM5/A60=DECODE SCND_MJR1_RT (D_MAJOR ELSE ' ');
OUT_PROGRAM6/A60=DECODE SCND_MJR2_RT (D_MAJOR ELSE ' ');
OUT_PROGRAM7/A60=DECODE SCND_MNR_RT (D_MAJOR ELSE ' ');
OUT_PROGRAM8/A60=DECODE SCND_CERT_RT (D_MAJOR ELSE ' ');
-*
HONORS_LINE1/A30=IF (GPA_RP GE 03.50 AND GPA_RP LT 04.00)
THEN 'WITH HONORS'
ELSE IF (GPA_RP GE 04.00) THEN 'WITH HIGHEST HONORS'
ELSE ' ';
HONORS_LINE2/A63=(PHI_TEXT);
HONORS_LINE3/A63=(WHO_TEXT);
HONORS_LINE4/A63=(ALL_TEXT);
END
TABLE FILE RPTEMP5
PRINT SID_RP R_NAME OUT_PROGRAM1 OUT_PROGRAM2 OUT_PROGRAM3 OUT_PROGRAM4
OUT_PROGRAM5 OUT_PROGRAM6 OUT_PROGRAM7 OUT_PROGRAM8
HONORS_LINE1 HONORS_LINE2 HONORS_LINE3 HONORS_LINE4
AND COMPUTE CNTR/I1 = IF SID_RP EQ LAST SID_RP THEN CNTR + 1 ELSE 1;
BY NAME_SORT_AA
ON TABLE HOLD AS LBLDATA
IF TOTAL CNTR EQ 1
END
SET LINES=999999, PAGE=NOPAGE
DEFINE FILE LBLDATA
MAIL_LN3_OUT/A35=SUBSTR(63,HONORS_LINE2,1,35,35,MAIL_LN3_OUT);
MAIL_LN4_OUT/A35=SUBSTR(63,HONORS_LINE3,1,35,35,MAIL_LN4_OUT);
MAIL_LN5_OUT/A35=SUBSTR(63,HONORS_LINE4,1,35,35,MAIL_LN5_OUT);
EXTRA_LINE/A5='? ';
XCOLMN/I4 WITH SID_RP = IF LAST XCOLMN EQ 2 THEN 1 ELSE LAST XCOLMN + 1;
XROW/I4 WITH SID_RP = IF XCOLMN EQ 1 THEN LAST XROW + 1
ELSE LAST XROW;
END
TABLE FILE LBLDATA
SUM R_NAME AS '' IN 1
OVER OUT_PROGRAM1 AS '' IN 1
OVER OUT_PROGRAM2 AS '' IN 1
OVER OUT_PROGRAM3 AS '' IN 1
OVER OUT_PROGRAM4 AS '' IN 1
OVER OUT_PROGRAM5 AS '' IN 1
OVER OUT_PROGRAM6 AS '' IN 1
OVER OUT_PROGRAM7 AS '' IN 1
OVER OUT_PROGRAM8 AS '' IN 1
OVER HONORS_LINE1 AS '' IN 1
OVER MAIL_LN3_OUT AS '' IN 1
OVER MAIL_LN4_OUT AS '' IN 1
OVER MAIL_LN5_OUT AS '' IN 1
OVER EXTRA_LINE AS '' IN 1
ACROSS XCOLMN NOPRINT
BY XROW SKIP-LINE NOPRINT
ON TABLE SAVE AS TEMP FORMAT WP
END
FILEDEF PLAY5 DISK TEMP.WP
TABLE FILE PLAY5
PRINT D2
ON TABLE HOLD AS PLAY3
IF D2 NE ' '
END
JOIN CLEAR *
Master File Description (MFD) for PUNCH2 :
FILE=PUNCH,SUFFIX=FIX SEGNAME=ROOT FIELD=D1, ,A4,A4,$ FIELD=D2, ,A124,A124,$
This page hosted by
Get your own Free Homepage