[9] 
[DFN[制御機能]]は[[制御文字]]をはじめ、
[[符号化文字集合]]を使った[[符号化文字データ要素]]の列の中にあって[[図形文字]]以外の機能の適用を表現する[[ビット組合せ]]の列です。

* 仕様書

[REFS[
-
[15] 
Standard ECMA-48
[CITE[Control Functions for Coded Character Sets]], 
Fifth Edition - June 1991,
Reprinted June 1998,
[TIME[2014-10-28T04:43:11.000Z]], [TIME[2020-10-07T08:09:41.942Z]] 
]REFS]
-- [4] 
<http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf#page=18>
-- [5] [CSECTION[6.4 Formator functions and editor functions]]
<http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf#page=32>
-- [7] <http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf#page=91>
]REFS]

* 意味

[FIG(quote)[ >>4

>
[B[4.2.24 Control function]]
>
An element of a character set that effects the recording, processing, transmission, or interpretation of
data, and that has a coded representation consisting of one or more bit combinations.
]FIG]

[3]
>
:制御機能 (control function):
[[データ]]の[[記録]], [[処理]],
[[伝送]]及び[[解釈]]に[[影響]]を及ぼす[[作用]]で、
一つ以上の[[ビット組合せ]]で[[表現]]するもの。
[SRC[[[JIS X 0211]]‐1994 4.2.23, [[JIS X 0202]]:1998 4.10, [[JIS X 0201]]:1997 3.4]]

[2]
>
:制御機能 (control function):
データの記録、処理、伝送又は解釈に影響を及ぼし、
かつ、一つ以上の[[オクテット]]からなる[[符号化表現]]をもつ動作。
([[JIS X 0221]]‐1:2001 4.15)

[10] 
1つの[[文字]]と考えられているものを[[制御文字]]といいます。
[[エスケープシーケンス]]のように複数の[[ビット組合せ]]の列で記述されるものも含めるとき[[制御機能]]といいます。

[11] [[C1制御文字]]が [[CR領域]]で[[制御文字]]として記述されたり、
[[エスケープシーケンス]]で[[制御機能]]として記述されたりするように、
構文以外に両者の違いはさほど重要ではありません。

[1] 制御機能 ⊃ [[制御文字]], 制御機能 ⊃ [[エスケープ・シーケンス]], 制御機能 ⊃ [[制御シーケンス]], 制御機能 ⊃ [[制御列]]。

[6] 
[[制御機能]]には、
[[formator function]]
と
[[editor function]]
があります。
[[editor function]]
は
[CODE(charname)@en[FORMAT EFFECTOR ACTION MODE]]
([CODE(charname)@en[FEAM]])
に
sensitive
であるというのが違いです。
[SRC[>>5]]

[8] [[単独制御機能]]

* 引数

[72] 
[[制御文字]]やその他の[[制御機能]]のいくつかは、
直後に[[引数]]となる[[バイト列]]を承けることがあります。

[12] 
[[引数]]の形態は共通規格がなく、[[制御機能]]それぞれに記述方式が違っています。

[13] 
[[引数]]は [[GL領域]]で記述される場合がほとんどですが (たまに任意の[[ビット組合せ]]を認めるものもあります。)、
[[制御文字]]依存の意味を持っていて、
[[GL]] に[[指示]]されている[[図形文字集合]]とは関係ありません。

[EG[
[14] 例えば俗に[[エスケープシーケンス]]
[CODE(charname)@en[ESC]] [N[2/4]] [N[4/0]]
を
[[ASCII]]
で
[CODE(charname)@en[ESC]] $ @
と書くことがありますが、
厳密には正しくありません。

]EG]

[16] 
[[引数]]の記述方法が違うということは、未知未対応の[[制御機能]]が出現したとき、
適当に読み飛ばすことができず、解釈を誤る可能性があるということです。

[EG[
[17] 
例えば [N[8/0]] が1バイトの[[引数]]を取るとすると、
[[GL]] に[[94[SUP[2]]集合]]が[[指示]]された状態で

[N[8/0]] [N[2/1]] [N[2/2]] [N[2/3]] ...

のうち [N[2/1]] は[[引数]]なので、[[図形文字]]の一部ではありません。
もしそのことを知らないと、
[N[2/1]] [N[2/2]] 
で1文字だと誤認し、
以後すべて[[文字化け]]するかもしれません。


]EG]



[18] 
[[ISO/IEC 10646]] は[[引数]]を [CODE[U+0000]] ... [CODE[U+00FF]]
の[[符号位置]]で表すことにしていて、これを「詰め込み」と呼んでいます。
[SEE[ [[制御文字]], [[ISO/IEC 10646におけるエスケープシーケンス]] ]]


[FIG(short list)[ [19] [[制御文字]]と[[引数]]で構成される[[制御機能]]
- [[エスケープシーケンス]]
- [[単独シフト]]
- [[制御シーケンス]]
- [[制御列]]
- [[CEX]]
- [[GCC]]
- [[Videotex]], [[ARIBの文字コード]]の[[制御機能]]各種
]FIG]

* メモ



