これは InterSystems FAQ サイトの記事です。
<PROTECT> エラーを解消するには、システム全体のライブラリデータベース(※)の読み込み専用属性を外します。
※ InterSystems IRIS の場合は IRISLIB、Caché/Ensemble/HealthShare(Cachéベース) の場合は CACHELIB
ルーチンのインポートが完了しましたら、読み込み専用に忘れずに戻すようにしてください。
【バージョン2013.1~】
[管理ポータル] > [システム管理] > [構成] > [システム構成] > [ローカルデータベース]
データベース名のリンクから「読み込み専用でマウント」のチェックを外します。
【バージョン2011.1~バージョン2012.2】
[管理ポータル] > [システム管理] > [構成] > [システム構成] > [ローカルデータベース]
該当データベースの[編集]から「読込専用?」を変更します。
【バージョン2010.2以前】
[システム管理ポータル] > [構成] > [ローカルデータベース]
該当データベースの[編集]から「読込専用?」を変更します。
通常、システム全体のライブラリデータベース(IRISLIB/CACHELIB)には InterSystems 製品 で予約されている %付 のルーチンが格納されます(ルーチン名が %a*~%y* のユーザ作成ルーチンは、システム全体のライブラリデータベース(IRISLIB/CACHELIB)に保存されます)。
ユーザ定義の%付きルーチンをシステムに保存する場合は、%Z、%z から始まる名称を推奨しています。
%Z、%zから始まるルーチンは、システムデータベース(InterSystems IRISは「IRISSYS」、Caché/Ensemble/HealthShareは「CAHESYS」)に保存され、InterSystems 製品のアップグレード時にも引き継がれます。
システム全体のライブラリデータベース(IRISLIB/CACHELIB)に保存される %Z・%z以外の%付ルーチンは、アップグレード時削除されますのでご注意ください。