TAL Programmer's Guide
Modular Programming Example
Sample Programs
A–20 096254 Tandem Computers Incorporated
Example A-6e. D-Series Message Module (Page 2 of 3)
?SECTION msg_init
PROC msg_init;
BEGIN
INT term_name_len;
STRING .term_name[0:term_name_max_len - 1];
CALL PROCESS_GETINFO_(!process_handle!,
!file_name:max_len!,
!file_name_len!,
!priority!,
!moms_phandle!,
term_name:term_name_max_len,
term_name_len,
!...! );
CALL FILE_OPEN_(term_name:term_name_len, term_file_number);
END;
?SECTION msg
PROC msg (number, altnum);
INT number, altnum;
BEGIN
STRING .buffer[0:msg_buf_end];
STRING .bufptr := @buffer;
CASE number OF
BEGIN
msg_eof ->
buffer ':=' " *** End of File " -> @bufptr;
msg_in_open ->
buffer ':=' " *** In file open failed " -> @bufptr;
msg_in_name ->
buffer ':=' " *** Bad in file name " -> @bufptr;
msg_read ->
buffer ':=' " *** Read error " -> @bufptr;
msg_out_open ->
buffer ':=' " *** Out file open failed "-> @bufptr;
msg_out_name ->
buffer ':=' " *** Bad out file name " -> @bufptr;
msg_write ->
buffer ':=' " *** Write error " -> @bufptr;
OTHERWISE ->
;
END;
IF altnum <> 0 THEN
BEGIN
CALL NUMOUT (bufptr, altnum, 10, 5);
@bufptr := @bufptr + 5;
END;