pTAL Guidelines for TAL Programmers

Coding Guidelines
pTAL Guidelines for TAL Programmers527256-002
2-31
Building Parameter Masks
Building Parameter Masks
Guideline: Use procedure pointers, rather than building parameter masks, for variable
and extensible procedures.
Do not build parameter masks. If you call a procedure that has a formal parameter of
type PROC and the procedure you pass as the actual parameter specifies a
VARIABLE, EXTENSIBLE, or RETURNSCC attribute, change the PROC formal
parameter to a procedure pointer (PROCPTR) formal parameter. See Procedure
Pointers on page 3-6, for more information about procedure pointers.
For pTAL, you must change procedure q in Example 2-30 on page 2-31 as
Example 2-31 on page 2-31 shows.
Example 2-30. Building a Parameter Mask (TAL Only)
PROC p(i, j) EXTENSIBLE;
INT i, j;
BEGIN
...
END;
PROC q(aproc, param1, param2);
PROC aproc; ! aproc is a procedure to call
INT param1, param2; ! q passes parameters to aproc
BEGIN
STACK param1, param2 ! Stack parameters to pass to p
! Build extensible parameter mask
! Push mask and count on stack
CALL aproc;
END;
PROC r;
BEGIN
CALL q(p, 1, 2); ! Call q, passing p, a
END; ! procedure to call
Example 2-31. Alternative to Building a Parameter Mask
PROC q(aproc, param1, param2);
PROCPTR aproc(p1, p2) EXTENSIBLE;
INT p1, p2;
END PROCPTR;
INT param1, param2; ! q passes params to aproc
BEGIN
CALL aproc(p1, p2);
END;