OSI/AS Programming Manual
Example 1: Session Layer
Sample Programs
E–26 056783 Tandem Computers Incorporated
 /* Initialize the user data to a string of the */
 /* character "2." Because this is an application using */
 /* the OSI/AS Session Layer, we don't set the PCID */
 /* field of the user_data structure. This field is */
 /* used only by Presentation and ACSE and is ignored by */
 /* the OSI/AS Session Layer. */
 /* */
 user_data_2.header.znum_elements = 1;
 user_data_2.element.zlen = num_bytes_to_transfer;
 user_data_2.element.ztype = ZAPS_VAL_DATA_TYPE_VALUE;
 memset( user_data_2.value, '2', num_bytes_to_transfer );
 /* */
 /* Initialize functional units, sync, and tokens. */
 /* */
 /* */
 /* The ZL5^FU^ISPRESENT field informs OSI/AS that it */
 /* should look at the functional units specified. */
 /* During connection establishment, this field must be */
 /* set to ZAPS^VAL^TRUE. */
 /* */
 session_rqmnts_2.zl5_fu_ispresent = ZAPS_VAL_TRUE;
 /* Select only the half-duplex functional unit */
 session_rqmnts_2.zl5_fu.zhalfduplex = ZAPS_VAL_TRUE;
 session_rqmnts_2.zl5_fu.zduplex = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zexceptions = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.ztyped_data = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zneg_release = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zminorsync = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zmajorsync = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zresync = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zexpedited = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zactivity = ZAPS_VAL_FALSE;
 session_rqmnts_2.zl5_fu.zcapability_data = ZAPS_VAL_FALSE;
 /* Choose 1 to be the initial synchronization point */
 /* serial number. */
 session_rqmnts_2.zinit_sync = 1;
 /* Select the data token to be owned by the other */
 /* application ( APPL1 ) */
 session_rqmnts_2.zinit_tokens.zrelease =
 ZAPS_VAL_TOKEN_NOVALUE;
 session_rqmnts_2.zinit_tokens.zdata =
 ZAPS_VAL_TOKEN_NOTOWNED;
 session_rqmnts_2.zinit_tokens.zminorsync =
 ZAPS_VAL_TOKEN_NOVALUE;
 session_rqmnts_2.zinit_tokens.u_zmajorsync.zactivity =
 ZAPS_VAL_TOKEN_NOVALUE;
 printf( "APPL2: connect request\n" );
 status =
 APS_ASSOC_CONNECTREQ_( &cepi_2
 , (int *) &api_environment










