OSI/AS Programming Manual
Example 2: Presentation Layer and ACSE
Sample Programs
056783 Tandem Computers Incorporated E–89
 , "pdv1"
 , 4 /* data */
 );
 user_data_element->header.zlen = 6;
 /* We know that the length is not odd, so we don't have */
 /* to worry about adding a pad byte. */
 /* Fill out 2nd user data element (2nd PDV). */
 /* This PDV is for FTAM FDAU PDU. */
 /* */
 user_data_element = (void *) &user_data_element->value
 [user_data_element->header.zlen];
 user_data_element->header.ztype =
 ZAPS_VAL_DATA_TYPE_VALUE;
 user_data_element->header.zpcid = 3;
 user_data_element->value[ 0 ] = 0x04; /* octet string */
 user_data_element->value[ 1 ] = 4; /* length */
 memcpy( &user_data.value[ 2 ]
 , "pdv2"
 , 4 /* data */
 );
 user_data_element->header.zlen = 6;
 /* */
 /* Issue P-DATA request. */
 /* */
 tag = error_datareq_proc;
 printf( "APPL2: data request <-\n" );
 status = APS_DATA_REQ_( cepi
 , (int *) &user_data
 , tag
 , /* data-operation */
 , /* give-tokens */
 );
 wait_for_aps_completion( error_datareq_proc );
 if ( status != ZAPS_VAL_STATUS_OK )
 display_aps_status( error_datareq_proc );
 /* */
 /* Set up ACSE release request user data. */
 /* Normally, this would be generated by an ASN.1 */
 /* ASN.1 compiler. */
 /* */
 user_data.header.znum_elements = 1;
 user_data.element.ztype = ZAPS_VAL_DATA_TYPE_VALUE;
 user_data.element.zpcid = 1; /* ignored by ACSE */
 user_data.value[ 0] = 0x28; /* EXTERNAL */
 user_data.value[ 1] = 17; /* length */
 user_data.value[ 2] = 0x02; /* INTEGER */
 user_data.value[ 3] = 1; /* length of INTEGER */
 user_data.value[ 4] = 1; /* pcid */










