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