* 仕様書

[REFS[
- [4] [[ISO/IEC 6429]]:1991 5.6
- [3] [CITE[Standard master - ECMA-48_5th_edition_june_1991.pdf]], [TIME[2021-01-16T09:56:56.000Z]], [TIME[2022-05-15T02:24:05.708Z]] <https://www.ecma-international.org/wp-content/uploads/ECMA-48_5th_edition_june_1991.pdf#page=27>
]REFS]

* 意味

[1]
制御のための論理的な単位としてデータストリーム中に
現れる[[ビット組合せ]]の列。 control string。 
([[JIS X 0211]]-1994 4.2.25)

[5] 
データ列中に出現して、制御目的の論理実体となる。
See also [[区切子制御文字]]

* 呼称

[9] [[JIS X 0211]]‐1994 の訳語:

-control sequence
→[[制御シーケンス]]
- control string →[[制御列]]

[10] 情報系の他の分野では「列」は sequence の訳に当ててることが多く、
「制御列」はわかりにくい。

[11] 
「string」は通例「文字列」と訳すが、ここでは
control string
の中に
command string と character string 
があるという構造なので、
control string を「制御文字列」と訳すのもまた混乱を招く。


* 構文

=control-string = cmd-string / char-string
=cmd-string = cmd-opening-delimiter cmd-string terminating-delimiter
=char-string = char-opening-delimiter char-string terminating-delimiter
=cmd-opening-delimiter = APC / DCS / OCS / PM
=char-opening-delimter = SOS
=cmd-string = 1*( %x08-0D / %x20-7E )
=char-string = 1*<OCTET except SOS and ST>
=terminating-delimiter = ST

[6] 
[CODE(ABNF)[char-string]] で [CODE(char)[[[SOS]]]] 
を除いてあるのは、[[制御ストリング]]は入れ子に出来ないってことでしょう。

Command string で [CODE(ABNF)[%x08-0D]] が使えるってのは、
特定の [[C0]] 文字集合に依存してる気がしますがねぇ。この区間は 
[[ISO/IEC 6429//C0文字集合]]と解釈するのがいいんでしょうか?

あ、そもそも、 command string や character string
の中身は[[制御ストリング]]の外側と同じように[[符号拡張法]]を使って
文字を表現するものなんですかね?

え? [[制御ストリング]]を解釈する受信装置に依存ですか? うーむ。


[CODE(ABNF)[%x0E-0F / %xA0-FE]] の扱いについては、
[[7ビット符号と8ビット符号]]参照。
[CODE(ABNF)[char-string]] は任意のビット組合せが使えるらしいですが、 
[[GR]] はこの方法で 
[SAMP[[CODE(char)[[[SO]]]][VAR[...]][CODE(char)[[[SI]]]]]] 
にするとして、 [[CR]] はどうしたらいいんでしょう?
[CODE(char)[[[ESC]] [VAR[[[Fe]]]]]] ですか...?

[7] 
command string の方は[[ビット組合せ]]が限定された「命令」で、
[[引数]]は文字列というよりは[[ビット組合せ]]列の性質が強いみたいです。
一方で
character string の方は[[文字列]]になってます。

[8] 
command string の方が古くからあって後から
[CODE[SOS]]
が追加されたみたいですが、
既存の [CODE[ST]] を流用しようとして似た用法で少し意味の違う2つを統合してしまって、
説明がわかりにくくなってる気がします。





* メモ

[12] [[VT][VT100]]

[2] [CITE[Digital Ansi-Compliant Print Protocol Lev 2 Program. Ref. Man. - PPLV2PMB.PDF]], [TIME[1995-08-31T14:32:02.000Z]], [TIME[2022-05-02T12:20:35.927Z]] <http://sup.xenya.si/sup/info/digital/MDS/jun99/Cd3/PRINTER/PPLV2PMB.PDF#page=57>

#page=105

#page=123

[13] [CITE@ja[Control functions - akinomyoga/contra]], [TIME[2021-12-31T23:05:20.000Z]], [TIME[2022-12-11T08:12:27.206Z]] <https://akinomyoga.github.io/contra/escseq.html>

[14] [[DRCS]]