特殊レジスター とは、コンパイラーによって生成されたストレージ域に名前を付ける予約語です。 それらの主な用途は、 特定の COBOL 機能によって作成される情報を保管することにあります。そのようなストレージ域はそれぞれ決まった名前を持っており、 プログラムの中でさらに定義する必要はありません。
再帰的属性が指定されたプログラムや THREAD オプションを 指定してコンパイルされたプログラム、あるいはメソッドでは、 以下の特殊レジスター用のストレージは呼び出しごとに割り振られます。
最初にプログラムを呼び出したとき、プログラムのキャンセル後に最初にそのプログラムを呼び出したとき、あるいはメソッドの起動を行ったときに、コンパイラーは特殊レジスター・フィールドを初期値に初期設定します。
以下の 4 つの場合、
以下の特殊レジスターが、各プログラムまたはメソッドの項目の初期値に 再設定されます。
さらに、前述の 4 つの場合、ADDRESS OF 特殊レジスターに設定された値は、その特定プログラムまたはメソッドの起動中にのみ持続します。
それ以外の場合は、特殊レジスターはリセットされません (前の CALL 時または INVOKE 時に設定されていた値のままです)。
その他の事柄が明示的に制限されていない場合は、 特殊レジスターの暗黙の定義 (このセクションの後の部分で指定される) と 同じ定義を持っているデータ名または ID を使用できる個所では、 特殊レジスターを使用することができます。
特別の禁止がない限り、英数字引数が使用できる関数ではどこでも英数字特殊レジスターを指定することができます。
修飾を使用できる場合は、必要に応じて特殊レジスターを修飾することによって固有性を持たせることができます。 (詳細については、修飾を参照。)