summaryrefslogtreecommitdiff
path: root/dviware/ln03/rmcs/texprint.com
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/ln03/rmcs/texprint.com')
-rw-r--r--dviware/ln03/rmcs/texprint.com144
1 files changed, 144 insertions, 0 deletions
diff --git a/dviware/ln03/rmcs/texprint.com b/dviware/ln03/rmcs/texprint.com
new file mode 100644
index 0000000000..d010e77947
--- /dev/null
+++ b/dviware/ln03/rmcs/texprint.com
@@ -0,0 +1,144 @@
+$!- TEXPRINT.COM ---------------------------------------------------------------
+$! ~~~~~~~~~~~~
+$! Command file to print a file to the laser printer queue designated by
+$! P1.
+$!
+$! This command procedure is invoked by the user typing TEXPRINT followed
+$! by the name(s) of the file(s) to be printed. The login procedures
+$! executed by users of TeX/LaTeX should arrange to define the DCL symbol
+$! TEXPRINT thus:
+$! $ TEXP*rint :== @TEX_COM:TEXPRINT devname
+$! where devname is the name of the output device's queue; as published,
+$! this procedure assumes that the full name of the queue is given by
+$! devname+"$LASER"
+$!
+$! Parameters:
+$!
+$! P1 (required) The name of the queue to be used for printing
+$! P2 (required) Name of file(s) to be printed and/or optional
+$! qualifiers. If this consists of qualifiers,
+$! they are placed globally, and the filename must
+$! follow in P3... Multiple file names should be
+$! separated by commas
+$! P3-P8 (optional) Further optional qualifiers, which will be
+$! appended to the last filename used.
+$!------------------------------------------------------------------------------
+$!
+$! Ensure printer queue specified
+$!
+$ SAY := WRITE SYS$OUTPUT
+$ IF P1 .EQS. ""
+$ THEN
+$ SAY "%TEXPRINT-F-NOQUEUE, No laser printer queue specified"
+$ EXIT %X10000004
+$ ENDIF
+$ queue_name = P1 + "$LASER"
+$ xxx = F$GETQUI("DISPLAY_QUEUE","QUEUE_STATUS",queue_name)
+$ IF xxx .EQS. ""
+$ THEN
+$ SAY "%TEXPRINT-F-BADQUEUE, No such queue ''queue_name'"
+$ EXIT %X10000004
+$ ENDIF
+$!
+$! Ensure file name specified
+$!
+$Get_Name:
+$ IF P2 .EQS. ""
+$ THEN
+$ INQUIRE P2 "_File name"
+$ GOTO Get_Name
+$ ENDIF
+$!
+$! Extract leading qualifier or single filename from P2...
+$!
+$ param_ctr = 2
+$ had_name = "FALSE"
+$ global_qual = ""
+$ file_list = ""
+$ related_spec = ".LN3"
+$ had_warning = "FALSE"
+$Next_Param:
+$ next_par = F$EDIT(P'param_ctr,"TRIM,UPCASE")
+$ first_part = F$ELEMENT(0,",",next_par)
+$ following = F$ELEMENT(1,",",next_par) .NES. ","
+$!
+$! If Pn starts with a "/", it must be a global qualifier, if we haven't
+$! yet had any file names, or a trailing qualifier after the last file.
+$!
+$ IF F$EXTRACT(0,1,first_part) .EQS. "/"
+$ THEN
+$ IF had_name
+$ THEN
+$ file_list = file_list + next_par
+$ param_ctr = param_ctr + 1
+$ IF param_ctr .GT. 8 THEN $ GOTO Print_It
+$ GOTO Next_Param
+$ ENDIF
+$ global_qual = global_qual + next_par
+$ param_ctr = param_ctr + 1
+$ IF param_ctr .GT. 8
+$ THEN
+$ SAY "%TEXPRINT-E-NOFILES, No files selected for printing"
+$ EXIT %X10000002
+$ ENDIF
+$ GOTO Next_Param
+$ ENDIF
+$!
+$! Otherwise, what's in first_part is a filename, with an optional trailing
+$! qualifier (local to that file).
+$!
+$ IF had_name
+$ THEN
+$ SAY "%TEXPRINT-W-PARAMS, Too many parameters \''next_par'\"
+$ had_warning = "TRUE"
+$ param_ctr = param_ctr + 1
+$ IF param_ctr .GT. 8 THEN $ GOTO Print_It
+$ GOTO Next_Param
+$ ENDIF
+$!
+$! Extract file name preceding any local qualifiers, and default to .LN3
+$!
+$ elem_ctr = 1
+$Next_Element:
+$ file_name = F$ELEMENT(0,"/",first_part)
+$ first_part = first_part - file_name
+$ next_file = F$PARSE(file_name,,related_spec,,"SYNTAX_ONLY")
+$ IF F$SEARCH(next_file) .EQS. ""
+$ THEN
+$ SAY "%TEXPRINT-W-NOSUCHFILE, Couldn't find file ''next_file'"
+$ had_warning = "TRUE"
+$ ELSE
+$ had_name = "TRUE"
+$ IF file_list .NES. "" THEN $ file_list = file_list + ","
+$ file_list = file_list + next_file + first_part
+$ related_spec = next_file
+$ ENDIF
+$!
+$! Now go back for next element of next_par, if applicable
+$!
+$ IF .NOT. following then $ GOTO Print_It
+$ first_part = F$ELEMENT(elem_ctr,",",next_par)
+$ elem_ctr = elem_ctr + 1
+$ following = F$ELEMENT(elem_ctr,",",next_par) .NES. ","
+$ GOTO Next_Element
+$!
+$! We've got everything required to execute the print command
+$!
+$Print_It:
+$ IF .NOT. had_name
+$ THEN
+$ SAY "%TEXPRINT-F-CREJOB, error creating job"
+$ SAY "-JBC-E-EMPTYJOB, no files specified in job request"
+$ EXIT %X10000004
+$ ENDIF
+$!
+$! The queue itself decides whether we print a flag page or not
+$!
+$ PRINT/QUEUE='P1'$LASER/FORM=PLOT$FORM/NOHEADER/NOFEED -
+ 'global_qual' 'file_list'
+$ print_stat = $STATUS
+$ IF .NOT. print_stat THEN $ EXIT print_stat
+$ IF had_warning THEN $ EXIT %X10000000
+$ EXIT %X10000001
+$!
+$!- END OF TEXPRINT.COM --------------------------------------------------------