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.










