C ERMGEN: MACRO TO PROCESS ERROR MESSAGE TEXT ERMGEN PROC PARAMETER FAZE=1,FMN=0,FMTL=0,FMPL=0,F1=0,F2=0,F3=0,F4=0, 1 F5=0,F6=0,BACK='ERMG$' PARAMETER FZ PARAMETER FM PARAMETER FMPS=1 MACRO JUMP=BACK END ERMG$ PROC MACRO NEXT=1 DELETE 10000,^L,1..NE.0 GENERATE(P,0,0,1) 'END',6 GENERATE (FMTL,FMTL,1,FMTL.EQ.0) GENERATE(FMPL,FMPL,1,FMPL.EQ.0) PARAMETER FZ=7 DELETE 14000 10000 SCAN (I,1),2,=72 MACRO BUFFER(I,20,0,200)=^2. MACRO READ SCAN(I,20),9,=5 SCAN (C,20),2,=1 DELETE 11000,1H^2..EQ.' ' GENERATE (P,0,0,1) 'ABOVE CONTINUATION BAD. IGNORED.',1 MACRO JUMP=BACK 11000 MACRO NEXT=1 DELETE 12000, ^L,1..EQ.0 SCAN (I,1),2,=5 SCAN (C,1),2,=1 DELETE 12000,1H^2..EQ.' ' SCAN (C,1),2,=66 MACRO BUFFER(C,20)=^2. MACRO READ 12000 SCAN (I,20),1,=2 SCAN (C,20),2,=3 SCAN (C,20),3,=1 PARAMETER FZ=0^1.,FM=0^2. DELETE 15000,FZ.EQ.FAZE DELETE 13000,FZ.GT.FAZE GENERATE(P,0,0,1) 'ABOVE PH ^I,FZ. DIAGNOSTIC MISPLACED.',1 MACRO JUMP=BACK 13000 DELETE 14000,FZ.LE.6 GENERATE(P,0,0,1) 'PHASE ^I,FZ. DOESNT EXIST.',1 MACRO JUMP=BACK 14000 GENERATE(FAZE,FAZE,1,FAZE.LT.FZ) PARAMETER F^I,FAZE.= $ FMPS*2**18*(FMN.NE.0)+FMN,FMN=0,FMPS=FMPL+1 DELETE 15000,FZ.LT.7 0 DATA PC/F1,F2,F3,F4,F5,F6/ MACRO ABORT 15000 DELETE 16000,FM.GT.FMN GENERATE(P,0,0,1) 'DIAGNOSTIC ^I,FM. IN PHASE ^I,FZ. OUT OF $ SEQUENCE.',1 MACRO JUMP=BACK 16000 DELETE 17000,FM.EQ.(FMN+1) GENERATE(P,1,-1,P*(FM.EQ.(FMN+2))) 'PHASE ^I,FZ. DIAGNOSTIC $ ^I,FMN+1. AVAILABLE',6 GENERATE (P,P,0,P) 'PHASE ^I,FZ. DIAGNOSTICS ^I,FMN+1. THROUGH $ ^I,FM-1. AVAILABLE',6 0 DATA(MP(FMPL+1),FMPL=$) /^I,FM-FMN-1.*0/ 17000 SCAN (C,20),2,/@/ PARAMETER FMN=FM, Q=^L,2. SCAN (I,2),1,=6 GENERATE (P,6,6,P.LT.Q.AND.6H^1. .NE.' ') SCAN(C,2),1,=6 DELETE 17900, 6H^1. .NE.' ' PARAMETER Q = P-6 17900 DELETE 18000,Q GENERATE (P,0,0,1) 'PHASE ^I,FZ. DIAGNOSTIC ^I,FM. IS ALL BLANK',1 0 DATA(MP(FMPL+1),FMPL=$)/0/ MACRO JUMP=BACK 18000 GENERATE(Q,Q,102-Q,Q.GT.102) 'PHASE ^I,FZ. DIAGNOSTIC ^I,FM. $ TOO LONG-LAST ^I,Q-102. CHARS TRUNCATED.',1 SCAN (I,2),1,=Q PARAMETER P=FMTL+1 0DATA(MT(FMTL+1),FMTL=$)/^I,Q.H^1./ PARAMETER P=P*2**18+(FMTL-P+1) 0DATA(MP(FMPL+1),FMPL=$)/O^O,P./ MACRO JUMP=BACK END