MOVE文で、英字、英数字、整数、英数字編集及び数字編集項目と日本語項目との転記を認めている。このことは、INSPECT文、STRING文及びUNSTRING文で、日本語文字(全角文字)と文字(半角文字)との混在を禁止しているので、文法上の整合はとれないが、PIC X項目による日本語の定義と格納と同様、実アプリケーション上の必要性があるということで転記を認めている。
表7-2は、転記時の処理内容を示すものであるが、送出し側データ項目には、文法上規定された正しいデータが格納されているものとする。
表7-2-転記の処理方法
送出し側データ項目の項類 | 受取側データ項目の項類 | 処理方式 |
---|---|---|
英字 | 日本語,日本語編集 | 全角文字へコード変換 |
英数字 | 日本語,日本語編集 | 全角文字へコード変換 |
英数字編集 | 日本語,日本語編集 | 全角文字へコード変換 |
整数 | 日本語,日本語編集 | 全角文字へコード変換 |
非整数 | 日本語,日本語編集 | コンパイルエラー |
数字編集 | 日本語,日本語編集 | 全角文字へコード変換 |
日本語,日本語編集 | 英字 | そのまま転記 |
日本語,日本語編集 | 英数字,英数字編集 | そのまま転記 |
日本語,日本語編集 | 整数,非整数,数字編集 | コンパイルエラー |
日本語,日本語編集 | 日本語,日本語編集 | そのまま転記 |
データの内容は、文字データのみ、日本語文字データのみ、および文字と日本語データが混在している場合がある。
文字には半角カタカナも含まれる。
ここで、文法上定義されていないのは、英字、英数字、英数字編集データ項目の内容が、日本語文字のみ、または文字と日本語文字が混在している時の処理方法である。この場合、送出し側データ項目の内容がすべて日本語文字(全角文字)の場合は、そのまま転記する。日本語文字(全角文字)と文字(半角文字)が混在しているときは、文字は全角文字へ変換を行い、日本語文字はそのまま転記する。なお、集団項目は英数字項目の扱いになるため、受取り側の各基本項目が日本語項目であっても、全角文字へのコード変換は行われない。転記は、標準桁寄せ規則に従って、必要に応じて右端を切り捨てたり、日本語空白文字の空白詰めを行う。ただし、送出し側が日本語データ項目で、受取り側データ項目の英字、英数字、英数字編集項目が2バイト単位のデータを格納できない(最後の1バイト領域へ全角文字を転記)場合には、最右端の最後のバイトは空白文字に置き換えられる。受取り側データ項目にJUSTIFIED句(けたよせ)句を書いた場合、桁寄せは、5.3に示すJUSTIFIED RIGHT句の規則に従う。
受取り側データ項目が日本語、日本語編集のとき、送出し側データ項目の内容によっては、次のように転記される。
表7-3-送出し側データ項目の内容に対する処理方法
送出し側データ項目の内容 | 処理方式 |
---|---|
正しい文字 | 全角文字へコード変換 |
不正な文字(≠日本語文字) | 日本語空白文字へコード変換 |
正しい日本語文字 | そのまま転記 |
不正な日本語文字(≠文字) | そのまま転記 |
X”00” | X”0000”29 |
X”20”=半角の空白文字 | 日本語空白文字へコード変換 |
X”FF” | X”FFFF” |
制御コード,グラフィック文字 | 日本語空白文字へコード変換 |
ただし、日本語空白文字は、シフトJISコード系ではX”8140”である。
29
opensource COBOL 1.5.2Jではそのまま転記される不具合が発生している。