SQLでは、識別子に“#”、“\”および“@”を含むことができます。シェルでは、これらの文字は特殊な意味を持つ記号として扱われます。“#”はシェルスクリプト中ではコメント(注釈)の開始になります。“\”はエスケープ文字または行の継続記号として扱われます。“@”は行削除の機能に使用されます。したがって、これらの文字を使用して定義した識別子をRDBコマンドで指定する場合には、シェルの規則に従って、文字の特殊な意味を取り消すようにする必要があります。文字の特殊な意味を取り消すには、文字列を引用符(')で囲むか、その文字の直前にエスケープ文字(\)を指定します。
文字列を引用符(')で囲む例(SQL文で、#を含むDSI名を指定)
表のDSI定義
create dsi dsi#001 dso dso001 allocate …
RDBコマンド
rdbfmt -mi -i DB01.'DSI#001'
文字列の直前にエスケープ文字(\)を指定する例(SQL文で、@を含むDSI名を指定)
表のDSI定義
create dsi @DSI001 dso dso001 allocate …
RDBコマンド
rdbfmt -mi -i DB01.\@DSI001
なお、特殊な意味をもつ文字には、シェルの機能により変更できるものがあります。利用者の環境設定で、それらの変更を行っている場合には、その結果を考慮することも必要です。