PAM Programming Manual
Link-Level Programming Examples
PAM Programming Manual—142482
B-30
Building an Aggregate SDU
Building an Aggregate SDU
The application must provide a function for building the aggregate SDU.
?PAGE ’FUNCTION: Build Aggr SDU’
{------------------------------------------------------------------
 FUNCTION: Build Aggr SDU
------------------------------------------------------------------}
FUNCTION Build_Aggr_SDU 
 ( VAR Aggr_SDU_buf : FSTRING ) : INTEGER;
VAR
 SDU_ndx : INTEGER;
 frmt_error : INTEGER;
 data_offset_b : INTEGER;
 count : INTEGER;
 Aggr_SDU_buf_addr : EXTADDR;
 foreign_addr_addr : EXTADDR;
 SDU_user_data_addr : EXTADDR;
BEGIN
Aggr_SDU_buf_addr := XAddr ( Aggr_SDU_buf );
frmt_error := ZL2S_Frmt_Aggr_SDU_Hdr_ 
 ( aggr_SDU_buf_addr, Max_Req_Size );
IF ( frmt_error <> ZL2S_Err_Frmt_Ok ) THEN
 BEGIN
 WriteLn ( output, ’Aggr SDU Hdr Error: ’, frmt_error );
 AbEnd_;
 END;
{--------------- In case there are 0 SDUs to build ---------------}
data_offset_b := SizeOf ( ZL2S_DDL_Aggr_SDU_Hdr_Def );
Foreign_addr_addr := XAddr ( Foreign_addr );
FOR SDU_ndx := 1 TO SDU_cnt DO
 BEGIN
 frmt_error := ZL2S_Frmt_SDU_Hdr_ ( Aggr_SDU_buf_addr,
 Port_type,
 Command_Code,
 P_F_flag,
 rsp_flag,
 Foreign_addr_addr,
 data_offset_B,
 current_user_data_size_B );
 IF ( frmt_error <> ZL2S_Err_Frmt_Ok ) THEN
 BEGIN
 WriteLn ( Output, ’SDU Hdr Error: ’, frmt_error );
 AbEnd_;
 END;
 SDU_user_data_addr := XAddr ( Aggr_SDU_buf [ data_offset_b ] );
 Init_Buf_ ( SDU_user_data_addr, 
 current_user_data_size_b, test_char );
 END;










