JIS X 3003:1993 電子計算機プログラム言語Full BASIC | ページ 44

212
X 3003-1993
(1) 単純文⊃character-input文
(2) haracter-input文=CHARACTER INPUT 単文字入力修飾部? 文字列変数名
(3) 単文字入力修飾部=経路指定|単文字入力修飾|経路式 コンマ 単文字入力修飾
(4) 単文字入力修飾=単文字入力修飾項目{コンマ 単文字入力修飾項目}* コロン
(5) 単文字入力修飾項目=CLEAR|NOWAIT|入力修飾項目
(6) 単文字入力応答=プログラム文字|行末
(7) 設定対象⊃経路指定? ECHO 文字列式
(8) sk文⊃ASK 経路指定? 単文字入力質問対象並び
(9) 単文字入力質問対象並び=単文字入力質問対象{コンマ 単文字入力質問対象}*
(10) 単文字入力質問対象= CHARIN 文字列変数名|TYPEAHEAD 文字列変数名|ECHO CONTROL
文字列変数名|ECHO 文字列変数名|CHARACTER PENDING
数値変数名
17.3 例 構文の例を次に示す。
CHARACTER INPUT NEXTKEY$ (2)
Character input clear, prompt ”press anykey to continue”:trash$ (2)
Character Input #3, Timeout 15:selectit$ (2)
Character input nowait:isany$ (2)
Ask #1 : charin yes no$ (8)
ASK CHARACTER PENDING HOWMANY (8)
17.4 意味 意味は,次による。
(1) haracter-input文を実行すると,プログラムの実行は,ここに定める正しい単文字入力応答がなされ
るまで,又は入力バッファから1文字のプログラム文字若しくは行末が供給されるまで,待たされる。
character-input文は,一つの値を文字列変数に代入する。対話方式の場合,単文字入力修飾にprompt
句が書いてなければ,入力要求は出力されない。character-input文に経路指定を書かなかったとき及
びゼロ番の経路を指定したとき,単文字入力は,経路指定のないinput文及びline-input文と同じ装置
からとられる。一括方式におけるcharacter-input文及び対話方式でない装置に接続されている経路の
意味は,処理系定義とする。単文字入力バッファの容量は,処理系定義とする。
(2) 指定された経路からの単文字入力に対して,処理系が先行入力 (typeahead) の機能を支援している場
合,入力は,その経路における論理バッファの概念を用いて規定する。このことは,特定の実現手法
を要求するものではない。この論理バッファと処理系中の物理バッファとの関連は,定義しない。入
力装置が一つのプログラム文字又は行末を処理系に渡すと,処理系はそれを論理バッファ中のすべて
の既存のプログラム文字及び行末の次におく。単文字入力応答は,このバッファからとられる。バッ
ファ中の一番前の(最も古い)プログラム文字又は行末がバッファから論理的に取り除かれ,それが
単文字入力応答になる。単文字入力バッファの容量は,処理系定義とする。バッファの容量を超えた
ときの効果は,処理系定義とする。その経路に対する入力応答又は行入力応答を準備しているとき以
外のプログラム文字及び行末は,このバッファにおかれる。
(3) 単文字入力応答がプログラム文字であれば,その1文字が文字列変数に代入される。単文字入力応答
が処理系定義の行末であれば,“EOL”が文字列変数に代入される。timeout句の数値式の値がゼロよ
り小さいこと又は指定された時間が過ぎたことによって例外状態になると,文字列変数の値は,
character-input文を実行する前の値のまま変わらない。

――――― [JIS X 3003 pdf 216] ―――――

                                                                                            213
X 3003-1993
(4) 単文字入力修飾にprompt句を書くと,その文字列式の値が出力される。
(5) 単文字入力修飾にtimeout句を書くと,その数値時間式が評価され,秒数s(整数とは限らない。)が
定められる。s秒以内に正しい単文字入力応答が与えられなければ,例外状態になる。character-input
文を実行してから,単文字入力応答を受け取るまでに経過した秒数(整数とは限らない。)が,elapsed
句の数値変数に代入される。
処理系に時計機能がないとき,timeout句は,何も効果をもたない。elapsed句の結果は−1とする。
時計機能があるとき,elapsed句の結果は常に正又はゼロとする。timeout句及びelapsed句の値の範
囲(最小値及び最大値)及び分解能は,処理系定義とする。
(6) 単文字入力修飾にNOWAITを書くと,character-input文が単文字入力応答のくるまで,プログラムの
実行を待たせることがなくなる。入力バッファ中にプログラム文字又は行末があれば,その値が文字
列変数に代入される。バッファ中にプログラム文字又は行末がなければ,文字列変数の値は前のまま
変わらない。
(7) 単文字入力修飾にCLEARを書くと,バッファ中にあるプログラム文字及び行末がすべて取り除かれ
る。
参考 バッファの内容を消してから,単文字入力応答を待つのであろう。
(8) hain文を実行したときにバッファ中にあったプログラム文字及び行末の効果は,処理系定義とする。
(9) 機能語ECHOをもつset文を実行すると,画面における文字のエコー表示が,大文字に変換した文字
列式の値の“ON”又は“OFF”に従って,有効又は無効になる。
エコー表示を有効にすると,表示可能文字を打けんしたときに,その経路の出力媒体上に,可能な
らばその文字が表示される。エコー表示を無効にすると,そのような表示は,可能ならば抑制される。
ある経路上でエコー表示を有効又は無効にできるか否かは,処理系定義とする。
プログラムの実行を開始して,ファイルを開いたときには,どの経路に対してもエコー表示が有効
にされている。
(10) 機能語ECHOをもつask文を実行すると,指定された経路におけるエコー表示の現在の状態が,文字
列変数に代入される。エコ表示が有効であれば“ON”が,無効であれば“OFF”が,処理系がエコー
表示の状態を決定できないならば“UNKNOWN”が代入される。
(11) 機能語ECHO CONTROLをもつask文を実行すると,その経路がエコー表示を有効又は無効にできる
ならば“YES”が,できないならば“NO”が,処理系が決定できないならば“UNKNOWN”が文字
列変数に代入される。
(12) 機能語TYPEAHEADをもつask文を実行すると,その経路が先行入力の機能を支援しているならば
“YES”が,支援していないならば“NO”が,処理系がその状態を決定できないならば“UNKNOWN”
が文字列変数に代入される。
先行入力の機能が支援されていないならば,応用プログラムは,ある経路上でのプログラム文字及
び行末の入力が,バッファ中に保留されるとは期待しないほうがよい。
(13) 機能語CHARACTER PENDINGをもつask文を実行すると,数値変数に一つの値が代入される。その
経路の入力バッファ中にプログラム文字若しくは行末がない,又はその経路に先行入力バッファがな
い場合には,値はゼロとする。保留されているプログラム文字及び行末の個数を処理系が決定できな
い場合には,値は−1とする。値が正であれば,少なくともそれだけの個数のプログラム文字及び行
末が,入力バッファ中にある。
(14) 機能語CHARINをもつask文を実行すると,その経路のファイルで単文字入力機能が利用できるなら

――――― [JIS X 3003 pdf 217] ―――――

214
X 3003-1993
ば“YES”が,さもなければ“NO”が文字列変数に代入される。
17.5 例外状態 例外状態は,次による。
(1) 数値時間式の値がゼロより小さい。(8402,続行不能。)
(2) 単文字入力修飾のtimeout句で指定された秒数以内に,単文字入力応答がなかった。(8401,続行不
能。)
(3) 単文字入力機能をもたないファイルに対して,character-input文を実行しようとした。(7451,続行不
能。)
(4) haracter-input文が,不活性状態にある経路を参照しようとした。(7004,続行不能。)
(5) haracter-input文が,出力専用 (OUTPUT) として開かれたファイルを参照しようとした。(7303,続
行不能。)
(6) 機能語ECHOをもつset文の文字列式の値が,大文字に変換した後に“ON”でも“OFF”でもない。
(4103,続行不能。)
17.6 注意 注意は,次による。
(1) 単文字入力応答は,打けんされた後できるだけ早く“供給”される。処理系で可能ならば,input文
及びline-input文とは違って,行末が送られるのを待たない。
(2) 処理系が,入力バッファ中にあるプログラム文字及び行末の正確な個数を知ることができるのならば,
機能語CHARACTER PENDINGをもつask文に対して,その値を返すことが望ましい。しかし,プロ
グラムは,この数値が正確であると想定すべきではない。なぜならば,これを保証することは,時間
的に不可能だからである。
(3) 処理系がcharacter-input文に対して先行入力バッファを設ける場合には,それをinput文及び
line-input文に対するバッファと同じものにすることが望ましい。
(4) 処理系は,可能ならば,input文及びline-input文に対するエコー表示の制御にも,機能語ECHOをも
つset文を利用することが望ましい。
(5) 処理系は,非プログラム文字を定義し,これを単文字入力応答に用いてもよい(本体4.1参照)。非プ
ログラム文字の効果は,処理系定義とする。
(6) haracter-input文を実行してファイルの終り条件になったとき,処理系がそれを検出することが可能
ならば,それを関数EXTYPEの値が8011(続行不能)の例外状態(本体11.4参照)とすることが望
ましい。
18. モジュール
18.1 概要 モジュールは,外部手続きを内部に含むプログラム単位である。モジュールは,変数,配列,
手続き及び経路といった実体も含むことができる。これらの実体は,モジュール中の手続きが,統制され
た仕方で共用 (share) するが,このモジュールの外部のプログラムの部分が直接に参照することはできな
い。ある種の広域 (public) 手続きは,参照 (access) 手続きとも呼ばれ,サブルーチン呼出しや関数引用を
通じて,共用実体(変数,配列,手続き及び経路)を参照する。更に,広域の変数及び配列を,モジュー
ルの外部のプログラム単位から直接に参照可能にすることもできる。モジュール中の共用実体の値は,次
回の関数引用やサブルーチン呼出しまで保持される。共用実体を初期化する手段がある。
モジュールの利用方法は,幾種類もある。モジュールは,抽象データ型(データのカプセル化)の創成
を実現し,情報の封じ込めを許し,“対象指向 (object oriented)”プログラミング法の採用を可能にする。
モジュールは,処理系定義のライブラリを提供するのにも使える。例えば,新しい数学関数をモジュール

――――― [JIS X 3003 pdf 218] ―――――

                                                                                            215
X 3003-1993
が用意し,そのうち必要なものだけをプログラムが参照して,残りは無視する。最後に,モジュールは,
BASICの機能を拡張するのにも使えよう。例えば,モジュールを利用して,GKSの完全水準をBASICに
結合できよう。
18.2 構文 構文は,次による。
(1) プログラム⊃program行? 主プログラム{外部手続き単位|モジュール単位}*
(2) モジュール単位=注釈行* モジュール定義
(3) モジュール定義=module行 モジュール本体 外部手続き単位* 注釈行* end-module行
(4) odule行=行番号 module文 行末部
(5) odule文=MODULE モジュール名
(6) モジュール名=ルーチン識別名
(7) モジュール本体={注釈行|public行}*{注釈行|share行}* モジュール本体区*
(8) モジュール本体区=注釈行|宣言行|dim行|module-option行|区
(9) ublic行=行番号 public文 行末部
(10) ublic文=PUBLIC 広域宣言
(11) 広域宣言= numeric宣言|string宣言|モジュールfunction宣言|モジュールsub宣言|
モジュールpicture宣言
(12) モジュールfunction宣言=FUNCTION 関数名並び
(13) モジュールsub宣言=SUB 副プログラム名並び
(14) モジュールpicture宣言=PICTURE 絵名並び
(15) hare行=行番号 share文 行末部
(16) hare文=SHARE{広域宣言|channel宣言}
(17) hannel宣言=CHANNEL 経路番号並び
(18) 経路番号並び=経路番号{コンマ 経路番号}*
(19) odule-option行=行番号 module-option文 行末部
(20) odule-option文=MODULE option文
(21) nd-module行=行番号 end-module文 行末部
(22) nd-module文=END MODULE
(23) 宣言指定⊃外部共用宣言
(24) 外部共用宣言= EXTERNAL [{FUNCTION|SUB|PICTURE|NUMERIC|STRING}]
修飾識別名並び
(25) 修飾識別名並び=修飾識別名{コンマ 修飾識別名}*
(26) 修飾識別名= モジュール名 小数点{定義関数名|ルーチン識別名|数値単純変数名|
文字列単純変数名|仮配列宣言}
(27) 数値識別名⊃モジュール名 小数点 英字 識別名文字*
(28) 文字列識別名⊃モジュール名 小数点 英字 識別名文字* ドル記号
(29) 副プログラム名⊃モジュール名 小数点 ルーチン識別名
(30) 絵名⊃モジュール名 小数点 ルーチン識別名
(31) 行⊃ public行|share行|module行|module-option行|モジュール本体区|end-module行|
dim行|宣言行
参考 ここで,モジュール本体区という構文単位名が行の定義中に入っていることは,あまり意味が

――――― [JIS X 3003 pdf 219] ―――――

216
X 3003-1993
ないように思われる。
(32) 宣言行=行番号 宣言文 行末部
参考 ANSI X3.113 Aでは,declaration-statementという構文単位名を使っているが,それは,定義さ
れていない。ここでは仮に,宣言文と訳しておく。
(33) im行=行番号 dim文 行末部
(34) 一つの識別名は,ただ1回だけ数値型として宣言できる。すなわち,一つのモジュール定義中のモジ
ュール本体の中で,public文,share文若しくはdeclare文のnumeric宣言又はdim文に,1回だけ書
くことができる。
(35) 一つの識別名は,ただ1回だけ文字列型として宣言できる。すなわち,一つのモジュール定義中のモ
ジュール本体の中で,public文,share文若しくはdeclare文のstring宣言又はdim文に,1回だけ書
くことができる。
(36) 一つの識別名は,ただ1回だけ関数名として宣言できる。すなわち,一つのモジュール定義中のモジ
ュール本体の中で,public文,share文又はdeclare文のモジュールfunction宣言に,1回だけ書くこ
とができる。
(37) 一つの識別名は,ただ1回だけ副プログラム名として宣言できる。すなわち,一つのモジュール定義
中のモジュール本体の中で,public文,share文又はdeclare文のモジュールsub宣言に,1回だけ書
くことができる。
(38) 一つの識別名は,ただ1回だけ絵名として宣言できる。すなわち,一つのモジュール定義中のモジュ
ール本体の中で,public文,share文又はdeclare文のモジュールpicture宣言に,1回だけ書くことが
できる。
(39) 一つの経路番号は,ただ1回だけ経路番号として宣言できる。すなわち,一つのモジュール定義中の
モジュール本体の中で,share文のchannel宣言に,1回だけ書くことができる。
(40) あるモジュール定義中のpublic文に書いた識別名は,そのモジュール定義中の外部共用宣言に書いて
はならない。
(41) 識別名をpublic文に書いた変数,配列及びルーチンは,主プログラム,外部手続き単位又はそのプロ
グラム中の他のモジュール定義にその変数,配列又はルーチンを指名する外部共用宣言をもつdeclare
文を書けば,その主プログラム,外部手続き単位又はモジュール定義から参照することができる。
(42) 識別名をpublic文又はshare文に書いた変数,配列及びルーチンは,それ以上の宣言なしに,そのモ
ジュール定義中のモジュール本体及び外部手続き単位から参照できる。
(43) hare文に書いた経路番号は,そのモジュール定義中のモジュール本体及び外部手続き単位から参照
できる。
(44) 識別名又は経路番号がpublic文又はshare文に指定されていない変数,配列及び経路は,そのモジュ
ール本体でだけ参照できる。
(45) ngle選択子,arithmetic選択子,collate選択子及びbase選択子は,それぞれ,モジュール本体には,
たかだか1回だけ書くことができる。
(46) ある種類の選択子をモジュール本体のmodule-option文に書いたときには,同じ種類の選択子を,再
びそのモジュール定義中のモジュール本体及び外部手続き単位に書いてはならない。
(47)モジュール定義中の外部手続きがそのモジュール中の共用又は広域の数値識別名を参照する場合には,
その外部手続きとモジュール本体とのarithmetic選択子が同じでなければならない。
(48) モジュール定義中の外部手続きがそのモジュール中の共用又は広域の文字列識別名を参照する場合に

――――― [JIS X 3003 pdf 220] ―――――

次のページ PDF 221

JIS X 3003:1993の引用国際規格 ISO 一覧

  • ISO/IEC 10279:1991(IDT)

JIS X 3003:1993の国際規格 ICS 分類一覧

JIS X 3003:1993の関連規格と引用規格一覧