217
X 3003-1993
は,その外部手続きとモジュール本体とのcollate選択子が同じでなければならない。
参考 本体9.1.6(1)参照。
(49) 機能語EXTERNAL FUNCTIONの外部共用宣言に書いた修飾識別名は,その修飾識別名によって指名
されたモジュール定義中のpublic文に書いた定義関数名を指名しなければならない。
(50) 機能語EXTERNAL SUBの外部共用宣言に書いた修飾識別名は,その修飾識別名によって指名された
モジュール定義中のpublic文に書いた副プログラム名を参照するルーチン識別名を指名しなければな
らない。
(51) 機能語EXTERNAL PICTUREの外部共用宣言に書いた修飾識別名は,その修飾識別名によって指名さ
れたモジュール定義中のpublic文に書いた絵名を参照するルーチン識別名を指名しなければならない。
(52) 機能語EXTERNAL NUMERICの外部共用宣言に書いた修飾識別名は,その修飾識別名によって指名
されたモジュール定義中のpublic文に書いた数値単純変数名又は数値配列名を参照する数値単純変数
名又は数値仮配列宣言を指名しなければならない。
(53) 機能語EXTERNAL STRINGの外部共用宣言に書いた修飾識別名は,その修飾識別名によって指名さ
れたモジュール定義中のpublic文に書いた文字列単純変数名又は文字列配列名を参照する文字列単純
変数名又は文字列仮配列宣言を指名しなければならない。
(54) モジュール中の定義関数名,副プログラム名,絵名,数値識別名又は文字列識別名を参照するすべて
のプログラム単位は,対応する修飾識別名を,外部共用宣言に書かなければならない。この外部共用
宣言は,プログラム単位中でその識別名を参照するどの文よりも早い位置に,書かなければならない。
定義関数名,副プログラム名,絵名,数値識別名又は文字列識別名をプログラム単位中で参照する
ときに,あいまいでないならば,その外部共用宣言に書いた修飾識別名中のモジュール名と小数点は,
省略してもよい。
(55) 修飾識別名の仮配列宣言によって宣言した仮配列を参照するときには,その空の括弧を除いた配列名
を用いる。
18.3 例 構文の例を次に示す。
(1) モジュール定義[構文(2)]の例
1000 MODULE stack
1010 PUBLIC SUB push, pop
1020 PUBLIC FUNCTION isempty$, isfull$
1030 SHARE SUB inc, dec
1040 SHARE NUMERIC pointer, maxdepth, stack(1 to 100)
1050 LET maxdepth=100
1060 LET pointer=0
1070 ! Procedures of the module
1080 EXTERNAL SUB inc(x)
1090 LET x=x+1
1100 END SUB
1110 !
1120 EXTERNAL SUB dec(x)
1130 LET x=x−1
1140 END SUB
――――― [JIS X 3003 pdf 221] ―――――
218
X 3003-1993
1150 !
1160 EXTERNAL SUB push(item)
1170 IF pointer1180 CALL inc(pointer)
1190 LET stack(pointer)=item
1200 END IF
1210 END SUB
1220 !
1230 EXTERNAL SUB pop(item)
1240 IF pointer=0 then
1250 LET item=0 ! Signal for an empty stack
1260 ELSE
1270 LET item=stack (pointer)
1280 CALL dec (pointer)
1290 END IF
1300 END SUB
1310 !
1320 EXTERNAL FUNCTION isempty$
1330 IF pointer=0 then
1340 LET isempty$=”true”
1350 ELSE
1360 LET isempty$=”false”
1370 END IF
1380 END FUNCTION
1390 !
1400 EXTERNAL FUNCTION isfull$
1410 IF pointer>=maxdepth then
1420 LET isfull$=”true”
1430 ELSE
1440 LET isfull$=”false”
1450 END IF
1460 END FUNCTION
1470 END MODULE
(2) モジュール定義[構文(2)]の例
1000 MODULE Common
1010 PUBLIC NUMERIC x, y, z
1020 PUBLIC STRING a$
1030 LET x,y,z=0
1040 LET a$=””
1050 END MODULE
――――― [JIS X 3003 pdf 222] ―――――
219
X 3003-1993
(3) 外部共用宣言[構文(24)]の例
EXTERNAL NUMERIC common.x, common.y, common.z
EXTERNAL STRING common.a$
EXTERNAL SUB stack.push, stack.pop
EXTERNAL FUNCTION stack.isfull$, stack.isempty$
18.4 意味 意味は,次による。
(1) ublic文,share文,dim文又は外部共用宣言以外のdeclare文で宣言された変数及び配列並びにモジ
ュール本体の単純変数は,プログラムの実行を開始するときに,一貫した処理系定義の値を代入され
る。モジュール本体のpublic文で宣言された手続き,変数及び配列が最初に参照されるより前に,モ
ジュール本体中の区が実行される。これらの区は,プログラムの実行に当たって,たかだか1回だけ
実行される。
(2) all文や関数引用(例えば,RND)で起こりうるように,初期化における文の効果が,一つのプログ
ラム中の二つ以上のモジュールの初期化の順序に依存する場合,その効果は,処理系定義とする。
(3) モジュール本体中のshare文に書いた変数及び配列は,そのモジュール定義中に含まれる外部手続き
の次回の呼出しまで,その値を保持する。モジュール本体中のpublic文で宣言した変数及び配列は,
そのモジュール定義中に含まれる外部手続きの次回の呼出しまで,その存在を続ける。しかし,これ
らは,モジュール定義の外部からも参照できるので,その値は,変更されうる。
(4) モジュール本体中のshare文に経路番号を書いた経路は,そのモジュール定義中に含まれる外部手続
きの次回の呼出しまで,その状態を保持する。すなわち,ある経路が開いたファイルを参照している
ならば,そのモジュール定義中の外部手続きが特に閉じるまでは,その経路は開いたままである。
(5) モジュール定義中の外部手続きの内部にあって,仮引き数ではない変数,配列及び経路の有効範囲は,
通常の外部手続きの場合と同様に,局所的とする。
モジュール定義中のpublic文又はshare文に書いた変数,配列及び経路は,そのモジュール中の外
部手続きから参照できる。
(6) odule-option文でないoption文を外部手続きに書いた場合には,その選択子の有効範囲は,その外
部手続きとする。モジュール本体に書いた場合には,その有効範囲はそのモジュール本体とする。
(7) odule-option文の選択子の有効範囲は,そのモジュール本体と外部手続き全部を含むモジュール全体
とする。
(8) hain文によって実行されるプログラム中のモジュール定義は,処理系定義の仕方で初期化される。
18.5 例外状態 なし。
18.6 注意 注意は,次による。
(1) ull BASICにおけるモジュールの概念は,Modula-2のモジュール及びADAのパッケージの概念に似
ている。
(2) ublic文又はshare文に書いたスカラ及び配列の識別名は,直接に参照でき,参照手続きの利用を必
要としない。この概念は,実体の値を共用するための“外部 (external)”データ型又は“共通 (common)”
指定の方法に相当する手段を提供する。
(3) モジュール本体中にあって,かつpublic文にもshare文にも指定しなかった識別名は,モジュール定
義の初期化の間だけ利用できる。
(4) この附属書Iの18.は,二つ以上の並行単位(本体14.実時間参照)が,あるモジュール定義中の一つ
以上の外部手続きを参照するときに起こりうる相互作用については,規定しない。
――――― [JIS X 3003 pdf 223] ―――――
220
X 3003-1993
附属書Aの追加(参考) 規格の構成
附属書Iの17.及び18.は,Full BASICに対する独立した拡張を規定する。これらの章の節は,本体の項
の形式及び用法に従う。
――――― [JIS X 3003 pdf 224] ―――――
221
X 3003-1993
附属書Bの追加(参考) 有効範囲
18. (モジュール)について,次の有効範囲規則を追加する。附属書B表1参照。
番号 対象 有効範囲
(20) module-option文の選択子 モジュール本体及びそのモジュール中の外部手続き
全部
(21) public文で宣言された実体 プログラム全体(そのモジュール本体及びそのモジ
ュール中の外部手続き全部を含む。)
(22) share文で宣言された実体 モジュール本体及びそのモジュール中の外部手続き
全部
(23) モジュール本体及びそのモジュール全体
モジュール中の外部手続き単位によって定義され,
かつその名前がモジュール本体中のpublic文で宣言
されていない外部手続き
――――― [JIS X 3003 pdf 225] ―――――
次のページ PDF 226
JIS X 3003:1993の引用国際規格 ISO 一覧
- ISO/IEC 10279:1991(IDT)
JIS X 3003:1993の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語
JIS X 3003:1993の関連規格と引用規格一覧
- 規格番号
- 規格名称
- JISX0201:1997
- 7ビット及び8ビットの情報交換用符号化文字集合
- JISX0301:2002
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記