プロトタイプは明示的に定義することも、暗黙的に定義することもできます。 異なる RPG モジュールからプロシージャーが呼び出される場合には、 呼び出し元モジュールと、プロシージャーを定義するモジュールの両方にプロトタイプが明示的に指定されていなければなりません。 プロシージャーが同じモジュール内でのみ呼び出される場合には、 明示的にプロトタイプを定義することも、それを省略することもできます。 プロトタイプが省略されると、コンパイラーは、プロシージャー・インターフェースからそれを暗黙的に定義します。
別のモジュールで定義されたプロシージャーを呼び出すモジュールでは、呼び出しを行うプログラムまたはプロシージャーの定義仕様書 にプロトタイプが含まれていなければなりません。このプロトタイプは、プログラムまたはプロシージャーを正しく呼び出し、呼び出 し元が確実に正しいパラメーターを渡せるように、コンパイラーによって使用さ れます。
プロトタイプには名前が付いている必要があります。キーワード EXTPGM または EXTPROC をプロトタイプ定義に指定した場合には、プ
ログラムまたはプロシージャーに対するすべての呼び出しで、そのキーワードにつ
いて指定された外部名が使用されます。 どちらのキーワードも指定されていない場合、
外部名が大文字でプロトタイプ名になります。 
自由形式では、DCL-PR 命令コードを指定し、その後にプロトタイプ名とキーワードを
続けます。固定形式では、定義タイプ記入項目 (24 から 25 桁目) に PR を指定
します。その他のパラメーター定義は、この PR の指定の直後に続けなければなりません。 自由形式では、プロトタイプ定義
は END-PR ステートメントで終わります。固定形式では、プロトタイプ定義は、24 から 25 桁目
がブランク以外の最初の定義仕様か、非定義仕様によって終わります。 
これらのキーワードについては、定義仕様書のキーワードを参照してください。図 1 は、数値入力パラメーターを受け入れて、文字ストリン グを戻すサブプロシージャー CVTCHR のプロトタイプを示しています。 戻り値と関連した名前はないことに注意してください。この理由から、プログラムのデバッグ時にその内容を表示することはできません。
* The returned value is the character representation of
* the input parameter NUM, left-justified and padded on
* the right with blanks.
D CVTCHR PR 31A
D NUM 31P 0 VALUE
* The following expression shows a call to CVTCHR. IF/THEN
* variable rrn has the value 431, then after this EVAL,
* variable msg would have the value
* 'Record 431 was not found.'
C EVAL msg = 'Record '
C + %TRIMR(CVTCHR(RRN))
C + ' was not found '
エクスポートされるサブプロシージャー用またはメイン・プロシージャー用のプロトタイプを書いている場合は、プロトタイプを /COPY ファイルに入れ、そのプロトタイプを、呼び出し側とそのプロシージャーを定義するモジュールの両方のソース・ファイルにコピーします。 このコーディング技法では、呼び出し元もプロシージャー自身もすべてが同一のプロトタイプを使用するため、両者にとってパラメーター・チェックの利点を最大に生かすことができます。