PAM Programming Manual

Link-Level Programming Examples
PAM Programming Manual142482
B-9
Sending the Aggregate SDU
current^user^data^size^B ) )
<> ZL2S^Err^Frmt^Ok ) THEN
BEGIN
CALL Clear^Report^Buffer;
report^buf^ptr ’:=’ [”SDU Hdr Error: “];
CALL NumOut ( report^buf^ptr[18],
frmt^error, 10, 2 );
CALL Write^Report^Buf^and^AbEnd;
END;
IF current^user^data^size^B THEN
Aggr^SDU^buf^ptr[data^offset^B] ’:=’
test^char FOR 1 BYTES &
Aggr^SDU^buf^ptr[data^offset^B]
FOR ( current^user^data^size^B - 1 ) BYTES;
END;
RETURN ( data^offset^b + current^user^data^size^B );
END;
Sending the Aggregate SDU
The application must provide a procedure for sending an aggregate SDU to a PORT.
--/---------------------------------------------------------------/
-- PROC: Send
--/---------------------------------------------------------------/
PROC Send^ ( buffer^lst^ndx );
INT(32) buffer^lst^ndx;
BEGIN
INT file^error;
INT out^len;
STRING .EXT Aggr^SDU^buf^ptr;
@Aggr^SDU^buf^ptr := @buffer^lst^ptr[buffer^lst^ndx].buffer;
buffer^lst^ptr[buffer^lst^ndx].in^use^flag := True;
buffer^lst^ptr[buffer^lst^ndx].test^char := test^char;
buffer^lst^ptr[buffer^lst^ndx].user^data^size^b :=
current^user^data^size^b;
out^len := Build^Aggr^SDU ( Aggr^SDU^buf^ptr );
CALL WriteX
( L2SAP^file^num, Aggr^SDU^buf^ptr, out^len, buffer^lst^ndx );
IF <> THEN
BEGIN
CALL FileInfo ( L2SAP^file^num, file^error );
CALL Clear^Report^buffer; report^buf^ptr ’:=’
[”Write error: “];
CALL NumOut ( report^buf^ptr[13], file^error, 10, 4 );
CALL Write^Report^Buf^and^AbEnd;
END;
END;
--/---------------- End of Send_ procedure -----------------------/