X25AM Programming Manual

PTP Applications
X25AM Programming Manual527201-001
3-64
Text of TAL Example
!-------------------------------------------------------------------------
! PRINT COMMUNICATIONS ERROR MESSAGE PROCEDURE
!-------------------------------------------------------------------------
PROC PRINT^ERROR^MESSAGE (BUFFER, ERROR);
STRING .BUFFER;
INT ERROR;
BEGIN
LITERAL ERROR^MESSAGE^LENGTH = 52;
INT .INTPTR := @BUFFER '>>' 1;
INT ERROR^INDEX;
STRING .SP,
.ERROR^NUMBERS[0:9] := [ 0, 1, 2, 14, 21, 28, 33, 122, 140],
ERROR^MESSAGE = 'P' := [
!0 ! "0: NO ERROR OR NOT A COMM ERROR ",
!1 ! "1: END OF FILE ",
!2 ! "2: INVALID OPERATION ",
!3 ! "14: DEVICE DOES NOT EXIST ",
!4 ! "21: ILLEGAL COUNT PARAMETER IN WRITE/READ REQUEST ",
!5 ! "28: NUMBER OF OUTSTANDING OPERATIONS > OPEN REQUEST",
!6 ! "33: X.25 CAN NOT OBTAIN I/O POOL FOR THE REQUEST ",
!7 ! "122: REQUEST ABORTED,POSSIBLE DATA LOSS DUE TO RESET",
!8 ! "140: MODEM ERROR "];
RSCAN ERROR^NUMBERS[8] UNTIL ERROR -> @SP;
ERROR^INDEX := @SP - @ERROR^NUMBERS;
BUFFER ':=' ERROR^MESSAGE [ERROR^MESSAGE^LENGTH * ERROR^INDEX] FOR
ERROR^MESSAGE^LENGTH;
CALL CANCEL (TERM^FILE);
CALL TERM^WRITE (INTPTR, ERROR^MESSAGE^LENGTH);
IF ERROR <> 0
THEN CALL ABEND;
END; !PROC FORMAT^ERROR^MESSAGE