|
|
1.1 root 1: -IN80
2: -TITLE MAKEMSG - PRODUCE SPITMSG.MSG FOR VAX/VMS SPITBOL SYSTEM
3: -STITL PREAMBLE
4: * This is a Macro Spitbol program which generates the
5: * error message module (SPITMSG.MSG) for the VAX/VMS Spitbol
6: * interpreter.
7: *
8: * Inputs to this program are:
9: *
10: * 1. filename.ERR - The list of error numbers and associated
11: * text from the Minimal translation. Each record
12: * in this file consists of a three digit error message
13: * number and the remainder of the record contains the
14: * text of the message. This file need not be sorted.
15: * It is produced automatically by the XFER program.
16: * 2. Standard INPUT channel - The 'template' for SPITMSG.MSG
17: * is read using INPUT, and so must immediately follow
18: * the END statement of the program. This template is
19: * copied to SPITMSG.MSG intact, except that lines beginning
20: * with "[[[" followed by a command are used to signal
21: * this program to invoke some special action to substitute
22: * something at that point. (E.g. Error messages). The
23: * appendages in this program which perform these special
24: * actions all begin with "REP_" followed by the command
25: * used in the template to invoke them.
26: *
27: * This program creates filename.MSG automatically.
28: *
29: * Steve Duff for VAX/VMS Spitbol Project April 1980.
30: *
31: -STITL INITIALIZATION
32: *
33: * Set Keywords
34: *
35: &STLIMIT = 1000000; &TRIM = 1; &ANCHOR = 1
36: UC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
37: LC = 'abcdefghijklmnopqrstuvwxyz'
38: *
39: * Create File Bindings
40: *
41: TERMINAL = 'Enter name of .ERR file (no extension).'
42: TERMINAL = ' Output will be file.MSG.'
43: FILENAME = TERMINAL
44: INPUT(.INMESS,1,FILENAME '.ERR') :F(NOFILE)
45: OUTPUT(.MESG,2,FILENAME '.MSG')
46: *
47: * Create the Error Message Array
48: *
49: MESSARY = ARRAY(499)
50: *
51: * Special names in upper case
52: *
53: NMS = '-NOFAIL ABORT CONTINUE ANY BREAK BREAKX LEN NOTANY '
54: + 'POS RTAB RPOS SPAN TAB APPLY ARBNO ARRAY CLEAR COLLECT '
55: + 'CTI ITC BUFFER APPEND INSERT PROFILE SET '
56: + 'CONVERT DATA DEFINE DETACH DUMP DUPL EJECT ENDFILE EQ '
57: + 'EVAL EXIT FENCE GE GT HOST '
58: + 'INPUT LE LEQ LGE LGT LLE LNE LLT LOAD LPAD LT NE NOTANY OPSYN '
59: + 'OUTPUT PROTOTYPE REMDR REPLACE REVERSE RPAD '
60: + 'RTAB TAB RPOS SETEXIT SORT/RSORT '
61: + 'SPAN SIZE STOPTR SUBSTR TABLE TRACE '
62: + 'TRIM UNLOAD MAXLNGTH ERRTEXT END STLIMIT NRETURN '
63: NMT = TABLE(101)
64: NMS NMS BREAK(' ') $ T *?(NMT<T> = '!') ' ' = :S(NMS)
65: *
66: -STITL CVRT(MSG) - Convert message to mixed case
67: *
68: P = BREAK(' ') $ WD ' ' | REM $ WD
69: *
70: DEFINE('CVRT(MSG)CMS') :(CVRTE)
71: *
72: * This converts MSG to lower case except for the first word, if any,
73: * found in NMT which is left in Upper case.
74: * First char and first char after a fullstop are left in UC.
75: * Occurrences of 'ARRAY, DUMP, TABLE' after error message no. 200
76: * are not capitalised.
77: *
78: CVRT MSG P = :F(ER)
79: CMS = (DIFFER(CMS) CMS ' ',)
80: + (DIFFER(RP = NMT<WD>) WD,REPLACE(WD,UC,LC))
81: CMS = DIFFER(RP) CMS ' ' REPLACE(MSG,UC,LC) :S(CMS)
82: IDENT(MSG) :F(CVRT)
83: CMS CMS LEN(1) $ T = REPLACE(T,LC,UC)
84: CMS (BREAK('.') '. ') $ L LEN(1) $ T = L REPLACE(T,LC,UC)
85: NMT<'ARRAY'> = NMT<'DUMP'> = NMT<'TABLE'> = EQ(I,200)
86: CVRT = CMS :(RETURN)
87: CVRTE
88: *
89: -STITL PROCESS THE ERROR MESSAGE FILE
90: *
91: * This initial piece of code reads the input error message file
92: * into the array MESSARY, indexing each message by its number.
93: *
94: READ_MSGS
95: MESS = INMESS :F(MAKE_MSG)
96: MESS LEN(3) . MESSID REM . MESSTEXT :F(FORMATBAD)
97: MAX_MESSID = GT(MESSID,MAX_MESSID) MESSID
98: MESSARY[MESSID] = CVRT(MESSTEXT) :(READ_MSGS)
99: *
100: * Now we generate SPITMSG.MSG using the template.
101: *
102: MAKE_MSG
103: EMLINE = INPUT :F(EXIT)
104: EMLINE '[[[' REM . CMD :S($('REP_' CMD))
105: MESG = EMLINE :(MAKE_MSG)
106: *
107: * Here when finished
108: *
109: EXIT :(END)
110: -STITL SUBSTITUTION APPENDAGES
111: *
112: * Substitute error messages
113: *
114: REP_DOERRS
115: MESSID = 0
116: RDE.LOOP
117: MESSID = LT(MESSID,MAX_MESSID) MESSID + 1 :F(MAKE_MSG)
118: MESG = ' ERR' LPAD(MESSID,3,0) ' <' MESSARY[MESSID] '>/WARNING'
119: :(RDE.LOOP)
120: *
121: * Emit definition for maximum error message number
122: *
123: REP_MAXMSG
124: MESG = ' .LITERAL SPITBOL_MAXMSG = ' MAX_MESSID :(MAKE_MSG)
125: END
126: .TITLE SPITMSG - MACRO SPITBOL Error Message Definitions
127: .FACILITY SPITBOL,1000
128: .SEVERITY SEVERE
129: EXIT <EXIT Module Saved - !AD>/INFORMATIONAL/FAO=2
130: EXSUP <>/INFORMATIONAL
131: INSVIRMEM <Insufficient Virtual Memory>
132: LINETRUNC <>/WARNING
133: LOADCRC <Load Incompatible, Please Retranslate Source>
134: LOADMEM <Insufficient Virtual Memory For LOAD>
135: LOADOPEN <Can't Open LOAD File - !AD>/FAO=2
136: LOADMAP <Error Mapping LOAD File - !AD>/FAO=2
137: LOADUNEXCOND <Loaded Function Failed To Handle Condition At PC=!XL>/FAO=1/ERROR
138: LOADUNEXTRY <Will Attempt to Recover By Forcing Failure>/WARN
139: LOADVERS <Load Versions Incompatible, Please Retranslate Source>
140: NOSYSOUT <>
141: NOTEXITMOD <File is Not a Saved EXIT File - !AD>/FAO=2
142: OPENOUT <>
143: OPENIN <>
144: PAUSE <Paused at Statement !ZL>/FAO=1/INFORMATIONAL
145: STACKOVFL <Virtual Stack Space Exhausted>
146: SYNTAX <Syntax Error In Command Line>
147: !
148: ! New in V3.5(BCAB-1131)
149: !
150: BADLINK <>
151: LOADBADINT <Loaded function returned invalid INTEGER result pointer>/WARN
152: LOADBADREAL <Loaded function returned invalid REAL number result ptr>/WARN
153: LOADBADSTRING <Loaded function returned invalid STRING descriptor>/WARN
154: LOADBADUNCONV <Loaded function returned bad block for unconverted result>/WARN
155: !
156: ! New in V4.3
157: !
158: ENCROACH <Cannot RELOAD - virtual space encroachment>
159: HOST_NOTSUP <HOST called with unknown operands>
160: ILLIORESPEC <Illegal I/O respecification>
161: ILLIOSPEC <Illegal combination of I/O specifications>
162: LOADBADBUF <Loaded function returned bad BUFFER string descriptor>/WARN
163: LOAD_ERR <Error while attempting to LOAD function>
164: NOSTACK <No room for SPITBOL stack - external functions extend too far>
165: OPEN <Error opening file !AD>/FAO=2
166: SET2DT <SET second arg not convertible to proper datatype>
167: SET3NZ <SET third arg must be zero for this file>
168: SET3DT <SET third arg not convertible to proper datatype>
169: SETNOTSUP <SET function not yet supported for indexed files>
170: SYSERR <Internal system error - submit SPR>
171: .PAGE
172: ERR000 <Internal Spitbol System Error - Please Submit SPR>/SEVERE
173: [[[DOERRS
174: [[[MAXMSG
175: .END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.