V10/cmd/spitbol/makems.spt

-IN80
-TITLE MAKEMSG - PRODUCE SPITMSG.MSG FOR VAX/VMS SPITBOL SYSTEM
-STITL PREAMBLE
*	This is a Macro Spitbol program which generates the
*	error message module (SPITMSG.MSG) for the VAX/VMS Spitbol
*	interpreter.
*
*	Inputs to this program are:
*
*	1. filename.ERR - The list of error numbers and associated
*		text from the Minimal translation.  Each record
*		in this file consists of a three digit error message
*		number and the remainder of the record contains the
*		text of the message.  This file need not be sorted.
*		It is produced automatically by the XFER program.
*	2. Standard INPUT channel - The 'template' for SPITMSG.MSG
*		is read using INPUT, and so must immediately follow
*		the END statement of the program.  This template is
*		copied to SPITMSG.MSG intact, except that lines beginning
*		with "[[[" followed by a command are used to signal
*		this program to invoke some special action to substitute
*		something at that point. (E.g. Error messages).  The
*		appendages in this program which perform these special
*		actions all begin with "REP_" followed by the command
*		used in the template to invoke them.
*
*	This program creates filename.MSG automatically.
*
*	Steve Duff for VAX/VMS Spitbol Project April 1980.
*
-STITL INITIALIZATION
*
*	Set Keywords
*
	&STLIMIT = 1000000; &TRIM = 1; &ANCHOR = 1
*
*	Create File Bindings
*
	TERMINAL = 'Enter name of .ERR file (no extension).'
	TERMINAL = '	Output will be file.MSG.'
	FILENAME = TERMINAL
	INPUT(.INMESS,1,FILENAME '.ERR')		:F(NOFILE)
	OUTPUT(.MSG,2,FILENAME '.MSG')
*
*	Create the Error Message Array
*
	MESSARY	= ARRAY(899)
-STITL PROCESS THE ERROR MESSAGE FILE
*
*	This initial piece of code reads the input error message file
*	into the array MESSARY, indexing each message by its number.
*
READ_MSGS
	MESS	= INMESS			:F(MAKE_MSG)
	MESS	LEN(3) . MESSID  REM . MESSTEXT	:F(FORMATBAD)
	MAX_MESSID = GT(MESSID,MAX_MESSID) MESSID
	MESSARY[MESSID] = MESSTEXT		:(READ_MSGS)
-SPACE 3
*
*	Now we generate SPITMSG.MSG using the template.
*
MAKE_MSG
	EMLINE	= INPUT				:F(EXIT)
	EMLINE	'[[['  REM . CMD		:S($('REP_' CMD))
	MSG	= EMLINE			:(MAKE_MSG)
-SPACE 3
*
*	Here when finished
*
EXIT	:(END)
-STITL	SUBSTITUTION APPENDAGES
*
*	Substitute error messages
*
REP_DOERRS
	MESSID	= 0
RDE.LOOP
	MESSID	= LT(MESSID,MAX_MESSID) MESSID + 1	:F(MAKE_MSG)
	MSG	= ' ERR' LPAD(MESSID,3,0) ' <' MESSARY[MESSID] '>/WARNING'
	:(RDE.LOOP)
*
*	Emit definition for maximum error message number
*
REP_MAXMSG
	MSG	= '	.LITERAL SPITBOL_MAXMSG = ' MAX_MESSID	:(MAKE_MSG)
END
 .TITLE	SPITMSG - MACRO SPITBOL Error Message Definitions
 .FACILITY	SPITBOL,1000
 .SEVERITY	SEVERE
 EXIT		<EXIT Module Saved - !AD>/INFORMATIONAL/FAO=2
 EXSUP		<Execution Suppressed>/INFORMATIONAL
 INSVIRMEM	<Insufficient Virtual Memory>
 LINETRUNC	<Input Source Line Truncated>/WARNING
 LOADCRC	<Load Incompatible, Please Retranslate Source>
 LOADMEM	<Insufficient Virtual Memory For LOAD>
 LOADOPEN	<Can't Open LOAD File - !AD>/FAO=2
 LOADMAP	<Error Mapping LOAD File - !AD>/FAO=2
 LOADUNEXCOND	<Loaded Function Failed To Handle Condition At PC=!XL>/FAO=1/ERROR
 LOADUNEXTRY	<Will Attempt to Recover By Forcing Failure>/WARN
 LOADVERS	<Load Versions Incompatible, Please Retranslate Source>
 NOSYSOUT	<Output File Not Accessable>
 NOTEXITMOD	<File is Not a Saved EXIT File - !AD>/FAO=2
 OPENOUT	<Error Opening !AD as Output>/FAO=2
 OPENIN		<Error Opening !AD as Input>/FAO=2
 PAUSE		<Paused at Statement !ZL>/FAO=1/INFORMATIONAL
 STACKOVFL	<Virtual Stack Space Exhausted>
 SYNTAX		<Syntax Error In Command Line>
!
! New in V3.5(BCAB-1131)
!
 BADLINK	<Incorrectly specified BASE(s) in SPITBOL link>
 LOADBADINT	<Loaded function returned invalid integer result pointer>/WARN
 LOADBADREAL	<Loaded function returned invalid real number result ptr>/WARN
 LOADBADSTRING	<Loaded function returned invalid string descriptor>/WARN
 LOADBADUNCONV	<Loaded function returned bad block for unconverted result>/WARN
	.PAGE
 ERR000 <Internal Spitbol System Error - Please Submit SPR>/SEVERE
[[[DOERRS
[[[MAXMSG
	.END