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

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

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

まえがき 

この規格は,工業標準化法第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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

目 次 

ページ 

序文 ··································································································································· 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̲STRING ······························································ 14 

附属書B(参考)例示 ········································································································· 15 

解説 ································································································································· 21 

  

   

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

日本工業規格          JIS 

X 3001-2:2002 

(ISO/IEC 1539-2:2000) 

プログラム言語Fortran― 

第2部:可変長文字列 

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

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

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

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

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

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

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モジュールの名前,可変長文字列を表現する一つの構

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

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

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

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

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

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

れた名前及び引用仕様がこの規格に合致し,かつ意味がこの規格及びJIS X 3001-1:1998に合致する限り,

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

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

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

ことが推奨される。 

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

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

規格に合致したFortranで書かれたモジュールを,附属書Aに示す。このモジュールは,この規格に記

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

規格に合致した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 

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

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

   

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

系の大きさ及び処理できるプログラムの複雑さによる制限以外によって,長さの上限を設けてはならない。

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

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

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の型の組合せは,次のいずれかとする。 

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

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

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

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

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

備考 これらと等価な関係演算子である.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.1〜3.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])の形の要素別処理関数で

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

   

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ある。 

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中の文字の個数とする。 

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

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

備考 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の大小順序に従って,二つの文字列の大小を比較する。 

分類 要素別処理関数。 

引数 

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

   

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

  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  型の組合せは,次のいずれかでなければならない。 

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

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

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

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

  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)  

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

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

   

JIS規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

分類 要素別処理関数。 

引数 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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

れる。引数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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

    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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

  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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

  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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

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規格票(解説を含む。)は,著作権法により保護されています。無断での引用,転載等は禁止されております。 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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

   氏名 

   所属 

(委員会長) 

棟 上 昭 男 

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

(委  員) 

浅 野 正一郎 

国立情報学研究所 

石 崎   俊 

慶應義塾大学 

伊 藤 文 一 

財団法人日本消費者協会 

岩 下 直 行 

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

大久保 彰 徳 

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

岡 本 秀 樹 

財団法人日本規格協会 

岡 山   淳 

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

筧   捷 彦 

早稲田大学 

喜 安   拓 

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

小 町 祐 史 

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

近 藤 昭 弘 

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

斎 藤   輝 

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

成 田 博 和 

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

平 松 幸 男 

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

伏 見   諭 

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

関 口   裕 

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

平 野 芳 行 

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

藤 村 是 明 

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

宮 川 秀 眞 

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

宮 澤   彰 

国立情報学研究所 

山 本 喜 一 

慶應義塾大学 

渡 辺   裕 

早稲田大学