Typical DCL Command Procedure to run the program :

$! 
$!	RE-CURR-LABELS-SEL.COM
$! 
$!      Description:    Produces mailing labels (SYS$LOGIN:LASER_LABELS.TXT)
$!                      for currently enrolled students for select zip codes.
$! 
$ SET NOVERIFY 
$ SAY :== "WRITE SYS$OUTPUT" 
$ SET TERMINAL/WIDTH=80
$! 
$ SAY "This will create mailing labels for currently enrolled" 
$ SAY "students for select zip codes."  
$ SAY " "
$ SAY "(RE-CURR-LABELS-SEL)" 
$ SAY " "
$! 
$!  Prompt for term 
$!
$ENTER_PARM_TERM: 
$ READ SYS$COMMAND/TIME=60/END=EXIT/ERROR=EXIT/PROMPT= -   
  "Enter the five digit term to run labels for (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
$! 
$!  Create zip code file 
$! 
$ OPEN/WRITE output_file SYS$LOGIN:ZIP.TXT 
$! 
$!  Prompt for zip code 
$!
$ENTER_INZIP: 
$ READ SYS$COMMAND/TIME=60/END=EXIT_INZIP/ERROR=EXIT_INZIP/PROMPT= -   
  "Enter the zip code to run labels for >>> " INZIP   
$ LEN_INZIP = F$LENGTH(INZIP)      
$ IF LEN_INZIP .NE. 5 THEN GOTO ENTER_INZIP 
$ TYP_INZIP = F$TYPE(INZIP) 
$ IF TYP_INZIP .NES. "INTEGER" THEN GOTO ENTER_INZIP
$ WRITE output_file INZIP 
$!
$ READ SYS$COMMAND/TIME=60/END=EXIT_INZIP/ERROR=EXIT_INZIP/PROMPT= -   
  "Enter more zip codes? [Y,N ... default is Y] >>> " MOZIP   
$ IF (MOZIP .EQS. "Y") .OR (MOZIP .EQS. "") THEN GOTO ENTER_INZIP 
$ GOTO CREATE_JOB
$!
$EXIT_INZIP:
$ CLOSE output_file 
$!
$!  Create and execute the FOCUS command procedure.
$!
$CREATE_JOB:
$ CLOSE output_file 
$ NAME = F$GETJPI("","USERNAME")
$ 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$FOCUS:RE-CURR-LABELS-SEL TERM=" + TERMIN 
$ WRITE output_file "FIN" 
$ WRITE output_file "$ EXIT" 
$! 
$ CLOSE output_file 
$ SUBMIT/NOPRINT/NOTIFY 'COM_FILE' 
$ SYNCHRONIZE FOCTEMP
$!
$ IF F$SEARCH ("SYS$LOGIN:LABELS.FTM") .EQS. "" THEN GOTO EXIT
$ SAY " "
$ SAY " "
$ SAY "Producing Laser labels"
$ RUN LASER-LABELS
$ SAY " "
$ SAY " "
$!
$EXIT:
$!
$ SAY " " 
$ SAY "All done..." 
$ SAY " " 
$!
$!  CLEAN UP.
$!
$ DELETE/LOG SYS$LOGIN:*.FTM;*
$ DELETE/LOG SYS$LOGIN:*.MAS;*
$ DELETE/LOG SYS$LOGIN:*.WP;*
$ DELETE/LOG SYS$LOGIN:ZIP.TXT;*
$ DELETE/LOG SYS$LOGIN:FOCTEMP.COM;*
$!
$ SET DEFAULT SYS$LOGIN
$ EXIT


FOCUS program :

-*begin doc
-*
-*FEX:	RE-CURR-LABELS-SEL
-*
-*input
-*	Term
-*	Zip Codes To Select On
-*
-*      This procedure produces a file that can be run through the
-*      label program to produce mailing labels for currently enrolled
-*      students.  The user is prompted for the zip codes to use.
-*
-*end doc
-*
-*  Select students enrolled for input term.
-*
SET LINES=56                                                                   
FILEDEF ZIP DISK SYS$LOGIN:ZIP.TXT
JOIN CLEAR *
TABLE FILE RTFILE
PRINT MAJOR_1 CURR_ATTEMPTED_HRS BY STU_ID
ON TABLE HOLD AS RTTEMP1
WHERE TERM EQ '&TERM';
WHERE CURR_ATTEMPTED_HRS GT 1;
END
-*
-*  Get address information for students living in specified 
-*  zip codes.
-*
JOIN STU_ID IN RTTEMP1 TO STU_ID IN ADFILE
-*
DEFINE FILE RTTEMP1
ST_ZIP/A5=EDIT(ZIP_CODE_DPBC,'99999');
OUT_ZIP/A13=STATE|'  '|ST_ZIP|'    ';
END
TABLE FILE RTTEMP1
PRINT STREET_1 STREET_2 CITY OUT_ZIP BY STU_ID
IF ST_ZIP IS (ZIP)
WHERE AD020_ORDER LE ADDRESS_CTR; 
ON TABLE HOLD AS RTTEMP2
END
-*
-*  Get student name and produce file for label program.
-*
JOIN STU_ID IN RTTEMP2 TO STU_ID IN AAFILE
-*
TABLE FILE RTTEMP2
PRINT STU_NAME STREET_1 STREET_2 CITY OUT_ZIP 
BY OUT_ZIP NOPRINT
ON TABLE HOLD AS LABELS
END
JOIN CLEAR *


LASER-LABELS.COB :

IDENTIFICATION DIVISION.
PROGRAM-ID. LASER-LABELS.
AUTHOR.  ME.
INSTALLATION.  IRM.
DATE-WRITTEN. 08-10-89.
**************************************************************
**     M   A   I   L   I   N   G       L   A   B   E   L   S
**************************************************************
**
**  THIS PROGRAM READS IN A SORT FILE CREATED FROM FOCUS 
**  CALLED LABELS.FTM WHICH WILL RESIDE IN SYS$LOGIN.  THE 
**  INPUT FILE WILL USE THE SORT-FILE.  THIS PROGRAM WILL BUILD 
**  3 ACROSS LABELS ONLY, AT THIS TIME.  THE PRINT FILE WILL BE
**  CREATED IN SYS$LOGIN DIRECTORY AS LASER-LABELS.TXT.
**************************************************************
**************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. ALPHA-4000.
OBJECT-COMPUTER. ALPHA-4000.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT PRINT-FILE ASSIGN TO 'SYS$LOGIN:LASER_LABELS.TXT'. 
    SELECT SORT-FILE ASSIGN TO 'SYS$LOGIN:LABELS.FTM'. 
                                     
DATA DIVISION.
FILE SECTION.
FD  PRINT-FILE
    RECORD CONTAINS 96 CHARACTERS
    LABEL RECORDS ARE STANDARD
    DATA RECORD IS PRINT-RECS.              
01  PRINT-RECS		PIC X(96).
                                                 
FD  SORT-FILE                                    
    RECORD CONTAINS 144 CHARACTERS
    LABEL RECORDS ARE STANDARD                    
    DATA RECORD IS SORT-RECORD.                    
01  SORT-RECORD.
   03 SORT-NAME                           PIC X(32).
   03 SORT-ADDRESS1                       PIC X(32).
   03 SORT-ADDRESS2                       PIC X(32).
   03 SORT-CITY                           PIC X(16).
   03 SORT-STATE                          PIC X(2).
   03 FILLER                              PIC X(2).
   03 SORT-ZIP-CODE                       PIC X(9).
   03 FILLER                              PIC X(3).
   03 SORT-LAST-NAME                      PIC X(16).

WORKING-STORAGE SECTION.
01  PRINT-RECORD.
    03 PRINT-REC OCCURS 3 TIMES.
       05 LABEL-REC                      PIC X(33).
01 EOF-SORT-FILE                      PIC X(1) VALUE "N".
01 YES                                PIC X(1) VALUE "Y".                     
01 CTR1                               PIC 9(1).
01 CTR2                               PIC 9(1).
01 CTR3                               PIC 9(1).

01 HOLD-RECORD.
   03 HOLD-RECS OCCURS 3 TIMES.                                
      05  HOLD-NAME                      PIC X(30).
      05  FILLER                         PIC X(3).
      05  ADDRESS1                       PIC X(30).
      05  FILLER                         PIC X(3).
      05  ADDRESS2                       PIC X(30).
      05  FILLER                         PIC X(3).
      05  CITY                           PIC X(13).
      05  FILLER                         PIC X(1).
      05  STATE                          PIC X(2).
      05  FILLER                         PIC X(1).
      05  ZIP-CODE                       PIC X(9).
      05  FILLER                         PIC X(7).
01  I-O-STATUS                       PIC XX.
    88  OK                           VALUE  "00".
    88  WARNING-MESSAGE              VALUE  "01".
    88  NO-NEXT                      VALUE  "13".
    88  OP-FILE                      VALUE  "15".
    88  NO-VALID                     VALUE  "16".
    88  DUPL                         VALUE  "22".
    88  NOT-FOUND                    VALUE  "23".
    88  FULLs                        VALUE  "24".
    88  RECORD-NOT-FOUND             VALUE  "32".
    88  BOUND                        VALUE  "34".
    88  SOFT-LOCK                    VALUE  "90".
    88  IN-USE                       VALUE  "92".

PROCEDURE DIVISION.
PROGRAM-EXECUTION SECTION.
CONTROL-PARA.
    OPEN INPUT SORT-FILE.
    OPEN OUTPUT PRINT-FILE.
	
    INITIALIZE PRINT-RECORD.
    PERFORM WRITE-RECORD.
	MOVE ALL "X" TO PRINT_RECORD.
    PERFORM WRITE-RECORD 4 TIMES.
    INITIALIZE PRINT-RECORD.
    PERFORM WRITE-RECORD.

        READ SORT-FILE 
             AT END MOVE YES TO EOF-SORT-FILE
        END-READ.

    PERFORM BUILD-LABELS UNTIL EOF-SORT-FILE = YES.
    CLOSE SORT-FILE,PRINT-FILE.
    STOP RUN.

BUILD-LABELS.
    INITIALIZE HOLD-RECORD.
    PERFORM VARYING CTR1 FROM 1 BY 1 UNTIL CTR1 > 3 OR
                                           EOF-SORT-FILE = YES
        MOVE SORT-NAME TO HOLD-NAME(CTR1)
        MOVE SORT-ADDRESS1 TO ADDRESS1(CTR1)
        MOVE SORT-ADDRESS2 TO ADDRESS2(CTR1)
        MOVE SORT-CITY TO CITY(CTR1)
        MOVE SORT-STATE TO STATE(CTR1)
        MOVE SORT-ZIP-CODE TO ZIP-CODE(CTR1)
        INITIALIZE sort-RECORD
        READ SORT-FILE 
             AT END MOVE YES TO EOF-SORT-FILE
        END-READ
     END-PERFORM.


** LINE 2
    PERFORM VARYING CTR2 FROM 1 BY 1 UNTIL CTR2 > 3 
          MOVE HOLD-NAME(CTR2) TO LABEL-REC(CTR2)
    END-PERFORM.
    PERFORM WRITE-RECORD.
** LINE 3
    PERFORM VARYING CTR2 FROM 1 BY 1 UNTIL CTR2 > 3 
          MOVE ADDRESS1(CTR2) TO LABEL-REC(CTR2)
    END-PERFORM.
    PERFORM WRITE-RECORD.
** LINE 4
    PERFORM VARYING CTR2 FROM 1 BY 1 UNTIL CTR2 > 3 
          IF ADDRESS2(CTR2) = SPACES 
          THEN STRING CITY(CTR2) DELIMITED BY SIZE " "
                      STATE(CTR2) DELIMITED BY SIZE " "            
                      ZIP-CODE(CTR2) DELIMITED BY SIZE " "
                      DELIMITED BY SIZE INTO LABEL-REC(CTR2)
          ELSE MOVE ADDRESS2(CTR2) TO LABEL-REC(CTR2)                    
          END-IF
    END-PERFORM.
    PERFORM WRITE-RECORD.
** LINE 5          
    PERFORM VARYING CTR2 FROM 1 BY 1 UNTIL CTR2 > 3 
          IF ADDRESS2(CTR2) NOT = SPACES 
          THEN STRING CITY(CTR2) DELIMITED BY SIZE " "
                      STATE(CTR2) DELIMITED BY SIZE  " "            
                      ZIP-CODE(CTR2) DELIMITED BY SIZE " "
                      DELIMITED BY SIZE INTO LABEL-REC(CTR2)
          ELSE MOVE SPACES TO LABEL-REC(CTR2)
          END-IF
    END-PERFORM.
    PERFORM WRITE-RECORD.

** LINE 6 IS BLANK
    INITIALIZE PRINT-RECORD.
    PERFORM WRITE-RECORD 2 TIMES.

WRITE-RECORD.
    IF 	NOT (EOF-SORT-FILE = YES AND CTR1 = 1)
    THEN
	WRITE PRINT-RECS FROM PRINT-RECORD
    	INITIALIZE PRINT-RECORD
    END-IF.

 

 

This page hosted by Get your own Free Homepage

Hosted by www.Geocities.ws

1