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];