* free --- call PL/I storage free-er from C programs
* cfree --- call PL/I storage free-er from C programs (old name)
*
*  free (ptr)        |  cfree (ptr)
*  char *ptr;        |  char *ptr;

            SEG
            RLIT
            SYML

            SUBR     FREE
            SUBR     CFREE

            LINK
FREE        ECB      FREE$,,PTR,1
            DATA     4,C'free'
CFREE       ECB      FREE$,,PTR,1
            DATA     5,C'cfree'
            PROC

            DYNM     =20
            DYNM     PTR(3)

FREE$       ARGT
            EAL      FREE
            STL      SB%+18
            LDA      ='4000
            STA      SB%+0
*
*  The compiler always passes a pointer by value:
*  PTR contains the actual pointer argument rather
*  than a pointer to the pointer argument - so we
*  load it directly
*
            LDL      PTR
            CALL     P$FREE

            PRTN
            END