PAM Programming Manual

Link-Level Programming Examples
PAM Programming Manual142482
B-10
Receiving an Aggregate SDU
Receiving an Aggregate SDU
The application must also provide a procedure for receiving aggregate SDUs from a
PORT.
--/---------------------------------------------------------------/
-- PROC: Receive^
--/---------------------------------------------------------------/
PROC Receive^ ( buffer^lst^ndx );
INT(32) buffer^lst^ndx;
BEGIN
INT file^error;
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;
CALL ReadX ( L2SAP^file^num, Aggr^SDU^buf^ptr,
Max^Req^Size^B, buffer^lst^ndx );
IF <> THEN
BEGIN
CALL FileInfo ( L2SAP^file^num, file^error );
CALL Clear^Report^buffer;
report^buf^ptr ’:=’ [”Read error: “];
CALL NumOut ( report^buf^ptr[12], file^error, 10, 4 );
CALL Write^Report^Buf^and^AbEnd;
END;
END;
--/----------------- End of Receive_ procedure -------------------/
Opening and Closing a PORT
The application must also provide procedures for opening and closing PORTs.
--/---------------------------------------------------------------/
-- PROC: Open^
--/---------------------------------------------------------------/
PROC Open^;
BEGIN
INT file^error;
CALL Open ( INT^L2SAP^file^name^ptr,
L2SAP^file^num, NoWait^depth );
IF <> THEN
BEGIN
CALL FileInfo ( L2SAP^file^num, file^error );
CALL Clear^Report^Buffer; report^buf^ptr ’:=’
[”Open failed - Error: “];
CALL NumOut ( report^buf^ptr[21], file^error, 10, 4 );
CALL Write^Report^Buf^and^AbEnd;
END;
CALL SetMode ( L2SAP^file^num, 30, 1, 0 );
IF <> THEN
BEGIN
CALL FileInfo ( L2SAP^file^num, file^error );
CALL Clear^Report^Buffer; report^buf^ptr ’:=’