>サイトトップへ >このカテゴリの一覧へ

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

まえがき

この規格は,工業標準化法第 14 条によって準用する第 12 条第 1 項の規定に基づき,社団法人情報処理

学会情報規格調査会(IPSJ・ITSCJ)/財団法人日本規格協会(JSA)から,工業標準原案を具して日本工業規

格を改正すべきとの申出があり,日本工業標準調査会の審議を経て,経済産業大臣が改正した日本工業規

格である。これによって,JIS X 3001-2:1998 は改正され,この規格に置き換えられる。

改正に当たっては,日本工業規格と国際規格との対比,国際規格に一致した日本工業規格の作成及び日

本工業規格を基礎にした国際規格原案の提案を容易にするために,ISO/IEC 1539-2:2000,Information

Technology

―Programming languages―Fortran―Part2:Varying length character strings を基礎として用いた。

JIS X 3001

-2:2002 には,次に示す附属書がある。

附属書 A(参考)モジュール ISO_VARYING_STRING

附属書 B(参考)例示

JIS X 3001

には,次に示す部編成がある。

  JIS X 3001-1  第 1 部:基底言語

  JIS X 3001-2  第 2 部:可変長文字列

  JIS X 3001-3  第 3 部:条件付き翻訳


X 3001-2

:2002 (ISO/IEC 1539-2:2000)

(1)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。

目  次

ページ

序文1

1.

  適用範囲 1

2.

  引用規格 2

3.

  要求事項 2

3.1

  モジュールの名前 2

3.2

  型2

3.3

  組込み演算子の意味の拡張 3

3.4

  総称組込み手続の意味の拡張 4

3.5

  型変換の総称手続 8

3.6

  入出力の総称手続 9

3.7

  部分列操作用の総称手続 10

附属書 A(参考)モジュール ISO_VARYING_STRING14

附属書 B(参考)例示 15

解説21

 


     

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

日本工業規格(案)

JIS

 X

3001

-2

:2002

(ISO/IEC 1539-2

:2000

)

プログラム言語 Fortran

第 部:可変長文字列

Information technology

―Programming languages―Fortran―

Part 2

:Varying length character strings

序文  この規格は,2000 年に第 1 版として発行された ISO/IEC 1539-2:2000,Information technology―

Programming languages

―Fortran―Part 2:Varying length character strings を翻訳し,技術的内容及び規格票の

様式を変更することなく作成した日本工業規格である。

なお,この規格で側線又は点線の下線を施してある“参考”は,原国際規格にはない事項である。

JIS X 3001

-は,複数の部からなる Fortran の規格の第 2 部である。この規格(第 2 部:可変長文字列)

は,長さが任意であって動的に可変な文字列の操作方法を提供するモジュールの引用仕様及び意味を規定

する。Fortran 95(JIS X 3001-1:1998)によるこの規格に合致したモジュールの実装例を,

附属書 に示す。

ただし,その実装例は,この規格の実現可能性と可搬性を示すことだけを目的としている。この附属書に

ある実際のプログラムは,実装の方法を規定するわけではなく,可搬な実装として最適なものであること

を意味するわけでもない。それは,可搬な実装が実現可能であることを端的に示したものにすぎない。

1.

適用範囲  この規格は,Fortran で用いられる,動的に可変な長さをもつ文字列の操作方法を規定する。

この規格は,非公式に Fortran 95 として知られる Fortran についての付帯規格とする。ここでいう Fortran

の日本工業規格は,次のものとする。

JIS X 3001

-1:1998  プログラム言語 Fortran―第 1 部:基底言語

JIS X 3001

-2:1998 の規格に合致するプログラムは,この規格にも合致する。

備考  この規格(第 2 部)の対応国際規格を,次に示す。

なお,対応の程度を表す記号は,ISO/IEC Guide 21 に基づき,IDT(一致している)

,MOD

(修正している)

,NEQ(同等でない)とする。

ISO

/IEC 1539-2:2000,Information technology―Programming languages―Fortran―Part 2:Varying

length character strings

(IDT)

この規格は,Fortran 95 で規定された組込み手続への追加を規定するという点で,それに対する付帯規格

になっている。Fortran 95 の規格に合致する処理系は,この規格に合致しなくてもよい。しかし,この規格

に合致するためには Fortran 95 の規格に合致しなければならない。

この規格は,次の四つを規定する:一つの Fortran モジュールの名前,可変長文字列を表現する一つの構

造型の名前,その構造型を操作する手続及び演算子の引用仕様,並びにこのモジュールによって利用可能

となる言語要素それぞれの意味。

この規格は,実装の詳細を規定しない。すなわち,構造型データの表現方法も規定しないし,手続又は

演算子の実装に用いるアルゴリズムも規定しない。どのような表現及びアルゴリズムを用いても,公開さ


2

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

れた名前及び引用仕様がこの規格に合致し,

かつ意味がこの規格及び JIS X 3001-1:1998 に合致する限り,

その実装はこの規格に合致している。

備考  この規格を実装していなくても Fortran 95  の規格自体に合致した処理系とすることは可能であ

るが,もし可変長文字列を取り扱う機構を実装するときには,この規格に合致した方法をとる

ことが推奨される。

この規格に合致した処理系は,この規格及び JIS X 3001-1:1998 に矛盾しない範囲で,可変長文字列を

取り扱う機構を拡張してもよい。

規格に合致した Fortran で書かれたモジュールを,

附属書 に示す。このモジュールは,この規格に記

述された機構を提供する一つの方法を例示している。このモジュールは,

この規格の要求に合致していて,

規格に合致した Fortran で書かれているので,要求する機構の可搬な実装を提供している。このモジュール

は,参照の目的のためだけに示されているのであって,実装を制約することは一切目的としていない。こ

のモジュールは,規格に合致し,したがって可搬な Fortran による実装が少なくとも一つ可能であることを

示すにすぎない。

この規格は,長さが動的に可変な文字列を取り扱う機構を,基本種別についてだけ規定している。この

規格を通して,組込み型 CHARACTER は,すべて基本種別の文字型を指す。基本種別でない文字型につ

いても,同様の機構を各文字種別に対する別のモジュールによって定義することが可能であろう。

この規格は,組込みの固定長文字列に対して提供されている機構を,意味がある限りにおいて可変長文

字列に対しても提供するように設計したものである。固定長文字列に適用される組込み演算子及び関数の

すべては,この規格で規定する可変長文字列に対して拡張された意味をもつ。同時に,組込み型と可変長

文字列型の構造体との本質的な相違によって必要となる少数の機構も追加してある。

2.

引用規格  次に掲げる引用規格は,この規格に引用されることによって,この規格の規定の一部を構

成する。これらの引用規格のうちで,発効年又は発行年を付記してあるものは,記載の年の版だけがこの

規格の規定を構成するものであって,その後の改正版・追補は適用しない。しかし,この規格を利用する

場合は,最新版を採用する可能性を検討するように推奨する。

JIS X 3001

-1:1998  プログラム言語 Fortran―第1部:基底言語

備考  ISO/IEC 1539-1:1997,Information technology―Programming languages―Fortran―Part 1:Base

language

が,この引用規格と一致している。

ISO

/IEC 646:1991  Information technology―ISO 7-bit coded character set for information interchange

参考  JIS X 0201:1997(7  ビット及び 8  ビットの情報交換用符号化文字集合)が,この引用規格と

整合している。異なる 2 文字は,

“\”及び“ ”である。

3.

要求事項

3.1

モジュールの名前  このモジュールの名前は,次による。

          ISO_VARYING_STRING

プログラムは,次の形の USE 文を書くことによって,この規格で規定する機能を参照できるようになる。

          USE ISO_VARYING_STRING

3.2

型  この型(可変長文字列型)の名前は,次による。

          VARYING_STRING

この型の言語要素が表現する値は,基本種別の文字からなる文字列とする。この文字列は,負でない任


3

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

     

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

意の長さであってよく,その長さは,プログラムの実行中に動的に変えることができる。処理系は,処理

系の大きさ及び処理できるプログラムの複雑さによる制限以外によって,

長さの上限を設けてはならない。

文字列を構成する文字は,1,2,. . .  ,の位置をもつ。ここで は,文字列の長さとする。この型の内

部構造は,この規格で規定するモジュールの非公開要素とする。

3.3

組込み演算子の意味の拡張  次の組込み演算子の意味を,可変長文字列型及び文字型の演算対象の

あらゆる組合せを扱うことができるように拡張する。

          代入  =

          連結  //

          比較  ==,/=,<,<=,>=,>

備考  これらと等価な関係演算子である EQ.,.NE.,.LT.,.LE.,.GE.及び.GT.についても,同様

に意味を拡張する。

3.3.1

代入  要素別処理代入は,次の形による。

          変数=式

変数及び式の型の組合せは,次のいずれかとする。

          可変長文字列型  及び  可変長文字列型

          可変長文字列型  及び  文字型

          文字型          及び  可変長文字列型

機能  変数の値を,式の値である文字列にする。次の二つの場合がある。

場合 1: 変数が可変長文字列型である場合,変数の長さは,式の長さに等しくなる。

場合 2: 変数が文字型である場合,Fortran の文字変数への組込み代入の規則を適用する。すなわち,式

の長さが文字変数の長さより大きければ文字列の左側部分だけが代入され,文字変数の長さが

式の長さより大きければ式の値の右側に空白が補われる。

3.3.2

連結  要素別処理連結は,次の形による。

          列

1

//

2

1

及び列

2

の型の組合せは,次のいずれかとする。

          可変長文字列型  及び  可変長文字列型

          可変長文字列型  及び  文字型

          文字型          及び  可変長文字列型

この演算によって演算対象の値が変更されることはない。

結果の特性  可変長文字列型とする。

結果の値  結果の値は,列

1

と列

2

をこの順序で連結した,新しい文字列とする。

3.3.3

比較  要素別処理比較は,次の形による。

          列

1

==

2

          列

1

/=

2

          列

1

<

2

          列

1

<=

2

          列

1

>

2

          列

1

>=

2

1

及び列

2

の型の組合せは,次のいずれかとする。

          可変長文字列型  及び  可変長文字列型


4

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

          可変長文字列型  及び  文字型

          文字型          及び  可変長文字列型

この演算によって演算対象の値が変更されることはない。

備考  これらと等価な関係演算子である.EQ.,.NE.,.LT.,.LE.,.GT.及び.GE.についても,同

様に意味を拡張する。

結果の特性  基本論理型とする。

結果の値  列

1

と列

2

とがその関係を満足すれば真となり,そうでなければ偽となる。比較のための文字の

大小順序は,基本種別の文字について処理系が定義したものを使用する。列

1

と列

2

の長さが異なる場合は,

短い列の右側に空白があるものとして比較を行う。

3.4

総称組込み手続の意味の拡張  可変長文字列型及び文字型を組み合わせた引数を扱えるように,総

称組込み手続 ADJUSTL,ADJUSTR,CHAR,IACHAR,ICHAR,INDEX,LEN,LEN TRIM,LGE,LGT,

LLT

,LLE,REPEAT,SCAN,TRIM 及び VERIFY の意味を拡張する。拡張の詳細な規定は,3.4.13.4.16

による。

3.4.1

ADJUSTL 

(string)

機能  先頭の空白を取り除き末尾に空白を挿入して左詰めにする。

分類  要素別処理関数。

引数  string は,可変長文字列型でなければならない。

結果の特性  可変長文字列型とする。

結果の値  結果の値は,string の先頭の空白列を削除し,同数の空白を末尾に挿入した文字列とする。

3.4.2

ADJUSTR 

(string)

機能  末尾の空白を取り除き先頭に空白を挿入して右詰めにする。

分類  要素別処理関数。

引数  string は,可変長文字列型でなければならない。

結果の特性  可変長文字列型とする。

結果の値  結果の値は,string の末尾の空白列を削除し,同数の空白を先頭に挿入した文字列とする。

3.4.3

CHAR 

(string [, length])

機能  可変長文字列型の値を,文字型に変換する。

分類  純粋変形関数。

引数

    string    可変長文字列型スカラでなければならない。

    length    基本整数型スカラでなければならない。

結果の特性  基本文字型スカラとする。length を省略した場合,結果の長さは string の長さとする。

length

を指定した場合,結果の長さは引数 length で指定した長さとする。

結果の値

場合 1: length を省略した場合,引数 string の文字列を複写する。

場合 2: length を指定した場合,引数 string の文字列を複写し,次によって末尾を削除するか又は

末尾に空白を挿入する。string の長さが length より大きいとき,末尾を削除する。string

の長さが length より小さいとき,末尾に空白を挿入する。length が 1 より小さいとき,結

果は長さゼロの文字列とする。

備考  この関数は,Fortran 95 では i を整数型とする CHAR (i [, kind])の形の要素別処理関数で


5

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

     

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

ある。

3.4.4

IACHAR 

(c)

機能  ISO/IEC 646:1991 で定義された大小順序における文字の位置を返す。

分類  要素別処理関数。

引数  c は,長さ 1 の可変長文字列型でなければならない。

結果の特性  基本整数型とする。

結果の値  ISO/IEC 646:1991 で定義された大小順序中に c がある場合,結果の値は,その大小順序中の

文字 c の位置とする。c が ISO/IEC 646:1991 の大小順序中にない場合,結果は,処理系依存とし,IACHAR

(CHAR (c))

と同じとする。

3.4.5

ICHAR 

(c)

機能  処理系大小順序における文字の位置を返す。

分類  要素別処理関数。

引数  c は,長さ 1 の可変長文字列型でなければならない。

結果の特性  基本整数型とする。

結果の値  結果の値は,基本文字型に対応する処理系大小順序中の文字 c の位置とする。ICHAR

(CHAR(c))

の値と同じとする。

3.4.6

INDEX 

(string, substring [, back])

機能  文字列中の部分列の開始位置を基本整数型の値として返す。

分類  要素別処理関数。

引数

    string 及び substring    型の組合せは,次のいずれかでなければならない。

                                      可変長文字列型  及び  可変長文字列型

                                      可変長文字列型  及び  文字型

                                      文字型          及び  可変長文字列型

    back(省略可能)          基本論理型でなければならない。

結果の特性  基本整数型とする。

結果の値

場合 1: back に偽を指定するか又は省略してある場合,結果の値は EXTRACT(string,I,I+LEN

(substring)-1)==substring

となる最小の正の値 I とする(EXTRACT については,3.7 

照)

。そのような I がないとき,0 とする。

場合 2: back

EXTRACT(string,I,I+LEN(substring)-1)==substring

LEN(string)-LEN(substring)+1

以下で最大の I とする。そのような I がないとき,0 と

する。

3.4.7

LEN 

(string)

機能  文字列の長さを返す。

分類  要素別処理関数。

引数  string は,可変長文字列型でなければならない。

結果の特性  基本整数型とする。

結果の値  結果の値は,string 中の文字の個数とする。


6

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

備考  string が文字型の場合は,要素別処理関数ではない。

3.4.8

LEN_TRIM 

(string)

機能  末尾の空白を除いた文字列の長さを返す。

分類  要素別処理関数。

引数  string は,可変長文字列型でなければならない。

結果の特性  基本整数型とする。

結果の値  結果の値は,string 中の空白以外の最後の文字の位置とする。引数 string が空白以外の文

字を含まないとき又は長さゼロのとき,結果は 0  とする。

3.4.9

LGE 

(string_a, string_b)

機能  ISO/IEC 646:1991 の大小順序に従って,二つの文字列の大小を比較する。

分類  要素別処理関数。

引数

    string_a 及び string_b    型の組合せは,次のいずれかでなければならない。

                                      可変長文字列型  及び  可変長文字列型

                                      可変長文字列型  及び  文字型

                                      文字型          及び  可変長文字列型

結果の特性  基本論理型とする。

結果の値  string_a が string_b と等しいか又は辞書順で後になるとき真とし,前になるとき偽とする。

文字列の順序を決定するために用いる大小順序は,ISO/IEC 646:1991 の大小順序とする。string_a と

string_b

の長さが異なる場合,短い文字列の右側に空白があるものとして比較する。どちらかの文字列

中に ISO/IEC 646:1991 で定義されていない文字 c がある場合,結果の値は,処理系依存とし,IACHAR(c)

の値に従う。長さゼロの文字列同士は,等しいとする。

3.4.10  LGT 

(string_a, string_b)

機能  ISO/IEC 646:1991 の大小順序に従って,二つの文字列の大小を比較する。

分類  要素別処理関数。

引数

    string_a 及び string_b    型の組合せは,次のいずれかでなければならない。

                                      可変長文字列型  及び  可変長文字列型

                                      可変長文字列型  及び  文字型

                                      文字型          及び  可変長文字列型

結果の特性  基本論理型とする。

結果の値  string_a が string_b より辞書順で後になるとき真とし,等しいか又は辞書順で前になると

き偽とする。文字列の順序を決定するために用いる大小順序は,ISO/IEC 646:1991 の大小順序とする。

string_a

と string_b の長さが異なる場合,短い文字列の右側に空白があるものとして比較する。どち

らかの文字列中に ISO/IEC 646:1991 で定義されていない文字 c がある場合,結果の値は,処理系依存と

し,IACHAR(c)の値に従う。長さゼロの文字列同士は,等しいとする。

3.4.11  LLE 

(string_a, string_b)

機能  ISO/IEC 646:1991 の大小順序に従って,二つの文字列の大小を比較する。

分類  要素別処理関数。

引数


7

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

     

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

    string_a 及び string_b    型の組合せは,次のいずれかでなければならない。

                                      可変長文字列型  及び  可変長文字列型

                                      可変長文字列型  及び  文字型

                                      文字型          及び  可変長文字列型

結果の特性  基本論理型とする。

結果の値  string_a が string_b と等しいか又は辞書順で前になるとき真とし,後になるとき偽とする。

文字列の順序を決定するために用いる大小順序は,ISO/IEC 646:1991 の大小順序とする。string_a と

string_b

の長さが異なる場合,短い文字列の右側に空白があるものとして比較する。どちらかの文字列

中に ISO/IEC 646:1991 で定義されていない文字 c がある場合,結果の値は,処理系依存とし,IACHAR(c)

の値に従う。長さゼロの文字列同士は,等しいとする。

3.4.12  LLT 

(string_a, string_b)

機能  ISO/IEC 646:1991 の大小順序に従って,二つの文字列の大小を比較する。

分類  要素別処理関数。

引数

    string_a 及び string_b    型の組合せは,次のいずれかでなければならない。

                                      可変長文字列型  及び  可変長文字列型

                                      可変長文字列型  及び  文字型

                                      文字型          及び  可変長文字列型

結果の特性  基本論理型とする。

結果の値  string_a が string_b より辞書順で前になるとき真とし,等しいか又は辞書順で後になると

き偽とする。文字列の順序を決定するために用いる大小順序は,ISO/IEC 646:1991 の大小順序とする。

string_a

と string_b の長さが異なる場合,短い文字列の右側に空白があるものとして比較する。どち

らかの文字列中に ISO/IEC 646:1991 で定義されていない文字 c がある場合,結果の値は,処理系依存と

し,IACHAR(c)の値に従う。長さゼロの文字列同士は,等しいとする。

3.4.13  REPEAT 

(string, ncopies)

機能  指定した文字列の複写を幾つか連結する。

分類  要素別処理関数。

引数

    string    可変長文字列型でなければならない。

    ncopies    基本整数型でなければならない。

結果の特性  可変長文字列型とする。

結果の値  結果の値は,string を ncopies 回だけ複写したものを連結した文字列とする。ncopies の

値が正でないとき,結果は,長さゼロの文字列になる。

3.4.14  SCAN 

(string, set [, back])

機能  文字列が指定した集合中の文字を含むかどうかを確かめ,集合中の文字の存在位置を返す。

分類  要素別処理関数。

引数

    string 及び set    型の組合せは,次のいずれかでなければならない。

                              可変長文字列型  及び  可変長文字列型

                              可変長文字列型  及び  文字型


8

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

                              文字型          及び  可変長文字列型

    back(省略可能)    基本論理型でなければならない。

結果の特性  基本整数型とする。

結果の値

場合 1: back に偽を指定するか又は省略してあって,string が set 中にある文字を少なくとも一つ

含む場合,結果の値は,set 中にある文字の string 中での最も左の文字位置とする。

場合 2: back に真を指定してあって,string が set 中にある文字を少なくとも一つ含む場合,結果

の値は,set 中にある文字の string 中での最も右の文字位置とする。

場合 3: string 中のすべての文字が set 中にないか,string 又は set の長さが 0 である場合,結果

の値は,0 とする。

3.4.15  TRIM 

(string)

機能  文字列の末尾の空白を除去する。

分類  要素別処理関数。

引数  string は,可変長文字列型でなければならない。

結果の特性  可変長文字列型とする。

結果の値  結果の値は,末尾の空白がない点を除いて string と同じとする。引数 string が空白以外の

文字を含まないとき又は長さゼロのとき,結果は,長さゼロの文字列とする。

備考  この関数は,string が文字型のときは,要素別処理ではない。

3.4.16  VERIFY 

(string, set [, back])

機能  文字列が,指定した集合中の文字だけからなるか否かを確かめ,集合中にない文字の存在位置を返

す。

分類  要素別処理関数。

引数

    string 及び set    型の組合せは,次のいずれかでなければならない。

                              可変長文字列型  及び  可変長文字列型

                              可変長文字列型  及び  文字型

                              文字型          及び  可変長文字列型

    back(省略可能)   基本論理型でなければならない。

結果の特性  基本整数型とする。

結果の値

場合 1: back に偽を指定するか又は省略してあって,string が set 中にない文字を少なくとも一つ

含む場合,結果の値は,set 中にない文字の string 中での最も左の文字位置とする。

場合 2: back に真を指定してあって,string が set 中にない文字を少なくとも一つ含む場合,結果

の値は,set 中にない文字の string 中での最も右の文字位置とする。

場合 3: string 中のすべての文字が set 中にあるか,又は string の長さが 0 である場合,結果の値

は,0 とする。

3.5

型変換の総称手続  組込みの固定長の文字型の値を可変長文字列型の値に変換するために,一つの

総称手続を追加する。

3.5.1

VAR_STR 

(char)

機能  組込みの固定長の文字型の値を,等価な可変長文字列型の値に変換する。


9

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

     

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

分類  要素別処理関数。

引数  char は基本文字型であって,どんな長さでもよい。

結果の特性  可変長文字列型とする。

結果の値結  果の値は,引数と同じ文字の列とする。

3.6

入出力の総称手続  書式付き順番探査ファイルに対して可変長文字列を入出力するために,次の総

称手続を追加する。

        GET        文字列に記録の全体又は一部を入力する。

        PUT        出力記録に文字列を付加する。

        PUT_LINE  出力記録に文字列を付加し,その記録を終了させる。

3.6.1

GET 

(string [, maxlen, iostat]),

       GET (unit, string [, maxlen, iostat]),

       GET (string, set [, separator, maxlen, iostat])又は

       GET (unit, string, set [, separator, maxlen, iostat])

機能  文字列を外部ファイルから読み込む。

分類  サブルーチン。

引数

    string

可変長文字列型スカラでなければならない。INTENT(OUT)引数とする。

    maxlen(省略可能)

基本整数型スカラでなければならない。INTENT(IN)引数とする。

    unit

基本整数型スカラでなければならない。INTENT(IN)引数とし,使用する

入力装置を指定する。その入力装置は,順番探査入力として書式付きファ

イルに接続されていなければならない。引数 unit を省略したときは,標

準入力装置を指定したものとみなされる。

    set

可変長文字列型スカラ又は文字型スカラのいずれかでなければならない。

INTENT(IN)

引数とする。

    separator(省略可能)  可変長文字列型スカラでなければならない。INTENT(OUT)引数とする。

    iostat(省略可能)

基本整数型スカラでなければならない。INTENT(OUT)引数とする。

動作  手続 GET は,現在記録が存在するときは現在記録の次の文字から始まる文字列を,現在記録が存在

しないときは直後記録の最初の文字から始まる文字列を接続されているファイルから読み込み,引数

string

に格納する。記録終端は,入力を終了させるが,入力はこの記録終端よりも前に終了してもよい。

引数 maxlen を指定したとき,maxlen の値は読み込む文字数の最大値となる。引数 maxlen の値が 0 以

下であるとき,文字は読み込まず,引数 string は長さゼロの文字列となる。引数 maxlen を省略したと

き,読み込む文字数の最大値は HUGE(1)となる。引数 set を指定したとき,set は,入力を終了させる

文字の集合を示す。この終了文字は,入力ファイルから読み込まれるが,結果の文字列には含まれない。

データ転送が完了した直後のファイル位置は,読み込まれた最後の文字の後ろになる。引数 separator

を指定したとき,実際に転送を終了させた文字が,引数 separator に返される。転送が,引数 set の中

の文字以外によって終了したときは,長さゼロの文字列が separator に返される。転送が,記録終端に

よって終了したときは,ファイル位置は,直前に読み込んだ記録の次になる。引数 iostat を指定した場

合,データ転送の結果の状態が iostat に返される。正しく読込みが行われて記録が終了しなかったとき

は 0 が返され,誤り条件が発生したときは正の値が返され,ファイル終了条件又は記録終了条件が発生し

たときは負の値が返される。このとき,ファイル終了条件と記録終了条件とでは,異なった負の値が返さ


10

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

れる。引数 iostat を省略し,誤り条件又はファイル終了条件が発生したときは,そのプログラムの実行

は終了する。

3.6.2

PUT 

(string [, iostat])

又は PUT (unit, string [, iostat])

機能  文字列を外部ファイルへ書き出す。

分類  サブルーチン。

引数

    string

可変長文字列型スカラ又は文字型スカラのいずれかでなければならない。

INTENT(IN)

引数とする。

    unit

基本整数型スカラでなければならない。INTENT(IN)引数とし,使用する

出力装置を指定する。その出力装置は,順番探査出力として書式付きファ

イルに接続されていなければならない。引数 unit を省略したときは,標

準出力装置を指定したものとみなされる。

    iostat(省略可能)

基本整数型スカラでなければならない。INTENT(OUT)引数とする。

動作  手続 PUT は,現在記録が存在するときは現在記録に,現在記録が存在しないときは直後記録の先頭

に,引数 string の文字列を追加する。最後に転送された文字は,ファイルの最後の記録である現在記録

の最後の文字となる。引数 iostat を指定した場合,iostat にデータ転送の結果の状態が返される。書

出しが正しく行われたときは 0 が返され,誤り条件が発生したときは正の値が返される。引数 iostat を

省略し,かつ書出しが正しく行われなかったときは,そのプログラムの実行は終了する。

3.6.3

PUT_LINE 

(string [, iostat])

又は PUT_LINE (unit, string [, iostat])

機能  文字列を外部ファイルへ書き出し,その記録を終了させる。

分類  サブルーチン。

引数

    string

可変長文字列型スカラ又は文字型スカラのいずれかでなければならない。

INTENT(IN)

引数とする。

    unit

基本整数型スカラでなければならない。INTENT(IN)引数とし,使用する

出力装置を指定する。その出力装置は,順番探査出力として書式付きファ

イルに接続されていなければならない。引数 unit を省略したときは,標

準出力装置を指定したものとみなされる。

    iostat(省略可能)

基本整数型スカラでなければならない。INTENT(OUT)引数とする。

動作  手続 PUT_LINE は,現在記録が存在するときは現在記録に,現在記録が存在しないときは直後記録

の先頭に,引数 string の文字列を追加する。データ転送が正しく行われたとき,そのファイル位置は出

力された記録の直後になる。その記録は,そのファイルの直前記録かつ最後の記録となる。引数 iostat

を指定した場合,iostat にデータ転送の結果の状態が返される。書出しが正しく行われたときは 0 が返

され,誤り条件が発生したときは正の値が返される。引数 iostat を省略し,かつ書出しが正しく行われ

なかったときは,そのプログラムの実行は終了する。

3.7

部分列操作用の総称手続  スカラの可変長文字列のスカラの部分列を操作するために,次の総称手

続を追加する。

        EXTRACT  文字列から一部を抽出する。

        INSERT

文字列中に部分列を挿入する。

        REMOVE

文字列中の一部を削除する。


11

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

     

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

        REPLACE  文字列中の部分列を置換する。

        SPLIT

区切りが出現した位置で文字列を二つに分割する。

3.7.1

EXTRACT 

(string [, start, finish])

機能  指定した部分列を文字列から抽出する。

分類  要素別処理関数。

引数

    string

可変長文字列型又は基本文字型でなければならない。

    start(省略可能)

基本整数型でなければならない。

    finish(省略可能)

基本整数型でなければならない。

結果の特性  可変長文字列型スカラとする。

結果の値  結果の値は,引数 string のうちの,start から finish までの位置にある文字の複写とする。

start

を省略する又は start が 1 より小さいとき,start として値 1 が使われる。finish を省略する

か又は finish が LEN(string)より大きいとき,finish として値 LEN(string)が使われる。finish

が start より小さいとき,結果の値は,長さゼロの文字列とする。

3.7.2

INSERT 

(string, start, substring)

機能  文字列の指定位置に部分列を挿入する。

分類  要素別処理関数。

引数

    string

可変長文字列型又は基本文字型のいずれかでなければならない。

    start

基本整数型でなければならない。

    substring

可変長文字列型又は基本文字型のいずれかでなければならない。

結果の特性  可変長文字列型スカラとする。

結果の値  結果の値は,引数 string の複写の文字位置 start の前に substring の文字を挿入した文字

列とする。start が LEN(string)より大きいとき,start として値 LEN(string)+1 が使われ,その

結果,substring は string の複写の後ろに付け加えられる。start が 0 以下のとき,start として値

1

が使われ,その結果,substring は string の複写の先頭文字の前に挿入される。

3.7.3

REMOVE 

(string [, start, finish])

機能  指定した部分列を文字列から削除する。

分類  要素別処理関数。

引数

    string

可変長文字列型又は基本文字型でなければならない。

    start(省略可能)

基本整数型でなければならない。

    finish(省略可能)

基本整数型でなければならない。

結果の特性  可変長文字列型スカラとする。

結果の値  結果の値は,string の文字列を複写し,start から finish までの位置にある文字を削除し

たものとする。start を省略するか又は start が 1 より小さいとき,start として値 1 が使われる。

finish

を省略するか又は finish が LEN(string)より大きいとき,finish として値 LEN(string)

が使われる。finish が start より小さいとき,結果の値は,文字列 string とする。


12

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

3.7.4

REPLACE 

(string, start, substring),

REPLACE 

(string, start, finish, substring)

又は

REPLACE 

(string, target, substring [, every, back])

機能  文字列の一部を指定した部分列に置換する。置換する部分は,位置又は内容で指定する。

分類  要素別処理関数。

引数

    string

可変長文字列型又は基本文字型のいずれかでなければならない。

    start

基本整数型でなければならない。

    finish

基本整数型でなければならない。

    substring

可変長文字列型又は基本文字型のいずれかでなければならない。

    target

可変長文字列型又は基本文字型のいずれかでなければならず,長さが 0  で

あってはならない。

    every(省略可能)

基本論理型でなければならない。

    back(省略可能)

基本論理型でなければならない。

結果の特性  可変長文字列型スカラとする。

結果の値  結果の値は,string の文字の複写を次のいずれかによって変更した値とする。

場合 1: REPLACE(string,start,substring)

この形式で引用した場合,引数 substring の文字は,string の複写に挿入される。挿入は,

文字位置 start から行い,start から MIN(start+LEN(substring)-1,LEN(string))

までの位置にあった文字は,削除される。start が LEN(string)より大きいとき,start と

して値 LEN(string)+1 が使われ,その結果,substring は,string の複写の後ろに付け

加えられる。start が 0  以下のとき,start として値 1 が使われる。

場合 2: REPLACE(string,start,finish,substring)

この形式で引用した場合,string の複写のうち,位置 start から位置 finish までの文字を

substring

の文字に置換する。start が 0 以下のとき,start として値 1 が使われる。

finish

が LEN(string)より大きいとき,finish として値 LEN(string)が使われる。

finish

が start より小さいとき,substring の文字列は start の文字の前に挿入し,文字

の削除は,行わない。

場合 3: REPLACE(string,target,substring,every,back)

この形式で引用した場合,string の複写の中で target を探索する。引数 back を指定し,

かつ値が真のとき,探索は,右から左に向かって行う。それ以外のとき,探索は,左から右に

向かって行う。target が見つかったとき,それを substring に置換する。every を指定し,

かつ値が真のとき,指定した探索方向に見て target に後続する次の文字位置から,この探索

及び置換を再開し,文字列の複写中に現れるすべての target を置換する。それ以外のとき,

最初に現れた target だけを置換する。

3.7.5

SPLIT 

(string, word, set [, separator, back])

機能  文字列を,指定した区切り文字の集合に属する文字の位置で,二つの部分列に分割する。

分類  要素別処理サブルーチン。

引数

    string

可変長文字列型でなければならない。INTENT(INOUT)引数とする。


13

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

     

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

    word

可変長文字列型でなければならない。INTENT(OUT)引数とする。

    set

可変長文字列型又は基本文字型でなければならない。INTENT(IN)引数と

する。

    separator(省略可能)  可変長文字列型でなければならない。INTENT(OUT)引数とする。

    back(省略可能)

基本論理型でなければならない。INTENT(IN)引数とする。

動作  手続 SPLIT は,string を,集合 set の中の任意の 1 文字が最初に出現した位置で分割する。back

を省略するか又は back に偽を指定したとき,左から右に向かって string を探索する。back に真を指

定したとき,右から左に向かって string を探索する。区切り文字が検出されるまでに通過した文字列が

word

に返される。残りの文字列のうち,その区切り文字を除く部分が引数 string に返される。

separator

を指定したとき,word を string の残りの部分から分割するのに実際に使用された文字が

separator

に返される。set の中の文字が検出できないか又は set が長さゼロであるとき,呼出し時の

string

の文字列全体が word に返され,長さゼロの文字列が string に返される。手続 SPLIT から戻る

時,左から右に向かって探索した場合は word//separator//string が呼出し時の string に等しく,

右から左に向かって探索した場合は string//separator//word が呼出し時の string に等しい。


14

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

附属書 A(参考)  モジュール ISO_VARYING_STRING

モ ジ ュ ー ル ISO_VARYING_STRING の 実 装 の 一 つ を ftp : //ftp.nag.co.uk/sc22wg5/ISO_VARYING_

STRING

/に例示する。この実装は,Fortran 95 で記述してある(すなわち,JIS X 3001-1:1998 に合致して

いる。

。このモジュールは,この規格(第 2 部:可変長文字列)に合致したモジュールの可搬性のある実

装の一つとなることを意図している。この規格を満足する処理系をどのように提供すべきかを規定するこ

とは意図していない。このモジュールの主な意図は,この規格で要求している引用仕様及び意味に合致し

た可搬性のある処理系を Fortran 言語の範囲内で提供できることを提示することである。また,この規格の

実装を提供していない処理系の利用者への手引としての意味も含んでいる。

このモジュールの実装は,ポインタを含む構造体を使用している。自動ごみ集め機構をもたない処理系

では,処理中にメモリ不足を引き起こす可能性がある。

備考  このモジュールが正しい Fortran プログラムであって正確にこの規格を実装したものであるよ

うに注意を払ってはいるが,このプログラムが正しい結果を導くこと又はこれがすべての処理

系で実行できることを保証するものではない。この実例のモジュールは,この規格の最適な実

装を示すわけではなく,単に一部の処理系で機能的に合致した実装を提供することが分かって

いる,一つの簡単で可搬なモジュールであるにすぎない。


15

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

   

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。

附属書 B(参考)  例示

この附属書では,この規格で規定した機能の使い方を,幾つかの例によって説明する。

備考  これらのプログラム例がそれぞれの問題の解をこの規格に従って実現する正しい Fortran プロ

グラムであるように十分な注意を払ってはいるが,プログラムが正しい結果を導くことも,す

べての処理系で実行できることさえも保証はしない。

B.1

単語の個数  単語の個数を数えるプログラムを示す。

備考  次のプログラムは,この単純な問題の最良の解法であるとか良い解法であるとかいうわけでは

なく,この規格で規定した機能を使用する一つの解法であるにすぎない。

PROGRAM word_count

!---------------------------------------------------------------------!

!

ファイル中に含まれる“単語”の個数を数える。単語は,空白,コンマ,ピリオド,

!

!

感嘆符,疑問符又は記録終端のいずれかによって終了する。

!

!

ファイルは,どんな長さの記録を何個含んでもよい。

!

!

プログラムは単語を数えるファイルの名前の入力を要求し,結果は標準出力装置に

!

!

書き出される。

!

!---------------------------------------------------------------------!

USE ISO_VARYING_STRING

IMPLICIT NONE

type(VARYING_STRING) :: line,word,fname

INTEGER  ::

ierr,nd,wcount=0

fname = "initial string"

WRITE(*,ADVANCE='NO',FMT='(A)') " Input name of file?"

CALL GET(STRING=fname)

!

標準入力装置から読んだ一つの記録全体を,

!

必要なファイル名であるとみなす。

OPEN(UNIT=10,FILE=CHAR(fname)) !

関数 CHAR は,fname を,FILE 指定子の必要とする

!

型に変換する。

file_read: DO !

ファイル終端に到達するまで

  CALL GET(10,line,IOSTAT=ierr)

!

ファイルの次の行を読む。

  IF(ierr == -1 .OR. ierr > 0)EXIT file_read

  word_scan: DO

!

行の終端まで

    nd=SCAN(line," ,.!?")

!

走査して単語の終端を探す。

    IF(nd == 0)THEN

!

単語の終端が記録終端である。

      nd = LEN(line)

      EXIT word_scan

    ENDIF

    IF(nd > 1)THEN wcount=wcount+1  ! 単語中に少なくとも一つの非終端文字があった。


16

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

    line = REMOVE(line,1,nd) ! 次の単語を走査する前に,数え済みの単語

!

と終端文字を取り除いて行を短くする。

  ENDDO word_scan

  IF(nd > 0)THEN wcount=wcount+1

ENDDO file_read

IF(ierr < 0)THEN

  WRITE(*,*) "No. of words in file =",wcount

ELSEIF(ierr > 0)THEN

  WRITE(*,*) "Error in GET in vocabulary_word_count, No.",ierr

ENDIF

ENDPROGRAM word_count14

B.2

語い(彙)の一覧表  B.1 の単純なプログラムを拡張して,異なる単語それぞれの出現頻度とともに全

部の語い(彙)の一覧表を作成する。

備考  B.1 と同様に,これが何らかの意味でこの問題の最適な解法であるというのではなく,この規

格で規定した幾つかの機能の使用例であるにすぎない。

PROGRAM vocabulary_word_count

!---------------------------------------------------------------------!

!

ファイル中に含まれる“単語”の個数を数える。単語は,空白,コンマ,ピリオド, !

!

感嘆符,疑問符又は記録終端のいずれかによって終了する。                     !

!

ファイルは,どんな長さの記録を何個含んでもよい。                           !

!

プログラムは単語を数えるファイルの名前の入力を要求し,結果は標準出力装置に !

!

書き出される。                                                             !

!

また,見つかった語彙及び異なる単語それぞれの出現頻度の一覧表を作る。       !

!---------------------------------------------------------------------!

USE ISO_VARYING_STRING

IMPLICIT NONE

type(VARYING_STRING) :: line,word,fname

INTEGER  ::

ierr,nd,wcount=0

!---------------------------------------------------------------------!

!

語彙の一覧表と頻度の計数のための配列 vocab 及び freq。これらの配列   !

!

の大きさは,使用された語彙が大きくなるにつれて,100 刻みで動的に

!

!

拡張される。

!

!---------------------------------------------------------------------!

type(VARYING_STRING),ALLOCATABLE,DIMENSION(:) ::

vocab

INTEGER,ALLOCATABLE,DIMENSION(:)

  ::

freq

INTEGER      ::

list_size=100,list_top=0

INTEGER :: i  !

ループの指標

!---------------------------------------------------------------------!

!

一覧表を初期化し,処理するファイルを決定する。

!


17

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

   

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。

!---------------------------------------------------------------------!

ALLOCATE(vocab(1:list_size),freq(1:list_size))

WRITE(*,ADVANCE='NO',FMT='(A)') " Input name of file?"

CALL GET(STRING=fname)

!

標準入力装置から読んだ一つの記録全体を,

!

必要なファイル名であるとみなす。

OPEN(UNIT=1,FILE=CHAR(fname)) !

関数 CHAR は,fname を,FILE 指定子の必要とする

!

型に変換する。

file_read: DO !

ファイル終端に到達するまで

  CALL GET(1,line,IOSTAT=ierr)

!

ファイルの次の行を読む。

  IF(ierr == -1 .OR. ierr > 0)EXIT file_read

  word_scan: DO

!

行の終端まで

    nd=SCAN(line," ,.!?")

!

走査して単語の終端を探す。

    IF(nd == 0)THEN

!

単語の終端が記録終端である。

      nd = LEN(line)+1

      EXIT word_scan

    ENDIF

    IF(nd > 1)THEN

!

単語中に少なくとも一つの非終端文字があった。

      wcount=wcount+1

      word = EXTRACT(line,1,nd-1)

      CALL update_vocab_lists

    ENDIF

    line = REMOVE(line,1,nd) ! 次の単語を走査する前に,数え済みの単語

!

と終端文字を取り除いて行を短くする。

    ENDDO word_scan

  IF(nd > 1)THEN

!

単語中に少なくとも一つの文字があった。

    wcount=wcount+1

    word = EXTRACT(line,1,nd-1)

    CALL update_vocab_lists

  ENDIF

ENDDO file_read

IF(ierr < 0)THEN

  WRITE(*,*) "No. of words in file =",wcount

  WRITE(*,*) "There are ",list_top," distinct words"

  WRITE(*,*) "with the following frequencies of occurance"

  print_loop: DO i=1,list_top

    WRITE(*,FMT='(1X,I6,2X)',ADVANCE='NO') freq(i)

    CALL PUT_LINE(STRING=vocab(i))

ENDDO print_loop

ELSEIF(ierr > 0)THEN

  WRITE(*,*) "Error in GET in vocabulary_word_count, No.",ierr


18

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

ENDIF

CONTAINS

SUBROUTINE extend_lists

!---------------------------------------------------------------------!

!

親プログラムの変数の参照:

!

!

  type(VARYING_STRING),ALLOCATABLE,DIMENSION(:) :: vocab

!

!

  INTEGER,ALLOCATABLE,DIMENSION(:)  ::

freq

 !

!

  INTEGER

     ::

list_size

 !

!

一覧表の大きさを拡張し,その新しい一覧表に既存の語彙と頻度情報を保存する。 !

!---------------------------------------------------------------------!

type(VARYING_STRING),DIMENSION(list_size) :: vocab_swap

INTEGER,DIMENSION(list_size)  ::

freq_swap

INTEGER,PARAMETER ::

list_increment=100

INTEGER  ::

new_list_size,alerr

vocab_swap = vocab

!

古い一覧表を一時的な領域に複写する。

freq_swap =freq

new_list_size = list_size + list_increment

DEALLOCATE(vocab,freq)

ALLOCATE(vocab(1:new_list_size),freq(1:new_list_size),STAT=alerr)

IF(alerr /= 0)THEN

  WRITE(*,*) "Unable to extend vocabulary list"

  STOP ENDIF

vocab(1:list_size) = vocab_swap

!

新しく拡張した一覧表の先頭に

freq(1:list_size) = freq_swap

!

古い一覧表を複写する。

list_size = new_list_size

ENDSUBROUTINE extend_lists

SUBROUTINE update_vocab_lists

!---------------------------------------------------------------------!

!

親プログラムの変数の参照:

!

! type(VARYING_STRING),ALLOCATABLE,DIMENSION(:)  :: vocab

!

!

INTEGER,ALLOCATABLE,DIMENSION(:)

  ::

freq

 !

!

INTEGER

     ::

list_size,list_top!

!

type(VARYING_STRING)

   ::

word

 !

!

既存の語彙 vocab 中から word に一致する単語を検索する。

!

!

見つかったとき,頻度 freq に 1 を加える。見つからなかったとき,語彙の

!

!

一覧表の list_top+1 番目に単語を加え,対応する freq に 1 を設定する。

!

! list_size

を超えているならば,更新する前に一覧表の大きさを拡張する。

!


19

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

   

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。

!---------------------------------------------------------------------!

INTEGER :: i  !

ループ指標

list_search: DO i=1,list_top

  IF(word == vocab(i))THEN

    freq(i) = freq(i) + 1

    RETURN

  ENDIF

ENDDO list_search

IF(list_top == list_size)THEN

  CALL extend_lists

ENDIF

list_top = list_top + 1

vocab(list_top) = word

freq(list_top) = 1

ENDSUBROUTINE update_vocab_lists

ENDPROGRAM vocabulary_word_count


20

X 3001-2

:2002 (ISO/IEC 1539-2:2000)

JIS

規格票(解説を含む。

)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

日本工業標準調査会 標準部会 情報技術専門委員会 構成表

     氏名

      所属

(委員会長)

棟  上  昭  男

東京工科大学メディア学部

(委    員)

浅  野  正一郎

国立情報学研究所

石  崎      俊

慶應義塾大学

伊  藤  文  一

財団法人日本消費者協会

岩  下  直  行

日本銀行金融研究所研究第 2 課

大久保  彰  徳

社団法人日本事務機械工業会

岡  本  秀  樹

財団法人日本規格協会

岡  山      淳

総務省行政管理局行政情報システム企画課

筧      捷  彦

早稲田大学

喜  安      拓

総務省情報通信政策局通信規格課

小  町  祐  史

松下電送システム株式会社ドキュメント技術研究所

近  藤  昭  弘

株式会社日立製作所情報・通信グループ統括本部

斎  藤      輝

日本アイ・ビー・エム株式会社工業標準コンサルタント

成  田  博  和

富士通株式会社ソフトウェア事業本部開発企画統括部

平  松  幸  男

日本電信電話株式会社第三部門

伏  見      諭

社団法人情報サービス産業協会

関  口      裕

社団法人電子情報技術産業協会

平  野  芳  行

日本電気株式会社知的財産部標準化推進部

藤  村  是  明

独立行政法人産業技術総合研究所

宮  川  秀  眞

財団法人日本情報処理開発協会

宮  澤      彰

国立情報学研究所

山  本  喜  一

慶應義塾大学

渡  辺      裕

早稲田大学