No. 238/622 Index Prev Next
Path: titcca!ccut!kyu-cs!nttspl!etlcom!gama!nakata
From: nakata@gama.is.tsukuba.junet (Ikuo Nakata)
Newsgroups: fj.kanji
Subject: Kanji in Programming Language (In Japanese/Kanji)
Keywords: kanji, programming language
Message-ID: < 1992@gama.is.tsukuba.junet> 
Date: 19 Jan 88 09:02:42 GMT
Distribution: fj
Organization: Inst. Info. Sci. U of TSUKUBA, Ibaraki, Japan
Lines: 173

情報処理学会の規格調査会の日本語機能専門委員会で検討された
資料「プログラム言語における日本語の扱い」をpostします
コメントを歓迎します

筑波大学 中田育男

----------------------------------------------------------
日本語機能専門委員会資料

プログラム言語における日本語の扱い

(0)用語

文字に関しては「文字」、「文字コ−ド」、「文字デ−タ」、「文
字の図形表現」などの用語が考えられる。ここでは、「文字」は表
現法には関係ない抽象的な文字を意味する
ものとする。例えば、「文字A」はアルファベットの先頭の要素の
大文字を示す。「文字コ−ド」はあるコ−ド系(例えば、JIS 
X0208 情報交換用漢字符号系)で、ある文字に対応するコ−
ドを意味する。「文字デ−タ」は計算機で処理されるある一つの文
字の情報を意味する。文字デ−タは、一般的には、文字コ−ドとコ
−ド系、「文字の図形表現」(形状と大きさ)などの情報からなる
が、コ−ド系や図形表現が何らかの方法で仮定されている場合は、
文字コ−ドだけからなると考えられる。以下では、文字型のデ−タ
は文字コ−ドだけからなるとしているが、文字コ−ド以外の情報も
含むようなプログラム言語を禁止しているわけではない。その場合、
文字コ−ド以外の情報とその領域を無視すれば以下の記述に適合す
るものであることが望ましい。

(1)文字型の種類

文字型とは、デ−タ型の一種であるが、それの規定の仕方には

(a)一つの文字コ−ドの占めるメモリ−領域の大きさだけ規定する
   例:2バイト文字型(コ−ド系は言語では規定しない)
(b)取り得る値の集合で規定する。その値の集合は、文字集合
 (character set)とその各文字に対応するコ−ドからなる、コ−ド
 化文字集合(coded characer set)である。
   例:ASCII文字型
(c)一つの文字コ−ドの占めるメモリ−領域の大きさと文字集合
(あるいは、最小文字集合)で規定する(コ−ド系は言語では規定
 しない)。
(d)文字集合で規定する(コ−ド系やメモリ−領域は規定しない)。

がある。文字型を規定する場合(ISOまたは各国のプログラム言
語の規格中で規定する場合)、コ−ド系が一つに決められるなら
(b)が望ましい。
そうでなければ(a)か(c)で決める。(ただし、文字型のデ−タに文
字コ−ド以外の情報も含むようなプログラム言語では、(d)で決め
てもよい)。

日本語の文字型は(c)で、2バイト文字型とし、日本語としての基
本文字集合を含むものとして規定するのが望ましい。

[ISO仕様]
	基本の文字型は(b)のISO文字型(ASCII文字型)
である。そのほかに複数個設定できる(1バイト系も多バイト系も
ある)
  ただし一つのプログラム単位(または一つの処理系)では
次のいずれか
(イ)複数個設定できる
      その一つはISO文字型とする
          例:FORTRAN8Xへの最初の提案 CHAR(KIND=n)
              で指定。nに対応するコ−ド系は処理系定義
(ロ)ISO文字型のほかにもう一つ
          例:ANSI Cへの提案、
              SQLの各国文字型(コ−ド系は処理系定義) 
(ハ)ISO文字型を拡張したものを一つ
          例:Common Lispへの提案
[JIS仕様]
・2種類の文字型を設ける(上記イの場合は2種類以上)
・第1種は1バイトコ−ド、第2種は2バイトコ−ド
  (通常は、第1種はISO文字型(またはASCII文字型)、
    第2種は日本語文字型。より一般的に、第2種は多バイトコ−ド
    が選択できるが、当面2バイトに限定する、としてもよい。
    文字型を(d)で決める場合は、このようにバイト数を限定しなくて
    もよい)
・文字集合としては第2種のそれは第1種のそれを含むのが望ましい
    Common Lispへの提案のように本質的には文字型は第2種
    1種類で第1種は最適化を指定するためのものとすることも可能に
    なる。
  (JIS漢字は機能的にはASCIIを含んでいるが、ASCIIの
   「″」(引用符)と「−」(負符号、ハイフン)に対応するJIS
    漢字には、左ダブル引用符、右ダブル引用符と、負符号、ハイフン、
    ダッシュとがあり、それぞれ1対1には対応しないという意味でA
    SCIIを完全には含んでいないということもできる)
・一つの文字型の中で同一文字が二通りのコ−ドを持つことは原則
  としてない
  文字を出力するときの大きさやスタイルは文字コ−ドで区別す
    べきものではなく、文字を出力するときの付属情報で決めるべきも
    のである。半角のAと全角のAは違う文字であると考えれば、二通
    りのAが第2種の文字の中に入る(例えば、CのLongchar案)が、
    それはあまり望ましくない。第1種(1バイトコ−ド)のAも第2
    種(2バイトコ−ド)のAも同じ文字を示すものとする。ただし、
    第1種の文字を半角で出力するといったフォ−マット制御は可能で
    ある。

(2)プログラムのデ−タとして

内部デ−タ
・デ−タには文字型デ−タと文字列型デ−タ(または文字配列型デ
  −タ)がある
・デ−タの長さは文字数で数える(バイト数ではない)
・一つの文字列は同一文字型の文字デ−タからなる
 [JIS仕様では、第1種と第2種の混在、すなわち1バイト文
    字/2バイト文字の混在を許さない]
・変数の型宣言で文字型を宣言する
 [JIS仕様では、第1種/第2種の2通り用意する。それぞれ
    1文字は1バイト/2バイトを占める]
・ライブラリ関数は各文字型ごとに別に用意する。ただし、出来る
  だけ同一の名前や記号を使う(総称関数(オ−バロ−ディング)が
  許される言語では同じ名前や記号が使える)。各文字型と整数型間
  の変換関数がある。
・共通の文字を持つ文字型間には変換関数を用意することが出来る。
  その関数では、共通でない文字は変換できない。言語によっては、
  変換関数を陽には使う必要がないものがあるかも知れない
 [JIS仕様では、第1種←→第2種の変換関数を用意する。
    第1種に「カ゛」(2文字)があったとき、それを第2種の「ガ」
    に変換するか?]
・ほぼ包含関係にある文字型(一方の型の文字集合がほとんどもう
  一方の型のそれに含まれる)間では文字列の直接の比較を可能とし
  てもよい(比較は上記の変換関数で変換してから行なわれるので、
  それの簡便記法を設けることを意味する。ただし、もとの文字型で
  の比較と、変換後の比較で結果が異なる可能性がある場合は、直接
  比較は可能としない)

プログラムテキスト上のデ−タ
・定数の書き方は各文字型ごとに定める。同じ文字集合を持つ型に
  ついては、各言語で同じ書き方とするのが望ましい
 [JIS仕様では、通常は第1種/第2種の2通り用意する(
    Lispでは1通りですませることもできる)。SQLでN′漢′、
    FORTRAN8X案ではNC′漢′はあまり望ましくない。N′漢′に統
    一するのが望ましい]
外部デ−タ
・外部ファイルでは異なる文字型のデ−タの混在を認めてもよい。
  型の混在したデ−タは入出力ル−チンを通して型の振り分けをする
  のが望ましい。例えば、書式仕様による欄の明示的な指定と一致す
  るように要求すれば、それが可能である。そのようなデ−タを振り
  分けずに直接受け入れるばあいは、その内部変数の型はいわば一般
  文字型である。一般文字型としては、バイト型、整数型等を使うか、
  それが出来ない場合は、文字型の一つを一時的にそのために使う
 [JIS仕様では、外部ファイルに第1種と第2種の混在を認め
    てもよい。混在する場合は、一般に、デ−タの中にシフトコ−ドが
    入る(例えば、各バイトの先頭ビットで第1種/第2種の区別がつ
    くならばシフトコ−ド不要。日本語FORTRANはシフトコ−ド
    が入るとは限らない前提で設計された)。それを第1種の変数に入
    れた場合は(これは望ましくないが、システムプログラム用言語で、
    一般文字型として使える型が他にないときはやむをえない)、そこ
    ですべての(256種の)ビットパタ−ンをバイト単位で処理する
    ことになる。SQL案での第1種文字列(第2種文字混在可)を内部
    変数に取り込んだときはこの形になる]
・出力フォ−マット
  印字幅は文字の種類とは直接関係ないものとする。一般に
  は文字の範囲(例えばカタカナ)や書式で印字幅を指定できるとす
  る。ただし、デフォ−ルトで、例えば第1種は半角、第2種は全角
  とすることも出来る。
  (今後は文字によって印字幅が微妙に違うものも考えられ
    る。その場合はタブ設定も文字数でなく左から何mmと言った指定が
    必要になる。)

(3)プログラムテキストとして

[ISO仕様]
・キ−ワ−ド(より正確には、キ−ワ−ド、演算子記号、区切り記
  号などのように、規格文書で、プログラムには文字どうりそこに書
  かれているように書かねばならないとされるもの)はISO文字か
  らなるものとする
・コメントにはISO文字以外の文字も許す
・IdentifierにもISO文字以外の文字を許すことが望ましい
[JIS仕様]	
・キ−ワ−ドは第1種文字からなる
・コメントやidentifierには第2種文字を許す
  
Next
Continue < 1238@titcce.cc.titech.JUNET>