この規格ページの目次
152
X 3003-1993
end-select行
(5) elect-on-port行=行番号 select-on-port文 行末部
(6) elect-on-port文=SELECT ON PORT
(7) 通報case区=通報case行 区*
(8) 通報case行=行番号 通報case文 行末部
(9) 通報case文=CASE [{SEND|RECEIVE}] MESSAGE 通報域名|CASE EVENT 事象名
(10) ase-timeout区=case-timeout行 区*
(11) ase-timeout行=行番号 case-timeout文 行末部
(12) ase-timeout文=CASE TIMEOUT 数値時間式
(13) end-to文,receive-from文及びselect-on-port区に書く通報域名は,message宣言中で宣言しておかな
ければならない。
(14) end-to文及びreceive-from文に指定した出力構造及び入力構造の中の要素の個数及び型は,その通報
域名に対するmessage宣言で指名した構造名のstructure宣言による構造に,14.4.2(10)の規定に従っ
て一致しなければならない。
(15) 一つの並行単位中に,同じ通報域名を指名するsend-to文とreceive-from文の双方を書いてはならない。
(16) 機能語CASE SEND MESSAGEで始まる通報case区には,その通報域名を指名するsend-to文を書か
なければならない。機能語CASE RECEIVE MESSAGEで始まる通報case区には,その通報域名を指
名するreceive-from文を書かなければならない。
(17) 一つのselect-on-port区中の異なる通報case文は,おのおの別の通信域名又は事象名を指名しなけれ
ばならない。
(18) elect-on-port区,通報case区及びcase-timeout区の外部の行番号分岐中の行番号は,そのselect-on-port
区,通報case区及びcase-timeout区のそれぞれ内部にある行を参照してはならない。
(19) 通報case文に書く事象名は,process宣言によって宣言しておかなければならない。
14.6.3 例 構文の例を次に示す。
SEND TO LINK FROM ”FIRST”, X/2, 17.35, RESULTS (2)
RECEIVE FROM LINK TO A$, P(1), P(2), I TIMEOUT 30 (3)
――――― [JIS X 3003 pdf 156] ―――――
153
X 3003-1993
100 SELECT ON PORT
110 CASE EVENT E
120 PRINT ”E occurred at”;time$
130 START Eprocessor
140 CASE SEND MESSAGE X
150 SEND TO X FROM a, b, c
160 CASE SEND MESSAGE Y
(pdf 一覧ページ番号 )
170 SEND TO Y FROM d$, e$
180 CASE RECEIVE MESSAGE Z
190 PRINT ”Someone just sent me a Z”
200 RECEIVE FROM Z TO f, g$
210 CASE TIMEOUT 600
220 PRINT ”Ten-minute timeout.”
230 END SELECT
14.6.4 意味 意味は,次による。
(1) 一つの並行活動の中である通報域名をもつsend-to文又はreceive-from文を実行し,それに引き続いて
別の並行活動の中で同じ通報域名をもつreceive-from文又はsend-to文を実行すると,一方の並行活動
中の通報域が他方の並行活動中の通報域に結び付けられる。
(2) end-to文又はreceive-from文の実行は,相手方となる並行活動中にあるreceive-from文又はsend-to
文が実行されて,指定された通報域が結び付けられるか,又は例外状態になったときに完了する。そ
れまでは,その処理は14.1の規定に従って待ち状態になる。
(3) 通報域が結び付けられると,send-to文にある出力構造中の式が評価され,その値及び出力構造中のす
べての配列の値が,対応するreceive-from文にある入力構造中の対応する変数及び配列に代入される。
(4) 入力構造中の添字及び部分文字列指定は,入力構造中の先行する(左側の)変数及び配列がすべて値
を代入されてから,評価される。入力の代入が終わると,交信した二つの活動間の通報域が切り離さ
れ,処理が進行状態に戻る。
(5) end-to文又はreceive-from文にtimeout句を書いたとき,与えられた制限時間内に通報域が結び付け
られなければ,例外状態になる。
(6) end-to文で時間切れになると,その通報は,receive-from文によって受け取られることはない。
(7) end-to文を実行したときに,二つ以上の並行活動が同じ通報域名の通報域を通して通報を受け取ろう
として待っていた場合,どの並行活動がその通報を受け取るかは,処理系定義とする。それらの活動
のうち,ただ一つだけが通報を受け取る。そのほかの活動は,待ち状態を続ける。
(8) eceive-from文を実行したときに,二つ以上の並行活動が同じ通報域名の通報域を通して通報を送ろ
うとして待っていた場合,どの並行活動が通報を送るかは,処理系定義とする。それらの活動のうち,
ただ一つだけが通報を送る。そのほかの活動は,待ち状態を続ける。
(9) elect-on-port区を実行すると,次のいずれかになるまで並行活動が待ち状態になる。
(a) その通報case文で指名した通報域名を指名し,かつその通報case文で指定した通信方向に対応す
る通報域入出力文が,実行される,又は実行されたがその通報域が並行活動に結び付けられていな
かった。ここで,通信方向の対応とは,文CASE RECEIVE MESSAGEに対するsend-to文及び文CASE
SEND MESSAGEに対するreceive-from文をいう。
――――― [JIS X 3003 pdf 157] ―――――
154
X 3003-1993
(b) その通報case文で指名した事象名を指名するsignal文が,実行される,又は実行されたが並行活動
を進行状態にしていなかった。
(c) その通報case文で指名した事象名の一つが,発生する,又は発生したが並行活動を進行状態にして
いなかった。
(d) ase-timeout文で指定した秒数が経過した。
(10) 通報域入出力文の実行によってselect-on-port区の待ち状態が解除されると,対応する通報域名と通信
方向とをもった通報case区が選択され実行される。その通報域入出力文の通報は,その通報case区
中で対応する通報域入出力文が実行される場合にだけ転送される。
(11) ある事象の発生によってselect-on-port区の待ち状態が解除されると,対応する事象名を指名した通報
case区が選択され実行される。通報case区が実行されると,その事象の発生は効果を失う。
(12) 二つ以上の通報case区が実行可能になった場合,どれが実行されるかは,処理系定義とする。
(13) ase-timeout区を書いておくと,select-on-port区に入ってからcase-timeout文で指定した秒数以内に
待ち状態が解除されなかったときに,そのcase-timeout文に続く文が実行される。
(14) 制御が通報case区又はcase-timeout区の終りに到達すると,対応するend-select行に続く行に制御が
移る。
14.6.5 例外状態 例外状態は,次による。
(1) 入力構造中の数値変数又は数値配列への値の代入が数値あふれを起こす。(1202,続行不能。)
(2) 入力構造中の文字列変数又は文字列配列への値の代入が文字列あふれを起こす。(1204,続行不能。)
(3) eceive-from文の入力構造又はsend-to文の出力構造の中で使われている配列の各次元の現在の寸法が,
指名された通報域の宣言中で指定された構造のstructure宣言と一致しない。(6301,続行不能。)
(4) end-to文又はreceive-from文の実行が,timeout句で与えられた制限時間内に完了しない。(12103,
続行不能。)
14.6.6 注意 親システムは,ある通報域又は事象に対して一つの通報case区を選択したことによって,
他の通報域又は事象への反応を抑制することのないようにしなければならない。
14.7 ビット列操作
14.7.1 概要 ビット列 (bit pattern) は,プロセス制御系において情報を符号化する一般的な手段とする。
プログラム中では,ビット列を文字列として表現する。ビット列に対する操作は,連結及び部分文字列抽
出の文字列操作によって行うことができる。
列と数値との間の変換を行う関数が用意されている。
14.7.2 構文 構文は,次による。
(1) 文字列組込み関数名⊃BSTR ドル記号
(2) 数値組込み関数名⊃BVAL
14.7.3 例 なし。
14.7.4 意味 意味は,次による。
(1) 組込み関数の値,値実引き数の個数及び値実引き数の型は,表14.1による。
――――― [JIS X 3003 pdf 158] ―――――
155
X 3003-1993
表14.1 ビット列関数
b$ : 文字列式; r,v : 指標; rのとる値 : 2,8又は16だけ
関数 関数値
BVAL (b$, r) b$で与えられた文字列表現を,基数をrとして解釈した非負整数。
例 BVAL (”101”, 2) =5
BVAL (”2F”, 16) =47
BSTR$ (v, r) vの値を,基数をrとして表現した文字列。続行不能な例外状態とならない
限り,BSTR$は必ず少なくとも1文字は返す。特に,vがゼロのときの
BSTR$の値は,“0”とする。それ以外の先行するゼロは,返されない。
例 BSTR$ (3.14, 2) =“11”
BSTR$ (15, 8) =“17”
(2) 文字列b$中に許される文字は,rの値による。rが2であれば,正しい文字は,数字0及び1とする。
rが8であれば,正しい文字は,数字07とする。rが16であれば,正しい文字は,数字09及び
英大文字AFとする。
14.7.5 例外状態 例外状態は,次による。
(1) 関数BVALの文字列の実引き数の値が,基数rに対する正しい数値表現でない。(4201,続行不能。)
(2) 関数BVALの文字列の実引き数を数値として解釈したときに,その値が数値変数の精度の制限の中で
正確に表現できない。(4202,続行不能。)
(3) 関数BVALの文字列の実引き数を数値として解釈したときに,その値が表現可能な最大の数値を超え
る。(1003,続行不能。)
(4) 関数BSTR$の第1引き数を丸めた値vが負である。(4203,続行不能。)
(5) 関数BVAL又はBSTR$の第2引き数を丸めた値rが,2でも8でも16でもない。(4204,続行不能。)
14.7.6 注意 ビット列の典型的な使用例としては,状態レジスタの操作及び個々のビットがスイッチや標
識のような特定の構成要素を表す処理対象からのデータの操作がある。
14.8 資源管理
14.8.1 概要 並行活動系においては,逐次再利用可能 (serially reusable) な資源の割付けを,応用プログ
ラムが管理しなければならないことがある。例えば,一つのプログラムが二つ以上の並行活動をもってい
るとする。これらの活動が同じ一つの表示面にそれぞれ複数行の通知を印字したい。通知の各行が交錯し
ないようにするには,活動が表示面を排他的に確保 (seize) して,行を全部印字しおわるまで他の活動を
排除する。この確保操作には,時間切れを指定して,対象の資源が空くのを無期限に待つことがないよう
にできる。
14.8.2 構文 構文は,次による。
(1) eize区=seize行 区* end-seize行
(2) eize行=行番号 seize文 行末部
(3) eize文=SEIZE 確保項目並び timeout句?
(4) 確保項目並び=確保項目{コンマ 確保項目}*
(5) 確保項目=SHARED 共用域名|[処理系定義]
(6) nd-seize行=行番号 END SEIZE 行末部
(7) xit-seize文=EXIT SEIZE
(8) 行⊃seize行|end-seize行
(9) 一つの確保項目並び中に,同じ確保項目を2回以上書いてはならない。
(10) eize区 (seize-block) の外部の行番号分岐中の行番号は,そのseize区の内部にある行を参照してはな
――――― [JIS X 3003 pdf 159] ―――――
156
X 3003-1993
らない。
(11) eize区の内部の行番号分岐中の行番号は,そのseize区の外部にある行を参照してはならない。
(12) eize区は,入れ子にしてはならない。seize区中に,そのseize区の先頭を区切るseize行 (seize-line) 以
外のseize行を書いてはならない。seize区中に,そのseize区の末尾を区切るend-seize行 (end-seize-line)
以外のend-seize行を書いてはならない。
(13) xit-seize文 (exit-seize-statement) は,seize区の中にだけ書くことができる。
(14) eize区の内部から,そのseize区の外部で定義された定義関数又は手続を参照してはならない。
(15) eize区中に書く共用域入出力文の共用域名は,そのseize区中のseize文で確保項目として指定してお
かなければならない。
(16) eize区中に書く共用域入出力文には,timeout句を書いてはならない。
(17) eize区中に,gosub文又はon-gosub文を書いてはならない。
14.8.3 例 構文の例を次に示す。
SEIZE SHARED DPORT TIMEOUT 10 (3)
14.8.4 意味 意味は,次による。
(1) eize文の実行の結果は,成功又は不成功とする。seize文がその確保項目並び中の資源全部を確保でき
た場合,seize文の実行は成功したとされて完了する。そして,制御が次の行に進む。
利用可能でない資源が一つでもあると,不成功になる。この場合,確保項目並び中のどの資源も,
その活動によって排他的に確保されることはない。活動は,待ち状態になる。要求した資源全部が利
用可能になると,待ち状態が解除される。資源全部が同時的に確保され,制御が次の行に進む。timeout
句が書いてあって,その時間内にseize文の実行が完了できないときには,例外状態になる。
(2) 確保項目の機能語SHAREDの後に書いた共用域名は,共用データの名前を参照する。その他の処理系
定義の資源の名前を,確保項目並びに書くことができる。
(3) nd-seize行を実行すると,この活動が排他的に確保した資源全部が解放される。
(4) xit-seize文を実行すると,制御がそのseize区のend-seize行に移る。
(5) ある一つの資源を待っているseize文が二つ以上あって,その資源が利用可能になったときに,どの
seize文が資源を確保し実行が成功するかは,処理系定義とする。
(6) eiz区の内部で続行不能な例外状態が発生し,しかもそのseize区の内部で処理されなかった場合には,
12.1及び14.1の規定に従って,外側の例外処理区に制御が移るか,又はその並行活動が停止状態にな
る。どちらの場合にも,そのseize区の資源は解放される。
seize区の外側にある例外処理区がRETRYを発行したときには,制御がそのseize区の先頭のseize
行に戻り,seize文が再び確保項目並び中の資源を待つ。CONTINUEを発行したときには,制御がそ
のseize区の末尾のend-seize行に構文上続く行に移る。
14.8.5 例外状態 例外状態は,次による。
(1) imeout句で指定された秒数以内に,seize文の実行が成功・完了できなかった。(12102,続行不能。)
14.8.6 注意 seize区を入れ子にできないという構文の規定及び資源全部が確保されるか又はどれも確保
されないという意味規定は,すくみ (deadlock) を防ぐ。
――――― [JIS X 3003 pdf 160] ―――――
次のページ PDF 161
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
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記