FOCUS program for student file :
-*
-*    Description: To create the Student file information for use in the
-*                 Voice FX grade reporting process.
-*
  JOIN CLEAR *
  SET MORE=OFF, ALL=PASS, ASNAMES=ON, NODATA=' '
  SET LINES=999999
  SET PAGE=NOPAGE
  FILEDEF AMFL010 DISK SI$DATA:AMFILE.DAT
-*
-*  Get 'highest' grade (alpha) for a student; this will
-*  determine if all grades are missing for a student.
-*
  TABLE FILE RTFILE
  PRINT TERM
  BY STU_ID
  BY HIGHEST OFFICIAL_GRADE
  IF TERM EQ '&TERM'
  IF CURR_ATTEMPTED_HRS GT 0
  ON TABLE HOLD AS (FOCUS program for student file)H9
  END
-*
  DEFINE FILE (FOCUS program for student file)H9
  THS_REC/A1=IF STU_ID NE LAST STU_ID THEN 'Y' ELSE 'N';
  END
-*
  TABLE FILE (FOCUS program for student file)H9
  PRINT TERM
        OFFICIAL_GRADE
  BY STU_ID
  IF THS_REC EQ 'Y'
  ON TABLE HOLD AS (FOCUS program for student file)H8
  END
-*
-*  Select students registered for input term
-*
-*  Create/retrieve the following data elements :
-*    Semester Grade Point Average
-*    Dean's List
-*    Academic Warning
-*    Academic Major
-*    Academic Status
-*    
  JOIN TEMP_KEY WITH STU_ID IN (FOCUS program for student file)H8 TO KEY IN RTFILE AS J9
-*
  DEFINE FILE (FOCUS program for student file)H8
  TEMP_KEY/A13=('&TERM'|STU_ID);
  SHORT_CUR_GPA/P05.3=IF CURR_GPA EQ 0.000 THEN 9.999 ELSE CURR_GPA;
  FX_DEAN_LIST/A1=IF (DEANS_LIST EQ 'D' OR '1') AND
                     (EDIT(TERM, '$$9') NE 'M') THEN 'Y' ELSE 'N';
  FX_ACAD_ACT/A1='N';
-*
  FST_ACAD_ST/A4=DECODE ACAD_ACTION (A1 '0096'
                                     A2 '0097'
                                     A3 '0098'
                                     AD '0099'
                                     DG '0012'
                                     SG '0099'
                                     PB '0010'
                                     CP '0011'
                                     GR '0100'
                                     ELSE '    ');
  SND_ACAD_ST/A4=IF (ACAD_ACTION EQ '') AND (DEANS_LIST EQ '1') THEN '0102'
            ELSE IF (ACAD_ACTION EQ '') AND (DEANS_LIST EQ 'D') THEN '0101'
            ELSE IF (ACAD_ACTION EQ 'GR') AND (DEANS_LIST EQ '1') THEN '0102'
            ELSE IF (ACAD_ACTION EQ 'GR') AND (DEANS_LIST EQ 'D') THEN '0101'
            ELSE FST_ACAD_ST;
  END
-*
  TABLE FILE (FOCUS program for student file)H8
  PRINT MAJOR_1 
        FX_DEAN_LIST 
        FX_ACAD_ACT 
        CAREER_LEVEL
        SHORT_CUR_GPA 
        CLASS_LEVEL
        OFFICIAL_GRADE
        SND_ACAD_ST
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for student file)H0
  END
-*
-*  Create the following data elements :
-*    Cumulative Grade Point Average
-*    Class of Student
-*
  JOIN STU_ID IN (FOCUS program for student file)H0 TO KEY IN RAFILE AS J1
-*
  DEFINE FILE (FOCUS program for student file)H0
  SHORT_GPA/P05.3=IF COLL_HIST_GPA EQ 0.000 THEN 9.999 ELSE COLL_HIST_GPA;
-*
-*  Compute class level using our criteria.
-*
FIG_CLASS_LEVEL/A3 = IF CAREER_LEVEL EQ 'G' THEN CLASS_LEVEL ELSE
               IF CLASS_LEVEL EQ 'US' THEN CLASS_LEVEL ELSE
               IF CUM_EARNED_HRS LT 22 THEN 'FR' ELSE
               IF CUM_EARNED_HRS GT 21 AND CUM_EARNED_HRS LT 54 THEN 'SO'
               ELSE
               IF CUM_EARNED_HRS GT 53 AND CUM_EARNED_HRS LT 87 THEN 'JR'
               ELSE
               IF CUM_EARNED_HRS GT 86 THEN 'SR' ELSE 'XX';
-*
  NUM_CLASS/A1=DECODE FIG_CLASS_LEVEL (FR '1' SO '2' JR '3' SR '4' ELSE '5');
  END
-*
  TABLE FILE (FOCUS program for student file)H0
  PRINT NUM_CLASS 
        SHORT_GPA 
        MAJOR_1 
        FX_DEAN_LIST 
        FX_ACAD_ACT 
        SHORT_CUR_GPA 
        SND_ACAD_ST
        CAREER_LEVEL
        OFFICIAL_GRADE
  BY STU_ID
  WHERE (CAREER_STU EQ CAREER_LEVEL);
  ON TABLE HOLD AS (FOCUS program for student file)H1
  END 
-*
-*  Create the following data elements :
-*    Grade Status
-*
  JOIN STU_ID IN (FOCUS program for student file)H1 TO STU_ID IN AMFL010 AS J2
-*
  DEFINE FILE (FOCUS program for student file)H1
  GRD_STATUS/A1=IF ((HOLD_COMMENT_KEY EQ 'M') OR 
                    (HOLD_COMMENT_KEY EQ 'T')) AND
                    (HOLD_STATUS NE 'C') THEN 'O' ELSE 'C';
  END
-*
  TABLE FILE (FOCUS program for student file)H1
  PRINT GRD_STATUS
        NUM_CLASS 
        SHORT_GPA 
        MAJOR_1 
        FX_DEAN_LIST 
        FX_ACAD_ACT 
        SHORT_CUR_GPA 
        SND_ACAD_ST
        CAREER_LEVEL
        OFFICIAL_GRADE
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for student file)H2
  END 
-*
-*  Create the following data elements :
-*    PIN : Personal Identification Number
-*    PAC : Personal Access Code
-*  
  JOIN STU_ID IN (FOCUS program for student file)H2 TO KEY IN AAFILE AS J3
-*
  DEFINE FILE (FOCUS program for student file)H2
  PIN_Y/A2=EDIT(BIRTH_DT,'$$99$$$$');
  PIN_M/A2=EDIT(BIRTH_DT,'$$$$99$$');
  PIN_D/A2=EDIT(BIRTH_DT,'$$$$$$99');
  PIN_OUT/A6=PIN_M|PIN_D|PIN_Y;
  PAC_OUT/A4='NNNN';
  END
-*
  TABLE FILE (FOCUS program for student file)H2
  PRINT SEX
        PIN_OUT
        PAC_OUT
        GRD_STATUS
        NUM_CLASS 
        SHORT_GPA 
        MAJOR_1 
        FX_DEAN_LIST 
        FX_ACAD_ACT 
        SHORT_CUR_GPA 
        SND_ACAD_ST
        CAREER_LEVEL
        OFFICIAL_GRADE
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for student file)H3
  END 
-*
-*  Write out the Student File in the format designated by Voice FX.
-*
-*  Do not send any GPA if student has a hold or if a student has
-*  no grades submitted.
-*
  DEFINE FILE (FOCUS program for student file)H3
  DUM_CREDIT/A9=('000.000.0');
  DUM_GPD/A4=('00.0');
  OUT_GRD_STATUS/A1=IF OFFICIAL_GRADE EQ '' THEN 'O' ELSE GRD_STATUS;
  OUT_SHORT_GPA/P05.3=IF (OUT_GRD_STATUS EQ 'O') OR
                         (OFFICIAL_GRADE EQ '') THEN 9.999 ELSE SHORT_GPA;
  OUT_SHORT_CUR_GPA/P05.3=IF (OUT_GRD_STATUS EQ 'O') OR
                             (OFFICIAL_GRADE EQ '') THEN 9.999
                          ELSE SHORT_CUR_GPA;
  OUT_SND_ACAD_ST/A4=IF GRD_STATUS EQ 'O' THEN '0120' ELSE SND_ACAD_ST;
  END
-*
  TABLE FILE (FOCUS program for student file)H3
  PRINT PIN_OUT AS '' IN 10 
        OUT_SHORT_GPA AS '' IN 16
        SEX AS '' IN 20 
        PAC_OUT AS '' IN 21 
        OUT_SHORT_CUR_GPA AS '' IN 25
        DUM_CREDIT AS '' IN 29
        FX_DEAN_LIST AS '' IN 38
        FX_ACAD_ACT AS '' IN 39 
        DUM_GPD AS '' IN 40
        OUT_GRD_STATUS AS '' IN 44 
        NUM_CLASS AS '' IN 45
        MAJOR_1 AS '' IN 46
        OUT_SND_ACAD_ST AS '' IN 81
  BY STU_ID AS '' IN 1
  ON TABLE SAVE AS (FOCUS program for student file)H4 FORMAT WP
  END
-RUN
-*
-*  Format output file so that leading spaces are eliminated.
-*
  FILEDEF (FOCUS program for student file)FM DISK (FOCUS program for student file)H4.WP
-*
  TABLE FILE (FOCUS program for student file)FM
  PRINT D2 IN 1
  ON TABLE SAVE AS (FOCUS program for student file)X1
  END
  JOIN CLEAR *
FOCUS program for grade file :
-*                                                                         *
-*    Description: To create the Grades file information for use in the    *
-*                 Voice FX grade reporting process.                       *
-*                                                                         *
  JOIN CLEAR *
  SET MORE=OFF, ALL=PASS, ASNAMES=ON, NODATA=' '
  SET LINES=999999
  SET PAGE=NOPAGE
  FILEDEF AMFL010 DISK SI$DATA:AMFILE.DAT
-*
-*  Select students registered for input term
-*
  TABLE FILE RTFILE
  PRINT SECTION_ID
        OFFICIAL_GRADE
  BY STU_ID
  IF TERM EQ '&TERM'
  IF CURR_ATTEMPTED_HRS GT 0
  ON TABLE HOLD AS (FOCUS program for grade file)H0
  END
-*
-*  Create grade file only for students who are not on hold.
-*
  JOIN STU_ID IN (FOCUS program for grade file)H0 TO STU_ID IN AMFL010 AS J1
-*
  DEFINE FILE (FOCUS program for grade file)H0
  GRD_STATUS/A1=IF ((HOLD_COMMENT_KEY EQ 'M') OR 
                    (HOLD_COMMENT_KEY EQ 'T')) AND
                    (HOLD_STATUS NE 'C') THEN 'O' ELSE 'C';
-*
-*  Create/retrieve the following data elements :
-*    Department or Area-of-Study for the course
-*    Course Number or Designation
-*    Course Grade
-*    Course Credit Value
-*
  OUT_DEPT/A10=EDIT(SECTION_ID,'9999$$$$$$$')|'      ';
  OUT_COUR_NUM/A10=EDIT(SECTION_ID,'$$$$9999$$$')|'      ';
  FAKE_SORT/A10=('1'|STU_ID);
  OUT_HRS/A4='    ';
  OUT_GRADE/A3=IF OFFICIAL_GRADE EQ ' ' THEN 'NO'
               ELSE IF EDIT(OFFICIAL_GRADE,'9$$') EQ ' ' THEN 
                  EDIT(OFFICIAL_GRADE,'$99') ELSE OFFICIAL_GRADE;
  END
-*
  TABLE FILE (FOCUS program for grade file)H0
  PRINT STU_ID AS '' IN 1 
        OUT_DEPT AS '' IN 10 
        OUT_COUR_NUM AS '' IN 20
        OUT_GRADE AS '' IN 30 
        OUT_HRS AS '' IN 35
  BY FAKE_SORT NOPRINT
  IF GRD_STATUS EQ 'C'
  ON TABLE SAVE AS (FOCUS program for grade file)H1 FORMAT WP
  END
-RUN
-*
-*  Format output file so that leading spaces are eliminated.
-*
  FILEDEF (FOCUS program for grade file)FM DISK (FOCUS program for grade file)H1.WP
-*
  TABLE FILE (FOCUS program for grade file)FM
  PRINT D2 IN 1 
  ON TABLE SAVE AS (FOCUS program for grade file)X1
  END
  JOIN CLEAR *
FOCUS program for address file :
-*                                                                         *
-*    Description: To create the Address file information for use in the   *
-*                 Voice FX grade reporting process.                       *
-*                                                                         *
  JOIN CLEAR *
  SET MORE=OFF, ALL=PASS, ASNAMES=ON, NODATA=' '
  SET LINES=999999
  SET PAGE=NOPAGE
-*
-*  Select students registered for input term
-*
-*  Create the following data element :
-*    On or Off Campus
-*
  DEFINE FILE RTFILE
  ON_CAMPUS/A1=IF DORM_CODE NE '' AND DORM_ROOM NE '' THEN 'N' ELSE 'F';
  END
-*
  TABLE FILE RTFILE
  PRINT ON_CAMPUS 
  BY STU_ID
  IF TERM EQ '&TERM'
  IF CURR_ATTEMPTED_HRS GT 0
  ON TABLE HOLD AS (FOCUS program for address file)H0
  END
-*
-*  Create/retrieve the following data elements :
-*    Address 1
-*    Address 2
-*    City
-*    State
-*    Zip
-*    Country Code
-*
  JOIN STU_ID IN (FOCUS program for address file)H0 TO KEY IN ADFILE AS J1
-*
  DEFINE FILE (FOCUS program for address file)H0
  COUN_CODE/A2=IF COUNTRY EQ 'US' THEN COUNTRY ELSE '  ';
  ADDR_TAG/A1=IF (ADDR_TYPE_1 EQ 'P') OR
                 (ADDR_TYPE_2 EQ 'P') OR
                 (ADDR_TYPE_3 EQ 'P') OR
                 (ADDR_TYPE_4 EQ 'P') OR
                 (ADDR_TYPE_5 EQ 'P') 
              THEN 'H'
              ELSE IF (ADDR_TYPE_1 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_2 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_3 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_4 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_5 EQ 'L' OR 'C') 
              THEN 'L' ELSE 'H';
-*
  ADDR_CNT/I2=IF (ADDR_TYPE_1 EQ 'P') OR
                 (ADDR_TYPE_2 EQ 'P') OR
                 (ADDR_TYPE_3 EQ 'P') OR
                 (ADDR_TYPE_4 EQ 'P') OR
                 (ADDR_TYPE_5 EQ 'P') 
              THEN 0
              ELSE IF (ADDR_TYPE_1 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_2 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_3 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_4 EQ 'L' OR 'C') OR
                      (ADDR_TYPE_5 EQ 'L' OR 'C') 
              THEN 1 ELSE 0;
  END
-*
  TABLE FILE (FOCUS program for address file)H0
  PRINT ON_CAMPUS
        ADDR_TAG 
        ADDR_CNT 
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for address file)H1
  END
-*
  TABLE FILE (FOCUS program for address file)H1
  PRINT ON_CAMPUS
        ADDR_CNT 
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
  BY STU_ID
  BY ADDR_TAG
  ON TABLE HOLD AS (FOCUS program for address file)H2
  END
-*
  DEFINE FILE (FOCUS program for address file)H2
  CNT_ADDR/I2=IF (STU_ID EQ LAST STU_ID) AND (ADDR_TAG EQ LAST ADDR_TAG)
              THEN CNT_ADDR + 1 ELSE ADDR_CNT;
  END
-*
  TABLE FILE (FOCUS program for address file)H2
  PRINT ON_CAMPUS
        ADDR_TAG
        CNT_ADDR
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for address file)H3
  END
-*
  TABLE FILE (FOCUS program for address file)H3
  PRINT ON_CAMPUS
        ADDR_TAG
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
  BY STU_ID
  WHERE (ADDR_TAG EQ 'H' AND CNT_ADDR EQ 0) OR
        (ADDR_TAG EQ 'L' AND CNT_ADDR EQ 1);
  ON TABLE HOLD AS (FOCUS program for address file)H4
  END
-*
  DEFINE FILE (FOCUS program for address file)H4
  NUM_OF_ADDR/I2=IF STU_ID NE LAST STU_ID THEN 1 ELSE NUM_OF_ADDR + 1;
  END
-*
  TABLE FILE (FOCUS program for address file)H4
  PRINT ON_CAMPUS
        NUM_OF_ADDR
        ADDR_TAG
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for address file)H5
  END
-*
  TABLE FILE (FOCUS program for address file)H5
  PRINT ON_CAMPUS
        ADDR_TAG
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
  BY STU_ID
  BY HIGHEST NUM_OF_ADDR
  ON TABLE HOLD AS (FOCUS program for address file)H6
  END
-*
-*  Create the following data element :
-*    Home or Local Address
-*
  DEFINE FILE (FOCUS program for address file)H6
  ADDR_TYPE_OUT/A1=IF ((ADDR_TAG EQ 'H' AND NUM_OF_ADDR EQ 1) AND
                       (STU_ID EQ LAST STU_ID)) OR
                       (ADDR_TAG EQ 'L' AND NUM_OF_ADDR EQ 2)
                   THEN ADDR_TAG ELSE 'B';
  END
-*
  TABLE FILE (FOCUS program for address file)H6
  PRINT ON_CAMPUS
        ADDR_TYPE_OUT
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for address file)H7
  END
-*
-*  Get the flags to determine if address information is to be
-*  printed.
-*
  JOIN STU_ID IN (FOCUS program for address file)H7 TO KEY IN AAFILE AS J2
-*
  TABLE FILE (FOCUS program for address file)H7
  PRINT ON_CAMPUS
        ADDR_TYPE_OUT
        STREET_1 
        STREET_2 
        CITY 
        STATE 
        ZIP_CODE_DPBC
        COUN_CODE 
        INFO_FLAGS_IND 
        INFO_FLAG_2
        INFO_FLAG_3 
        INFO_FLAG_4
        INFO_FLAG_25 
        INFO_FLAG_20 
        INFO_FLAG_29
        INFO_RLSE_FLAG 
        STU_NAME 
  BY STU_ID
  ON TABLE HOLD AS (FOCUS program for address file)H8
  END
-*
-*  Create the following data element :
-*    Student First Name
-*    Student Middle Name
-*    Student Last Name
-*
  DEFINE FILE (FOCUS program for address file)H8
  FST_NAME/A32 = GETTOK(STU_NAME,32,2,' ',32,FST_NAME);
  FST_NAME_EXT/A15=EDIT(FST_NAME,'999999999999999$$$$$$$$$$$$$$$$$');
  MDL_NAME/A32 = GETTOK(STU_NAME,32,3,' ',32,MDL_NAME);
  MDL_NAME_INT/A1=EDIT(MDL_NAME,'9$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$');
  LST_NAME/A32 = GETTOK(STU_NAME,32,1,',',32,LST_NAME);
  LST_NAME_EXT/A20=EDIT(LST_NAME,'99999999999999999999$$$$$$$$$$$$');
-*
  ZIP_PART_1/A5=EDIT(ZIP_CODE_DPBC,'99999$$$$$$$');
  ZIP_PART_2/A4=EDIT(ZIP_CODE_DPBC,'$$$$$9999$$$');
  ZIP_OUT/A10=IF ZIP_PART_2 EQ '0000' OR '    ' 
              THEN ZIP_PART_1|'     '
              ELSE ZIP_PART_1|'-'|ZIP_PART_2;
-*
  OUT_LINE_1/A45=IF (INFO_FLAGS_IND EQ 'Y') OR
                    (INFO_FLAG_2 EQ 'Y') OR
                    (INFO_FLAG_3 EQ 'Y') OR
                    (INFO_FLAG_4 EQ 'Y') OR
                    (INFO_FLAG_25 EQ 'Y') OR
                    (INFO_FLAG_20 EQ 'Y') OR
                    (INFO_FLAG_29 EQ 'Y') OR
                    (INFO_RLSE_FLAG EQ 'Y')
               THEN (STU_ID|'CONFIDENTIAL')
               ELSE (STU_ID|FST_NAME_EXT|MDL_NAME_INT|LST_NAME_EXT);
-*
  STREET1_OUT/A40=IF (INFO_FLAGS_IND EQ 'Y') OR
                     (INFO_FLAG_2 EQ 'Y') OR
                     (INFO_FLAG_3 EQ 'Y') OR
                     (INFO_FLAG_4 EQ 'Y') OR
                     (INFO_FLAG_25 EQ 'Y') OR
                     (INFO_FLAG_20 EQ 'Y') OR
                     (INFO_FLAG_29 EQ 'Y') OR
                     (INFO_RLSE_FLAG EQ 'Y')
                  THEN ('  ')
                  ELSE STREET_1;
-*
  STREET2_OUT/A40=IF (INFO_FLAGS_IND EQ 'Y') OR
                     (INFO_FLAG_2 EQ 'Y') OR
                     (INFO_FLAG_3 EQ 'Y') OR
                     (INFO_FLAG_4 EQ 'Y') OR
                     (INFO_FLAG_25 EQ 'Y') OR
                     (INFO_FLAG_20 EQ 'Y') OR
                     (INFO_FLAG_29 EQ 'Y') OR
                     (INFO_RLSE_FLAG EQ 'Y')
                  THEN ('  ')
                  ELSE STREET_2;
-*
  CITY_OUT/A20=IF (INFO_FLAGS_IND EQ 'Y') OR
                  (INFO_FLAG_2 EQ 'Y') OR
                  (INFO_FLAG_3 EQ 'Y') OR
                  (INFO_FLAG_4 EQ 'Y') OR
                  (INFO_FLAG_25 EQ 'Y') OR
                  (INFO_FLAG_20 EQ 'Y') OR
                  (INFO_FLAG_29 EQ 'Y') OR
                  (INFO_RLSE_FLAG EQ 'Y')
             THEN ('  ')
             ELSE CITY;
-*
  STATE_OUT/A2=IF STATE EQ 'XX' THEN '  ' ELSE STATE;
  OUT_LINE_2/A19=IF (INFO_FLAGS_IND EQ 'Y') OR
                    (INFO_FLAG_2 EQ 'Y') OR
                    (INFO_FLAG_3 EQ 'Y') OR
                    (INFO_FLAG_4 EQ 'Y') OR
                    (INFO_FLAG_25 EQ 'Y') OR
                    (INFO_FLAG_20 EQ 'Y') OR
                    (INFO_FLAG_29 EQ 'Y') OR
                    (INFO_RLSE_FLAG EQ 'Y')
                 THEN ('  ')
                 ELSE 
                 (STATE_OUT|ZIP_OUT|COUN_CODE|'  '|ADDR_TYPE_OUT|ON_CAMPUS);
  END
-*
  TABLE FILE (FOCUS program for address file)H8
  PRINT OUT_LINE_1 AS '' IN 1 OVER 
        STREET1_OUT AS '' IN 1 OVER 
        STREET2_OUT AS '' IN 1 OVER 
        CITY_OUT AS '' IN 1 OVER 
        OUT_LINE_2 AS '' IN 1 
  BY STU_ID NOPRINT
  ON TABLE SAVE AS (FOCUS program for address file)H9 FORMAT WP
  END
-RUN
-*
-*  Format output file so that leading spaces are eliminated.
-*
  FILEDEF (FOCUS program for address file)FM DISK (FOCUS program for address file)H9.WP
  TABLE FILE (FOCUS program for address file)FM
  PRINT D2
  ON TABLE SAVE AS (FOCUS program for address file)X1
  END
  JOIN CLEAR *
Master File Description (MFD) for FOCUS program that creates student file :
FILE=PLAY5,SUFFIX=FIX
SEGNAME=ROOT
FIELDNAME=D1,E01,A02,A02,$
FIELDNAME=D2,E02,A84,A84,$
Master File Description (MFD) for FOCUS program that creates the grade file :
FILE=PLAY5,SUFFIX=FIX
SEGNAME=ROOT
FIELDNAME=D1,E01,A02,A02,$
FIELDNAME=D2,E02,A38,A38,$
Master File Description (MFD) for FOCUS program that creates the address file :
FILE=PLAY5,SUFFIX=FIX
SEGNAME=ROOT
FIELDNAME=D1,E01,A04,A04,$
FIELDNAME=D2,E02,A76,A76,$
VMS DCL command procedure for formatting the extract files :
$!
$!  Command procedure to correctly name the STUDENT, GRADES, and ADDRESS
$!  files and to create the CONTROL file.  These files are used for the
$!  Voice FX grade reporting transmission.
$!
$!  Determine date to use in file name.
$!
$	file_month = f$extract(5,2,f$cvtime(f$time()))
$	file_day = f$extract(8,2,f$cvtime(f$time()))
$!
$!  Open CONTROL file.
$!
$	control_file = "ctr1" + file_month + file_day + ".fil"
$	OPEN/WRITE out_control_file 'control_file'
$!
$!  Process STUDENT file.
$!
$!  Check to see if STUDENT file exists, if not bypass processing.
$!
$       IF F$SEARCH ("(FOCUS program for student file)X1.FTM") .EQS. "" THEN GOTO Process_GRADES
$	stu_output_file = "stu1" + file_month + file_day + ".dat"
$	OPEN/READ input_file (FOCUS program for student file)X1.FTM
$	OPEN/WRITE output_file 'stu_output_file'
$	cnt_rec = 0
$!
$!  Skip blank line that appears at the top of the data file
$!
$	READ/END_OF_FILE=Exit_Read_Stu input_file input_record
$!
$Loop_Read_Stu:
$!
$	READ/END_OF_FILE=Exit_Read_Stu input_file input_record
$!
$	cnt_rec = cnt_rec + 1
$	WRITE output_file input_record
$	GOTO Loop_Read_Stu
$!
$Exit_Read_Stu:
$!
$!  Include PHANTOM students
$!
$	input_record = "9999990011234569.99F    9.99               O1BADM"
$	WRITE output_file input_record
$	input_record = "999999002123456    F                       C1BADM                               0096"
$	WRITE output_file input_record
$	input_record = "9999990031234569.99M    9.99               O1BADM"
$	WRITE output_file input_record
$	input_record = "9999990041234569.99M    9.99               O1BADM                               0120"
$	WRITE output_file input_record
$	cnt_rec = cnt_rec + 4
$!
$ 	CLOSE input_file
$	CLOSE output_file
$!
$!  Update CONTROL file with STUDENT file information
$!
$	output_record = stu_output_file + "''cnt_rec'" + "          "
$	output_record[19,1] := "R"
$	WRITE out_control_file output_record
$!
$Process_GRADES:
$!
$!  Process GRADES file.
$!
$!  Check to see if GRADES file exists, if not bypass processing.
$!
$       IF F$SEARCH ("(FOCUS program for grade file)X1.FTM") .EQS. "" THEN GOTO Process_ADDR
$	grd_output_file = "grd1" + file_month + file_day + ".dat"
$	OPEN/READ input_file (FOCUS program for grade file)X1.FTM
$	OPEN/WRITE output_file 'grd_output_file'
$	cnt_rec = 0
$!
$!  Skip blank line that appears at the top of the data file
$!
$	READ/END_OF_FILE=Exit_Read_Grd input_file input_record
$!
$Loop_Read_Grd:
$!
$	READ/END_OF_FILE=Exit_Read_Grd input_file input_record
$!
$	cnt_rec = cnt_rec + 1
$	WRITE output_file input_record
$	GOTO Loop_Read_Grd
$!
$Exit_Read_Grd:
$!
$!  Include PHANTOM students
$!
$	input_record = "999999001INAS      425       NO"
$	WRITE output_file input_record
$	input_record = "999999001INAS      426       NO"
$	WRITE output_file input_record
$	input_record = "999999002WRIT      101       F"
$	WRITE output_file input_record
$	input_record = "999999003PLSC      201       F"
$	WRITE output_file input_record
$	input_record = "999999004MGMT      341       N"
$	WRITE output_file input_record
$	cnt_rec = cnt_rec + 4
$!
$ 	CLOSE input_file
$	CLOSE output_file
$!
$!  Update CONTROL file with GRADES file information
$!
$	output_record = grd_output_file + "''cnt_rec'" + "          "
$	output_record[19,1] := "R"
$	WRITE out_control_file output_record
$!
$Process_ADDR:
$!
$!  Process ADDRESS file.
$!
$!  Check to see if ADDRESS file exists, if not bypass processing.
$!
$       IF F$SEARCH ("(FOCUS program for address file)X1.FTM") .EQS. "" THEN GOTO Exit_Pgm
$	addr_output_file = "add1" + file_month + file_day + ".dat"
$	OPEN/READ input_file (FOCUS program for address file)X1.FTM
$	OPEN/WRITE output_file 'addr_output_file'
$	cnt_rec = 0
$!
$!  Skip blank line that appears at the top of the data file
$!
$	READ/END_OF_FILE=Exit_Read_Addr input_file input_record
$!
$Loop_Read_Addr:
$!
$	READ/END_OF_FILE=Exit_Read_Addr input_file input_record
$!
$	cnt_rec = cnt_rec + 1
$	WRITE output_file input_record
$	GOTO Loop_Read_Addr
$!
$Exit_Read_Addr:
$!
$ 	CLOSE input_file
$	CLOSE output_file
$!
$!  Update CONTROL file with ADDRESS file information
$!
$	output_record = addr_output_file + "''cnt_rec'" + "          "
$	output_record[19,1] := "R"
$	WRITE out_control_file output_record
$!
$Exit_Pgm:
$!
$	CLOSE out_control_file
$	EXIT

 

This page hosted by Get your own Free Homepage

Hosted by www.Geocities.ws

1