この規格ページの目次
142
X 3003-1993
(1) プログラム⊃program行? 実時間プログラム
(2) 実時間プログラム=実時間宣言単位 並行単位 並行単位* 外部手続き単位*
(3) プログラム単位⊃並行単位
(4) 並行単位=注釈行* paract行 区* end-paract行
(5) 行⊃paract行|end-paract行
(6) aract行=行番号 paract文 行末部
(7) aract文=PARACT ルーチン識別名{URGENCY 優先度}?
(8) 優先度=符号なし整数
(9) nd-paract行=行番号 end-paract文 行末部
(10) nd-paract文=END PARACT
(11) 単純文⊃実時間文
(12) 実時間文= parstop文|並行動作制御文|処理域入出力文|共用域入出力文|通報域入出力文|
exit-seize文
(13) arstop文=PARSTOP
(14) 区⊃実時間区
(15) 実時間区=select-on-port区|seize区
(16) 一つの実時間プログラム中の二つ以上のparact文に,同じルーチン識別名を書いてはならない。
(17) 一つの実時間プログラム中のすべてのプログラム単位は,同じarithmetic選択子を指定しなければな
らない。
(18) 実時間文及び実時間区は,並行単位の中にだけ書くことができる。
14.1.3 例 構文の例を次に示す。
320PARACT Rigl
330WAIT TIME 17*60*60
(pdf 一覧ページ番号 )
340PRINT ”Time to go home”
350END PARACT
14.1.4 意味 意味は,次による。
(1) 実時間プログラム中で並行単位を実行すると,一つの並行活動が作られる。実時間プログラムの実行
中の任意の時点において,並行活動は,次のいずれかの状態にある。
(a) 進行状態 (in progress)。先頭に書いてある並行単位で定義された並行活動の初期状態,及びstart文
の実行後のそのstart文で指名された並行活動の状態。
(b) 停止状態 (stopped)。まだ進行状態でないか,又は以前に進行状態にあったがその後parstop文の実
行,end-paract文の実行若しくは例外処理区によって受け止められない続行不能な例外状態を発生
させた文の実行によって停止した状態。
(c) 待ち状態 (waiting)。以前に進行状態にあったが,wait文又は通報域入出力文の実行によって,指定
した事象が発生するか,指定した時間が経過するか,指定した時刻になるか,又は通報が交換され
るかまで一時休止した状態。
(2) 任意の時点で幾つかの並行活動が進行状態にありうる。最初は,実時間プログラム中の先頭に書いて
ある並行単位で定義された並行活動だけが進行状態になる。他の並行活動は,start文(start-statement,
14.3参照)の実行によってだけ進行状態にされる。実時間プログラムのprogram行に値仮引き数部が
あるとき,その値仮引き数の有効範囲は,先頭に書いてある並行単位だけとする。
――――― [JIS X 3003 pdf 146] ―――――
143
X 3003-1993
(3) 並行単位の優先度は,その並行活動の相対的な重要度をスケジューラに対して示す。小さい値ほど大
きな重要度を示す。優先度の詳細な意味付けは,処理系定義とする。
(4) tart文によって並行単位が進行状態になる時,すべての変数の初期値は,変数の初期化についての処
理系定義の通常の方針に従う[9.1.4(3)参照]。
(5) 並行単位中の各行は,並行単位の先頭の行から始めて,次のいずれかになるまで,順番に実行される。
(a) 行の実行によって,他の動作が指示される。
(b) 例外状態になる。
(c) top文,chain文,parstop文又はend-paract文が実行される。
(6) arstop文 (parstop-statement) 又はend-paract文 (end-paract-statement) を実行すると,その並行単位
に局所的なファイルがすべて閉じられ,その並行活動の実行が停止状態になる。start文の再度の実行
によって,再び進行状態にすることができる。stop文 (stop-statement) 又はchain文 (chain-statement) を
実行すると,実時間プログラム全体の実行が終了される。例外処理区で処理されない続行不能な例外
状態が発生すると,それを引き起こした並行活動が停止状態になる。実行が実時間宣言単位に到達す
ると例外状態になる処理系では,その例外状態がその実時間プログラム全体の実行を終了させる。
(7) 各並行単位はそれぞれ別の構成要素とし,その中の変数,配列,内部関数及び例外処理区を命名する
識別名は,その並行単位に局所的とする。すなわち,それらの識別名は,別の並行単位では異なる対
象を指名する。組込み関数,並行単位,プログラム単位として定義された手続き,処理域,処理域配
列,事象,構造,通報域及び共用域を命名する識別名は,実時間プログラム全体に広域的とする。す
なわち,それらの識別名は,どこに書いても同じ対象を指名する。
14.1.5 例外状態 なし。
14.1.6 注意 注意は,次による。
(1) 処理系は,進行状態にある一つの並行活動を実行するために,他の並行活動の実行を処理系定義の時
点で中断してもよい。
(2) 並行単位の優先度の解釈は,その並行単位の実行を開始する優先順位としてもよく,またその並行単
位を実行するための最終期限としてもよい。
14.2 実時間宣言
14.2.1 概要 実時間宣言単位 (real-time-declarations) は,実時間プログラムの処理環境を記述する。
(1) 並行活動は,処理域 (process port) を通して外部環境と通信する。process宣言 (process-port-dec) は,
処理域の名前,及びこれらの域に結び付けられた実時間システム中の処理対象 (process object) の属性
を定義する。処理対象は,能動的か受動的かのいずれかとする。受動的 (passive) な処理対象の代表
的なものとして,設備のインタフェースにおける温度検出子やステップモータ制御機構のような測定
点及び制御点がある(14.4参照)。能動的 (active) な処理対象すなわち処理事象 (process event) の代
表的なものとして,時計機構やアラームのようなプログラム割込みの発生源となるものがある(14.3
参照)。
(2) 共用域 (data port) は,個々の並行活動よりも広い有効範囲をもつデータを参照する手段を提供する。
shared宣言 (data-port-dec) は,共用域の名前及びそれを通して参照できるデータの構造を定義する
(14.5参照)。
(3) 通報域 (message port) は,二つの並行活動の間でデータを転送する手段を提供する。転送されるデー
タは,それら二つの活動の外に存在するものではない。message宣言 (message-port-dec) は,通報域の
名前及びそれを通して転送されるデータの構造を定義する。二つの並行活動の間で,一方ではsend-to
――――― [JIS X 3003 pdf 147] ―――――
144
X 3003-1993
文 (send-statement),他方ではreceive-from文 (receive-statement) で同じ通報域名を指名して,通報の
送信を行う(14.6参照)。
(4) tructure宣言 (data-structure-dec) は,処理域,共用域及び通報域を通して転送されるデータの構造を
指定する。それは,域を通してデータを送受信する文の正しさを言語処理系が検査できるようにし,
また共用データ (shared data) の分割できない単位を指定する。
14.2.2 構文 構文は,次による。
(1) 実時間宣言単位={注釈行|実時間宣言行|処理域配列宣言}*
(2) 行⊃実時間宣言行|declare-process行|処理要素行|end-process行
(3) 実時間宣言行=行番号 実時間宣言文 行末部
(4) 実時間宣言文=DECLARE{structure宣言|process宣言|shared宣言|message宣言
(5) tructure宣言= STRUCTURE 構造名 コロン 反復回数? 型指示{コンマ 反復回数?
型指示}*
(6) 構造名=英字 識別名文字*
(7) 反復回数=符号なし整数 OF
(8) 型指示={NUMERIC 精度指定?|STRING} 上下限指定部?
(9) rocess宣言=PROCESS{処理指定|event句} 参照情報?
(10) 処理指定=入出力指示 処理域名 OF 構造名
(11) 入出力指示=INPUT|OUTPUT|OUTIN
(12) 処理域名=英字 識別名文字*
(13) 処理域配列宣言=declare-process行 処理要素行* end-process行
(14) eclare-process行=行番号 declare-process文 行末部
(15) eclare-process文= DECLARE PROCESS 入出力指示 処理域配列名 上下限指定部 OF 構造
名
(16) 処理域配列名=英字 識別名文字*
(17) 処理要素行=行番号 処理要素文 行末部
(18) 処理要素文=処理域配列名 左括弧 整数{コンマ 整数}? 右括弧 コロン 参照情報
(19) nd-process行=行番号 END PROCESS 行末部
(20) vent句=EVENT 事象名
(21) 事象名=英字 識別名文字*
(22) 参照情報=文字列定数
(23) hared宣言=SHARED 共用域名 上下限指定部? OF 構造名
(24) 共用域名=英字 識別名文字*
(25) essage宣言=MESSAGE 通報域名 OF 構造名
(26) 通報域名=英字 識別名文字*
(27) 識別名⊃実時間識別名
(28) 実時間識別名=構造名|事象名|処理域名|処理域配列名|共用域名|通報域名
(29) 処理指定,declare-process文,shared宣言又はmessage宣言に書くすべての構造名は,より早い位置
に,structure宣言で定義しておかなければならない。
(30) 同じ実時間識別名を,二つ以上の構造,事象,処理域,処理域配列,共用域又は通報域を命名するの
に書いてはならない。
――――― [JIS X 3003 pdf 148] ―――――
145
X 3003-1993
(31) 反復回数における符号なし整数の値は,1以上とする。
(32) 処理域配列宣言においては,その先頭にあるdeclare-process文中の上下限指定部で定められた配列の
すべての要素に対し,ちょうど一つずつの処理要素文を書かなければならない。処理要素は,行別の
昇順で記述する。
(33) 処理域配列の名前及び次元数は,declare-process文と処理要素文とで一致しなければならない。
14.2.3 例 構文の例を次に示す。
STRUCTURE OPR:STRING, 2 OF NUMERIC, NUMERIC(10) (5)
STRUCTURE A1:2 OF NUMERIC (5)
STRUCTURE B1:NUMERIC (5)
PROCESS INPUT WEIGHT OF A1 ”ADCCHAN 3” (9)
PROCESS OUTIN PANEL OF OPR ”Q, 177640” (9)
PROCESS INPUT A OF B1 ”BCD 4” (9)
PROCESS OUTPUT Z1 OF B1 (9)
PROCESS EVENT FULL ”INT 36” (9)
参考 ANSI X3.113では,6行目のOF B1がないが,誤りであるので訂正した。
100 DECLARE PROCESS INPUT xyz(2, −1 TO 1) F A1
110 xyz (1, −1):“wb slot 10”
120 xyz (1, 0):“wb slot 11”
130 xyz (1, 1):“wb slot 12”
(pdf 一覧ページ番号 )
140 xyz (2, −1):“wb slot 20”
150 xyz (2, 0):“wb slot 21”
160 xyz (2, 1):“wb slot 22”
170 END PROCESS
SHARED FLIGHT(10) F OPR (23)
SHARED D OF B1 (23)
MESSAGE LINK OF OPR (25)
14.2.4 意味 意味は,次による。
(1) 構造名,処理域名,処理域配列名,共用域名,通報域名及び事象名の有効範囲は,一つの実時間プロ
グラム中のすべての並行単位とする。
(2) rocess宣言,処理域配列宣言,shared宣言及びmessage宣言に書くデータ構造 (data structure) の名
前は,structure宣言で宣言しなければならない。データ構造は,抽象的な構造(すなわち,それに対
して記憶場所が割り振られない構造)であって,数値又は文字列かつスカラ又は配列のいずれである
かを指定する型指示の順序付けられた並びとする。反復回数は,それに続く型指示の出現回数を指定
する。省略すると,1が想定される。
(3) rocess宣言は,処理域の名前及び実時間システム中でその域に結び付けられる処理対象の属性を定義
する。おのおのの処理域配列宣言 (process-array-dec) は,処理域からなる一つの配列を宣言する。配
列の次元数,添字の最大値及び添字の最小値は,上下限指定部によって通常の方法で指定する(7.1
参照)。処理要素文 (process-element-statement) は,配列の各要素に特有の参照情報を宣言する。
(4) rocess宣言中に処理指定 (process-clause) を書くと,その処理域に結び付けられた処理対象が受動的
――――― [JIS X 3003 pdf 149] ―――――
146
X 3003-1993
であることを示す。処理域配列宣言で宣言される処理対象は,常に受動的である。入出力指示は,域
を通過するデータ転送の許容される方向を指示する。INPUTは,処理対象が入力だけをもたらし,
OUTPUTは処理対象が出力だけを受け付け,そしてOUTINは入力と出力の両方を支援することを示
す。
(5) 処理指定又は処理域配列宣言に構造名を書いて,その処理域又は処理域配列の各要素の構造を定める。
参考 ANSI X3.113では,ここに“構造名を省略すると,暗黙のデータ構造は単一の数値になる”と
いう文章があるが,誤りであるので,TIBによって削除した。
(6) rocess宣言中にevent句 (event-clause) を書くと,指定した処理対象が能動的である,すなわち,処
理事象であることを宣言する。この処理事象は,connect-event文によって接続されると,事象を発生
することができるようになる。この事象は,それを待っていた並行活動を進行状態に戻す(14.3参照)。
(7) 処理域に対する参照情報は,処理域に結び付けられる特定の処理対象及びそのデータの形式を指定す
る。能動的な処理対象に対する参照情報の代表的なものは,ハードウェア割込みの発生源の情報に,
その割込みをどのように制御するかの情報を添えたものである。このハードウェア割込みは,その対
象に関連する事象の発生を知らせるものである。参照情報の解釈及び参照情報の省略の解釈は,処理
系定義とする。
(8) hared宣言は,共用域の名前及びそれを通して参照できるデータの構造を定義する。shared宣言中で
上下限指定部を指定すると,それは,指名された構造をもつ要素の配列を定義する。このようにして
定義した配列は,上下限指定部に書く上下限指定の個数13に従って,13次元とする。上下限指
定部を省略すると,与えられた構造をもつ単一の要素が定義される。共用データは,すべての並行活
動から参照できる(14.5参照)。
(9) essage宣言は,通報域の名前及びそれを通して転送されるデータの構造を定義する。
14.2.5 例外状態 例外状態は,次による。
(1) 処理対象の属性が,その宣言と一致しない。(12201,続行不能。)
14.2.6 注意 注意は,次による。
(1) 受動的な処理対象だけを配列にできる。すなわち,処理事象は配列にはできない。
(2) 処理域に対する参照情報は,位取りや,処理対象中の数値の文字符号化外部表現と浮動小数点内部表
現との間の変換などのような自動データ変換を処理系が実行するための書式情報を含んでいてもよい。
処理系は,処理域が参照されたときに,特殊な装置を標準的な機構によって操作するために自動的に
呼び出すルーチンの名前を,この参照情報に含めることにしてもよい。これらのルーチンは,例えば,
切替え時間の長いマルチプレクサを通じた参照や,特殊なグレイコード (Gray code) 機構を取り扱う
のに用いることができる。
(3) 精度指定は,15.(固定小数点10進数機能単位)による。これは選択的な機能単位であるので,機能
単位の組合せによっては,指定できないこともある。
14.3 並行動作制御
14.3.1 概要 start文 (start-statement) 及びwait文 (wait-statement) を実行して,複数個の並行活動をスケ
ジュールする。start文は,一つの並行活動を進行状態にする。進行状態にある並行活動の実際の実行は,
これらの活動の優先度に従って,処理系が制御する。wait文は,指定した一定時間だけ,指定した時刻ま
で又は指定した事象 (event) が発生するまで,並行活動の実行を休止する。事象は,接続されている処理
対象 (process object) によって外部から発生することもあるし,signal文 (signal-statement) の実行によって
内部から発生することもある。
――――― [JIS X 3003 pdf 150] ―――――
次のページ PDF 151
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
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記