SOSI
SOSI オプションは、リテラル、コメント、および DBCS ユーザー定義語での、
値 X'1E' および X'1F' の扱いに影響を与えます。
| SOSI オプションの構文 |
 .-NOSOSI-.
>>-+--------+--------------------------------------------------><
'-SOSI---'
|
デフォルト: NOSOSI
省略形: なし
- NOSOSI
- NOSOSI を使用すると、値 X'1E'
および X'1F' を持つ文字位置がデータ文字として扱われます。
NOSOSI は、COBOL 85 標準に準拠します。
- SOSI
- SOSI を使用すると、COBOL for Windows のシフトアウト (SO) およびシフトイン (SI) 制御文字によって、COBOL ソース・プログラム内の ASCII DBCS 文字ストリングが区切られます。SO 文字と SI 文字は、それぞれ X'1E' と X'1F' のエンコード値を持ちます。
SO 文字と SI 文字は、COBOL for Windows のソース・コードには影響を与えません。ただし、リモート・ファイルが EBCDIC から ASCII に変換されるときのデータ処理を正しく行うために、これらの SO 文字と SI 文字がホスト DBCS の SO 文字と SI 文字のプレースホルダーとして機能する場合は例外です。
SOSI オプションが有効な場合は、COBOL for Windows の既存の規則に加えて、次の規則が適用されます。
- すべての DBCS 文字ストリング (ユーザー定義語、DBCS リテラル、英数字リテラル、国別リテラル、およびコメント内) は、SO および SI 文字で区切る必要があります。
- ユーザー定義語には、DBCS 文字と SBCS 文字の両方を含めることはできません。
- DBCS ユーザー定義語の最大長は 14 DBCS 文字です。
- 2 バイトの小文字英字がユーザー定義語内で使用される場合は、それに対応する 2 バイトの大文字英字と同等になります。
- DBCS ユーザー定義語には少なくとも 1 文字を含める必要がありますが、1 バイト表現に、その文字に対応する文字があってはなりません。
- A から Z、a から z、0 から 9、およびハイフン (-) の 1 バイト文字の 2 バイト表現を、DBCS ユーザー定義語に含めることはできません。1 バイト表現でこれらの文字に適用される規則は、2 バイト表現でも適用されます。例えば、ハイフン (-) をユーザー定義語の先頭または末尾文字にすることはできません。
- SOSI コンパイラー・オプションが有効な場合は、X'1E'
または X'1F' 値を含む英数字リテラルに対して次の規則が適用されます。
- X'1E' および X'1F' を使用した文字位置は、SO および SI 文字として扱われます。
- X'1E' および X'1F' を使用した文字位置は、リテラルの文字ストリング値に含まれます。ただしこれが、16 進数表記で表現されない DBCS や英数字リテラルの一部になっている場合は例外です。
- SO 文字と SI 文字は、0 個または偶数個の仲介バイトを持つペアでなければなりません (各ペアは SO 文字で始まります)。
- SO 文字と SI 文字のペアは、ネストすることができません。
- 引用符で区切られた N-literal
内に DBCS の引用符を埋め込むには、DBCS の引用符 1 つを表現するために DBCS の引用符を連続して 2 個使用します。N-literal が引用符で区切られている場合は、このリテラルに単一の DBCS 引用符を含めないでください。この規則は、一重引用符にも適用されます。
- SHIFT-OUT および SHIFT-IN 特殊レジスターは、SOSI オプションが有効かどうかにかかわらず、X'0E' および X'0F' を使用して定義されます。
一般に、ホストの COBOL プログラムが SO および SI 文字のエンコード値に依存する場合は、Windows ベースのワークステーションまたは AIX ワークステーションで同じ動作をしません。
関連タスク
ASCII DBCS ストリングと EBCDIC DBCS ストリングの違いの処理
|