TAL Programmer's Guide
String-Entry Program
Sample Programs
A–4 096254 Tandem Computers Incorporated
Example A-4 shows the C-series source code for the string-entry program.
Example A-4. C-Series String-Entry Program
LITERAL maxlength = 68; !Maximum length of BUFFER
INT termnum, !File number of home terminal
 left_side, !BUFFER address of first
 ! character after prompt
 num_xferred, !Number of bytes transferred
 count, !General-purpose variable
 asterisk; !Location of asterisk
INT .ibuffer[0:maxlength/2];
STRING .buffer := @ibuffer '<<' 1, !Input-output buffer
 .blanks[0:79] := 80 * [" "]; !Blanks for initialization
?PUSHLIST, NOLIST, SOURCE $SYSTEM.SYSTEM.EXTDECS0 (
? MYTERM, OPEN, WRITEREADX, WRITEX)
?POPLIST
PROC main_proc MAIN; !Declare MAIN_PROC
 BEGIN
 CALL MYTERM (ibuffer);
 CALL OPEN (ibuffer, termnum);
 WHILE 1 DO !Infinite loop
 BEGIN
 buffer ':=' "ENTER STRING" -> left_side;
 CALL WRITEREADX (termnum, buffer, left_side '–' @buffer,
 maxlength, num_xferred);
 buffer[num_xferred] := 0; !Delimit the input
 SCAN buffer UNTIL "*" -> asterisk;
 !Scan for asterisk
 IF NOT $CARRY THEN !Asterisk found
 BEGIN
 buffer ':=' blanks FOR
 (count := asterisk '-' @buffer +
 (left_side '-' @buffer)) BYTES;
 buffer[count] := "^";
 CALL WRITEX (termnum, buffer, count+1);
 END; !End of IF
 END; !End of WHILE
 END; !End of MAIN_PROC










