TAL Programmer's Guide
Using Extended Data Segments
Managing Addressing
096254 Tandem Computers Incorporated B–17
Example B-2. D-Series Extended Addressing Program(Page 2 of 3)
PROC ext_addr_example MAIN;
 BEGIN
 status := SEGMENT_ALLOCATE_ (
 seg_id_zero, seg_id_zero_len, , , , , byte_ptr);
 IF status <> 0 THEN CALL PROCESS_DEBUG_;
 status := SEGMENT_ALLOCATE_
 (seg_id_two, seg_id_two_len, , , , , block_ptr1);
 IF status <> 0 THEN CALL PROCESS_DEBUG_;
 status := SEGMENT_USE_ (seg_id_zero, , byte_ptr);
 IF status <> 0 THEN CALL PROCESS_DEBUG_;
 byte_ptr ':='
 "This is a sample string to be scanned for an X.";
 !Put character string into
 ! current extended segment
 byte_array ':=' byte_ptr FOR str_len BYTES;
 !Extended move of string
 ! to user stack
 byte_array[-1] := 0; !Delimit the scan area
 byte_array[100] := 0; ! with zeros
 SCAN byte_array[0] UNTIL "X" -> @offset_ptr;
 IF $CARRY THEN CALL PROCESS_DEBUG_;
 !Scan on stack; if scan
 ! stopped by 0, call debugger
 offset_x := @offset_ptr '-' @byte_array[0];










