OSI/AS Programming Manual
Example 2: Presentation Layer and ACSE
Sample Programs
056783 Tandem Computers Incorporated E–75
-- Set up data (two PDVs) for P-DATA request.
-- Normally, this would be generated by an ASN.1 compiler.
--
user_data.header.znum^elements := 2;
--
-- Fill out 1st user data element (1st PDV).
-- This PDV is for FTAM control.
--
@user_data_element := @user_data.element;
user_data_element.header.ztype := ZAPS^VAL^DATA^TYPE^VALUE;
user_data_element.header.zpcid := 1;
user_data_element.value ':='
[ %H04 -- octet string
, 4 -- length
, "pdv1" -- data
] -> @user_data_ptr;
user_data_element.header.zlen :=
@user_data_ptr - @user_data_element.value;
IF ( $INT( user_data_element.header.zlen ).<15> ) THEN
BEGIN
-- odd length data element, we have to add a pad byte.
@user_data_ptr := @user_data_ptr[1];
END;
--
-- Fill out 2nd user data element (2nd PDV).
-- This PDV is for FTAM FDAU PDU.
--
@user_data_element := @user_data_ptr;
user_data_element.header.ztype := ZAPS^VAL^DATA^TYPE^VALUE;
user_data_element.header.zpcid := 3;
user_data_element.value ':='
[ %H04 -- octet string
, 4 -- length
, "pdv2" -- data
] -> @user_data_ptr;
user_data_element.header.zlen :=
@user_data_ptr - @user_data_element.value;
--
-- Issue P-DATA request.
--
tag := $UDBL( error_datareq_proc );
print_aps( "APPL2: data request <-" );
status := APS_DATA_REQ_( cepi
, user_data
, tag
, ! data-operation !
, ! give-tokens !
);
CALL wait_for_aps_completion( error_datareq_proc );
IF ( status <> ZAPS^VAL^STATUS^OK ) THEN
CALL display_aps_status( error_datareq_proc );
--
-- Set up ACSE release request user data.
-- Normally, this would be generated by an ASN.1 compiler.