/* EI.Rexx Envelope PS Printer */
start:
print='no'
savefile=''
SAY 'Start: Enter filename. [Rtn]=Enter address. Q=Quit. L=List Addresses.'
PARSE UPPER PULL input
IF input == 'Q' THEN EXIT 0
IF input == 'L' THEN DO
   ADDRESS COMMAND 'DIR data:wp/addresses'
   SIGNAL start
   END
k=1
IF input == '' THEN DO
   SAY 'Enter address: line 1 [Rtn], line 2 [Rtn], etc. ''''@ when finished.'
   DO FOREVER
      PARSE PULL line.k
      IF line.k='@' THEN DO;line.k='';SIGNAL Decide;END
      k=k+1
      END /* FOREVER */
   k=k-1
   END /* input==''*/

IF input ~= '' THEN DO
   IF OPEN('file','data:wp/addresses/'input,'R') THEN DO
      l=1
      DO WHILE ~EOF('file')
         line.l=READLN('file')
         SAY line.l
         l=l+1
         END /* DO WHILE */
      k=l-1
      CALL CLOSE('file')
      END /* IF OPEN */
      ELSE DO
         SAY 'Could not open your address file. Try again.'
         SIGNAL start
         END /* ELSE */
   END /* input ~='' */



Decide:
SAY '[P]=print; [S]=save to file; [B]=do both. [Q]=quit.'
PARSE UPPER PULL answer
IF answer == 'Q' THEN EXIT 0
IF answer == 'S' | answer == 'B' THEN DO
   SAY 'Enter filename. Default path is Data:WP/addresses/'
   PARSE PULL savefile
   savefile = 'Data:WP/addresses/'savefile
   IF OPEN('outfile',savefile,'W') THEN SAY 'Saving 'savefile
   DO n=1 TO k-1
      CALL WRITELN('outfile',line.n)
      END /* DO */
   END /* S  | B */
IF answer == 'P' | answer == 'B' THEN print='yes'
IF print= 'yes' THEN CALL printaddress(k,line.)
CALL CLOSE('outfile')
SIGNAL start
EXIT 0

printaddress: PROCEDURE EXPOSE k line.

/* postscript commands and parameters */
font='/NewCenturySchlbk-ISOLatin1 findfont 12 scalefont setfont'
coordx=410                                    /* left margin         */
coordy=300                                    /* top margin          */
pscommand='moveto show'
pshow='showpage'
tran='0 -612 translate'
rotate='90 rotate'
IF OPEN('output','PAR:','W') THEN DO
   SAY 'PRINTING...'
   /* re-encode to ISOLatin vector */
   CALL WRITELN('output','/NewCenturySchlbk-Roman findfont')
   CALL WRITELN('output','dup length dict begin')
   CALL WRITELN('output','{1 index /FID ne {def} {pop pop} ifelse}forall')
   CALL WRITELN('output','/Encoding ISOLatin1Encoding def')
   CALL WRITELN('output','currentdict')
   CALL WRITELN('output','end')
   CALL WRITELN('output','/NewCenturySchlbk-ISOLatin1 exch definefont pop')
   /* end of re-encoding vector */
   CALL WRITELN('output',font rotate tran)
   DO i=1 TO k
      CALL WRITELN('output','('line.i')')
      CALL WRITELN('output',coordx coordy pscommand)
      coordy=coordy-12
      END
   coordx=135
   coordy=418
   CALL WRITELN('output','(Merrill Callaway)')
   CALL WRITELN('output', coordx coordy pscommand)
   coordy=coordy-12
   CALL WRITELN('output','(511-A Girard Blvd. SE)')
   CALL WRITELN('output', coordx coordy pscommand)
   coordy=coordy-12
   CALL WRITELN('output','(Albuquerque, NM 87106)')
   CALL WRITELN('output', coordx coordy pscommand)
   coordy=coordy-12
   CALL WRITELN('output','(USA)')
   CALL WRITELN('output', coordx coordy pscommand)
   coordy=coordy-12
   font='/Helvetica-Narrow-Bold findfont 30 scalefont setfont'
   CALL WRITELN('output',font)
   coordx=175
   coordy=275
   CALL WRITELN('output','(AIR MAIL)')
   CALL WRITELN('output', coordx coordy pscommand)
   CALL WRITELN('output',pshow)
   END
CALL CLOSE('output')
RETURN
