COBOL2002 言語 拡張仕様編

[目次][索引][前へ][次へ]

23.3.3 日本語文字の扱い-V3Rec,Fixed-V3Rec,Variable

<この項の構成>
(1) 機能
(2) 文字集合
(3) 文字列
(4) コーディング規則
(5) 原始文操作機能の特性

(1) 機能

-V3Rec,Fixed,-V3Rec,Variableは,利用者がメインフレーム(VOS3)からファイル転送された,メインフレームでの固定長レコード形式または可変長レコード形式のCOBOL原始プログラムを,メインフレームの日本語の扱いに合わせて翻訳することを可能とするためにサポートした機能である。すなわち,この機能を用いると,日本語混在のCOBOL原始プログラムを,機能キャラクタが付加されたものとみなした,原始プログラムの領域の意識および語の構成規則のエラーチェックを行って翻訳することができる。また,このシステムでの標準コードと拡張コードの等価規則を無効とした形での翻訳を可能とする。

ここでは,日本語混在のCOBOL原始プログラムを,メインフレームの日本語の扱いに合わせて翻訳する上で,標準仕様と異なる言語仕様について述べる。

(2) 文字集合

日本語文字を用いる場合,日本語文字列の直前と直後に,メインフレームでの「KEISコード開始」と「EBCDIKコード開始」を表す2バイトの機能キャラクタ(シフトコード)が,それぞれ付加されたものとみなす。ここでは,以降,これらの機能キャラクタをそれぞれ,[漢]と[E]で表す。

(a) [漢],[E]を仮定する条件

-V3Recオプションの指定が有効な場合,このシステムで[漢],[E]が仮定される条件を次に示す。

(b) 空白に関する機能キャラクタの扱いによるメインフレームとの差異

このシステムは,空白に関する機能キャラクタの扱いで,メインフレームと以下の差異がある。

空白に関する機能キャラクタの扱いをメインフレームと同等にしたい場合,-V3Recオプションと合わせて-V3RecFCSpaceオプションを指定する。-V3RecFCSpaceオプションについては,マニュアル「COBOL2002 ユーザーズガイド」の-V3RecFCSpaceオプションを参照のこと。

(例)
日本語文字が含まれた語に対して,機能キャラクタが仮定される例を以下に示す。

-V3Recオプション指定がない場合
 
      01  得意先.
        02  データ    PIC N(2) VALUE N'日立'.
        02  空白      PIC N(2) VALUE N'▲▲'.
 

-V3Recオプション指定だけがある場合
 
       01 [漢]得意先[E].
        02  [漢]データ    [E]PIC N(2) VALUE N'[漢]日立[E]'.
        02  [漢]空白      [E]PIC N(2) VALUE N'▲▲'.
 

-V3Recオプションと合わせて-V3RecFCSpaceオプションを指定した場合
 
       01 [漢]得意先[E].
        02  [漢]データ    [E]PIC N(2) VALUE N'[漢]日立[E]'.
        02  [漢]空白      [E]PIC N(2) VALUE N'[漢]▲▲[E]'.
 
(凡例)▲:日本語空白

なお,UNIX COBOL2002では,-V3RecFCSpace オプションを使用できない。

(3) 文字列

利用者定義語,定数および注釈に日本語文字を使用できる。

(a) COBOLの語

COBOLの語とは,31字以下の文字列であって,利用者定義語,システム名,予約語および関数名のどれかとする。

この機能では,標準コードの文字に換算して31字以下の文字列とする。

各英小文字は,その対応する英大文字に等価とみなす。ただし,空白を除く,拡張コードの各文字は,その対応する標準コードの各文字に等価とはみなさない。

拡張コードの空白は,標準コードの2字の空白と等価とみなす。

(b) 定数

72カラム以前に改行文字がある場合,改行文字から72カラムに空白を仮定する。

構文規則
  1. 文字列が引用符を表すならば,引用符の1字を表すのに,標準コードの連続する2字の引用符を用いなければならない。

形式
[図データ]

構文規則
  • 文字1は,拡張コードの任意の文字および標準コードの空白とする。
  • 拡張コードの引用符は,分離符の引用符とはみなさない。したがって,拡張コードの引用符は,文字1内の任意の位置に書くことができる。

(4) コーディング規則

(a) 行と文字位置

原始プログラムは英数字文字を1文字(1バイト)単位,日本語文字を2バイト単位として80文字で構成される行中に記述する。

メインフレームの固定長レコード形式によって翻訳する場合,日本語文字定数など前後に付ける機能キャラクタは,プログラム原文領域(8カラムから72カラム)中になければならない。

メインフレームの可変長レコード形式によって翻訳する場合,日本語文字列の前後に付ける機能キャラクタを除くと,原始文記述はプログラム原文領域中に納まっていなければならない。

(b) 日本語文字の継続

日本語文字は,複数行にわたって定義できる。この場合,継続行はプログラム原文領域(8カラムから72カラム)で指定しなければならない。ただし,日本語文字の継続に関しては,機能キャラクタの扱いがメインフレームと異なるため,メインフレームとの完全な互換性はない。

(5) 原始文操作機能の特性

この機能では,原始文操作機能であるCOPY文のREPLACING指定およびREPLACE文によって語の置き換えがあり,置き換えられることによって,本来境界Rまでに納まっていた原文語が機能キャラクタを含めた形で論理的に境界Rを超える場合でも,見かけ上の境界Rまでに納まる場合は,そのまま置かれる。同様にCOPY文のPREFIXING/SUFFIXING指定によって語が付加された結果として,機能キャラクタを含めて,論理的に境界Rを超える場合でも,見かけ上の境界Rまでに納まる場合は,そのまま置かれる。また,日本語文字の置き換えが発生するCOPY文およびREPLACE文に関しては,機能キャラクタの扱いがメインフレームと異なるため,メインフレームとの完全な互換性はない。

また,COPY文のPREFIXING/SUFFIXING指定で指定する語1および語2に日本語文字を含めてはならない。

【標準仕様との関連】
COBOL2002 言語 標準仕様編 3.2.2 COPY文
COBOL2002 言語 標準仕様編 3.2.3 REPLACE文