110 lines
2.5 KiB
Plaintext
110 lines
2.5 KiB
Plaintext
Compile Subroutine ErrLog(ErrCodes)
|
|
|
|
DECLARE SUBROUTINE Set_Status
|
|
|
|
$INSERT MSG_EQUATES
|
|
|
|
EQU MSGID$ TO 1 ;* First value in ErrCodes
|
|
EQU MSGPARMS$ TO 2 ;* Second value in ErrCodes
|
|
|
|
EQU MSGTITLE$ TO 1 ;* Subvalue in MSGPARM
|
|
EQU MSGTEXT$ TO 2 ;* Subvalue in MSGPARM
|
|
|
|
Equate CRLF to \0D0A\ ;* CHAR(13):CHAR(10) for multiline messages
|
|
|
|
IF NOT(ASSIGNED(ErrCodes)) THEN
|
|
ErrCodes = 'Null Parameter Passed to ErrMsg Routine!'
|
|
END
|
|
|
|
IF INDEX(ErrCodes,@VM,1) = 0 THEN ErrCodes = @VM:ErrCodes ;* Allows passing of a straight text message
|
|
|
|
IF ErrCodes[-1,1] = @FM THEN ErrCodes[-1,1] = ''
|
|
|
|
CONVERT ']' TO @SVM IN ErrCodes
|
|
|
|
ErrRecord = ''
|
|
|
|
FOR M = 1 TO COUNT(ErrCodes,@FM) + (ErrCodes NE '')
|
|
|
|
MsgID = ErrCodes<M,MSGID$>
|
|
MsgParms = ErrCodes<M,MSGPARMS$>
|
|
|
|
BEGIN CASE
|
|
|
|
CASE ErrCodes<M,MSGID$> = 'STPROC'
|
|
MText = ErrCodes<M,MSGPARMS$,MSGTEXT$>
|
|
MTitle = ErrCodes<M,MSGPARMS$,MSGTITLE$>
|
|
|
|
CASE ErrCodes<M,MSGID$> = ''
|
|
IF INDEX(MsgParms,@SVM,1) THEN
|
|
MText = ErrCodes<M,MSGPARMS$,MSGTEXT$>
|
|
MTitle = ErrCodes<M,MSGPARMS$,MSGTITLE$>
|
|
END ELSE
|
|
MText = MsgParms
|
|
MTitle = 'Application Error Message'
|
|
END
|
|
|
|
CASE 1
|
|
|
|
* Passed in MsgID must be a system generated error message
|
|
|
|
OSREAD Reverrors FROM 'REVERROR.DAT' THEN
|
|
Pos = INDEX(Reverrors,MsgID,1)
|
|
IF Pos THEN
|
|
MText = Reverrors[Pos,CHAR(13)]
|
|
MText = Field(MText,":",2)
|
|
MText = Trim(MText)
|
|
|
|
FOR I = 1 TO COUNT(MsgParms,@VM) + (MsgParms NE '')
|
|
SWAP '%':I:'%' WITH MsgParms<1,I> IN MText
|
|
NEXT I
|
|
|
|
MText = Trim(MText)
|
|
|
|
END ELSE
|
|
MText = MsgID
|
|
END
|
|
END ELSE
|
|
|
|
MText = "OSREAD Error on file: REVERROR.DAT."
|
|
|
|
END
|
|
|
|
MTitle ='System Error Message'
|
|
|
|
END CASE
|
|
|
|
* Display the message
|
|
|
|
SWAP @SVM WITH ', ' IN MText
|
|
ErrLogLine = MTitle:' - ':MText
|
|
|
|
CDt = OCONV(Date(),'D4/')
|
|
CTm = OCONV(Time(),'MTS')
|
|
|
|
ErrRecord<1,-1> = CDt:' ':CTm:' - ':ErrLogLine
|
|
|
|
NEXT M
|
|
|
|
Set_Status(0)
|
|
|
|
OPEN 'SYSLISTS' TO ListsFile THEN
|
|
READ ErrFile FROM ListsFile,'VISION_COMM_ERROR' ELSE ErrFile = ''
|
|
|
|
NewLineCnt = COUNT(ErrRecord,@FM) + (ErrRecord NE '')
|
|
|
|
FileLineCnt = COUNT(ErrFile,@FM) + (ErrFile NE '')
|
|
IF FileLineCnt > 500 THEN
|
|
FOR I = FileLineCnt TO (FileLineCnt - NewLineCnt) STEP -1
|
|
ErrFile = DELETE(ErrFile,1,I,0)
|
|
NEXT I
|
|
END
|
|
|
|
ErrFile = INSERT(ErrFile,1,1,0,ErrRecord)
|
|
WRITE ErrFile ON ListsFile,'VISION_COMM_ERROR' ELSE NULL
|
|
END
|
|
|
|
|
|
RETURN
|
|
|