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 */