Da IBM i 5.4 รจ possibile scrivere delle subroutine anche nei programmi CLP.
I comandi per gestire le subroutine sono:
- SUBR: inizio definizione di una subroutine (equivalente della begsr in RPG) (cfr. http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/cl/subr.htm)
- ENDSUBR: fine definizione di una subroutine (equivalente della endsr in RPG) (cfr. http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/cl/endsubr.htm)
- RTNSUBR: restituisce il controlla all’istruzione immediatamente successiva alla CALLSUBR (equivalente della leavesr in RPG) (cfr. http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/cl/rtnsubr.htm)
- CALLSUBR: esegue una subroutine (equivalente della exsr in RPG) (cfr. http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/cl/callsubr.htm)
Le definizioni delle subroutine vanno scritte in coda al sorgente del programma CLP immediatamente prima del comando ENDPGM.
PGM /* dichiarazioni */ DCL .... /* corpo principale */ ... CALLSUBR SUBR(SR01) ... /* definizione subroutine */ SUBR SUBR(SR01) ... RTNSUBR ... ENDSUBR /* ultima istruzione */ ENDPGM