| **Navigation:**  [[introduction.htm|Language Reference]] > 2 - Program Source Code Format > Prototype Attributes >====== RAW (pass address only) ====== | [[protected set procedure private to a class or derived class .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[replace set replacement constructor or destructor .htm|{{btn_next_n.gif|Next page}}]] | | || **RAW** {{blk2blue.jpg|blk2blue.jpg}} The **RAW **attribute of a PROCEDURE prototype specifies that STRING or GROUP parameters pass the memory address only. This allows you to pass just the memory address of a *?, STRING, or GROUP parameter, whether passed by value or by reference, to a non-Clarion language procedure or function. Normally, STRING or GROUP parameters pass the address and the length of the string. The RAW attribute eliminates the length portion. For a prototype with a ? parameter, the parameter is taken as a LONG but passed as a "void *" which just eliminates linker warnings. This is provided for compatibility with external library functions that expect only the address of the string. If a function is prototyped with one of the following return types: ?, *? or *STRING, and the prototype has the RAW attribute, the return value is treated as a LONG. **Example:** ** MAP** **  MODULE('Party3.Obj')                 !A third-party library** **Func46 PROCEDURE(*CSTRING),REAL,C,****RAW****  !Pass CSTRING address-only to C function** **  END** ** END** **See Also:** [[procedure prototypes.htm|PROCEDURE Prototypes]] [[prototype parameter lists.htm|Prototype Parameter Lists]]