A prototype for the program or procedure being called must be included in the definition specifications preceding the CALLP. Here is sample program A that calls another program B.
Sample RPGLE program to be called - PROGRAMB
d $name s 30a d $age s 3s 0 d $message s 52a c *entry plist c parm $name c parm $age /free $message = 'My name is ' + %trim($name) + ', ' + 'age ' + %trim(%editc($age:'Z')) + ' years.'; dsply $message; eval *inlr = *on; return; /end-free
Sample RPGLE calling program - PROGRAMA
d $name s 30a inz('as400') d $age s 3s 0 inz(21) d ProgramB PR Extpgm('PROGRAMB') d $name_ 30a d $age_ 3s 0 /free ProgramB($name:$age); eval *inlr = *on; return; /end-free
Tip: You can omit CALLP, thats implicit!