Typical DCL Command Procedure to set up the program :
$!
$! THIS COMMAND PROCEDURE RUNS THE FOCEXEC THAT CREATES THE E-MAIL
$! DISTRIBUTION LIST FOR THE SPECIFIED CATEGORY.
$!
$ SAY :== "WRITE SYS$OUTPUT"
$ CL
$!
$ SAY " "
$ SAY "E-MAIL DISTRIBUTION LIST FOR SPECIFIED CATEGORY"
$ SAY " "
$ SAY "Please select the category to create the distribution list for"
$ SAY " "
$ SAY "1. CATEGORY 1"
$ SAY "2. CATEGORY 2"
$ SAY "3. CATEGORY 3"
$ SAY "4. CATEGORY 4"
$ SAY "5. CATEGORY 5"
$ SAY "6. CATEGORY 6"
$ SAY "7. CATEGORY 7"
$ SAY "8. CATEGORY 8"
$ SAY "9. CATEGORY 9"
$ SAY "10. CATEGORY 10"
$ SAY "11. CATEGORY 11"
$ SAY "12. CATEGORY 12"
$ SAY "13. CATEGORY 13"
$ SAY "14. All Categories"
$ SAY " "
$!
$! Prompt for selection
$!
$ENTER_SEL:
$!
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -
"E-mail Category >>> " SELIN
$ TYP_SEL = F$TYPE(SELIN)
$ IF (TYP_SEL .NES. "INTEGER") .OR (SELIN .LT. 1) .OR. (SELIN .GT. 14)
$ THEN
$ GOTO ENTER_SEL
$ ENDIF
$!
$! UPDATE FOCUS PROGRAM WITH SPECIFIED CATEGORY & THEN EXECUTE.
$!
$ SEL_1 = "MM_RPT_FLAG_14"
$ SEL_2 = "MM_RPT_FLAG_15"
$ SEL_3 = "MM_RPT_FLAG_16"
$ SEL_4 = "MM_RPT_FLAG_17"
$ SEL_5 = "MM_RPT_FLAG_18"
$ SEL_6 = "MM_RPT_FLAG_19"
$ SEL_7 = "RPT_FLAG_32"
$ SEL_8 = "RPT_FLAG_33"
$ SEL_9 = "RPT_FLAG_34"
$ SEL_10 = "RPT_FLAG_35"
$ SEL_11 = "RPT_FLAG_36"
$ SEL_12 = "RPT_FLAG_37"
$ SEL_13 = "RPT_FLAG_38"
$ SEL_14 = "MM_RPT_FLAG_13"
$!
$ OPEN/READ INPUT_FILE SI$FEX_USER:(FOCEXEC name).FEX
$ OPEN/WRITE OUTPUT_FILE SI$FEX_USER:(FOCEXEC name).TMP
$!
$READ_MORE:
$!
$ READ/END_OF_FILE=END_READ INPUT_FILE IN_RECORD
$!
$ IF F$EXTRACT(0,14,IN_RECORD) .EQS. "-* CHANGE HERE"
$ THEN
$ WRITE OUTPUT_FILE IN_RECORD
$ READ/END_OF_FILE=END_READ INPUT_FILE IN_RECORD
$ OUTFILE_REC = "PRINT " + SEL_'SELIN' + " BY STU_ID"
$ WRITE OUTPUT_FILE OUTFILE_REC
$ READ/END_OF_FILE=END_READ INPUT_FILE IN_RECORD
$ OUTFILE_REC = "WHERE " + SEL_'SELIN' + " EQ " + "''''" + "Y" + "''''" + ";"
$ WRITE OUTPUT_FILE OUTFILE_REC
$ ELSE
$ WRITE OUTPUT_FILE IN_RECORD
$ ENDIF
$!
$ GOTO READ_MORE
$!
$END_READ:
$!
$ CLOSE OUTPUT_FILE
$ CLOSE INPUT_FILE
$ RENAME/LOG SI$FEX_USER:(FOCEXEC name).TMP SI$FEX_USER:(FOCEXEC name).FEX
$!
$ SUBMIT/QUE=SYS$FOCUS SI$FEX_USER:(FOCEXEC name)
$!
$EXIT:
$!
$ EXIT
Typical DCL Command Procedure to actually run the program :
$!
$! THIS COMMAND PROCEDURE RUNS THE FOCEXEC THAT CREATES THE E-MAIL
$! DISTRIBUTION LIST FOR THE SPECIFIED CATEGORY.
$!
$ DELETE SI$FEX_USER:*.FTM;*/LOG
$ DELETE SI$FEX_USER:*.MAS;*/LOG
$ DELETE SI$FEX_USER:*.WP;*/LOG
$ DEFINE FOC$DIR2 SI$DATA, SI$MFD
$ SET DEFAULT SI$FEX_USER
$ FOCUS
EXEC (FOCEXEC name)
FIN
$!
$! FORMAT RESULTING FILE INTO MS OUTLOOK E-MAIL LIST
$!
$ OPEN/READ input_file SI$FEX_USER:MMTMP2.WP
$ OPEN/WRITE output_file SI$FEX_USER:MMTMP3.WP
$!
$ READ/END=END_REC input_file in_record
$ output_rec = ""
$!
$PROCESS_REC:
$!
$ READ/END=END_REC input_file in_record
$!
$ IF (F$LENGTH(in_record) .GT. 1)
$ THEN
$ IF (F$LENGTH(output_rec) .NE. 0)
$ THEN
$ output_rec = output_rec + ";" + F$EDIT(in_record,"COLLAPSE")
$ ELSE
$ output_rec = F$EDIT(in_record,"COLLAPSE")
$ ENDIF
$ ENDIF
$!
$ IF F$LENGTH(output_rec) .GT. 80
$ THEN
$ WRITE output_file output_rec
$ output_rec = ""
$ ENDIF
$!
$ GOTO PROCESS_REC
$!
$END_REC:
$!
$ WRITE output_file output_rec
$ CLOSE input_file
$ CLOSE output_file
$!
$! E-MAIL RESULTING LIST
$!
$ NAME = F$GETJPI("","USERNAME")
$ MAIL/SUBJECT="E-MAIL DISTRIBUTION LIST FOR SPECIFIED CATEGORY" -
SI$FEX_USER:MMTMP3.WP 'NAME'
$!
$ EXIT
FOCUS program :
JOIN CLEAR *
SET PAGE=NOPAGE
SET LINES=999999
FILEDEF AMFL080 DISK SI$DATA:AMFILE.DAT
-*
-* Get all students in selected category
-*
TABLE FILE MMFILE
ON TABLE HOLD AS MMTMP1
-* CHANGE HERE
PRINT RPT_FLAG_32 BY STU_ID
WHERE RPT_FLAG_32 EQ 'Y';
END
-*
-* Retrieve e-mail address(es) of those sselected above
-*
JOIN STU_ID IN MMTMP1 TO STUDENT_NUMBER_EM IN AMFL080 AS J1
TABLE FILE MMTMP1
PRINT PERSONAL_EMAIL AS '' OVER BUSINESS_EMAIL AS ''
WHERE (PERSONAL_EMAIL NE '') OR (BUSINESS_EMAIL NE '');
ON TABLE SAVE AS MMTMP2 FORMAT WP
END
JOIN CLEAR *
This page hosted by
Get your own Free Homepage