DIGITAL Command Language ( DCL ) は、 Digital Equipment Corporationが開発した多くのオペレーティングシステムの標準コマンド言語です。DCL は元々、IASのプログラム開発システム (PDS) として実装され、[ 3 ] [ 4 ]後にRSX-11M、RT-11、RSTS/Eに追加されましたが、VAX/VMS (後のOpenVMS )で最も強力な形になりました。DCL は、OpenVMS の一部として VSI によって開発され続けています。[ 5 ]
DCL は、文字列、整数、ビット配列、配列、ブール値など、複数のデータ型をサポートするスクリプト言語ですが、浮動小数点数はサポートしていません。OpenVMSシステム サービス(カーネルAPI ) へのアクセスは、レキシカル関数を介して行われます。レキシカル関数は、コンパイル言語の対応する関数と同じ動作をし、スクリプトがシステムの状態に関する情報を取得できるようにします。DCL にはIF-THEN-ELSEや、ストリーム、インデックス付き、シーケンシャルなど、すべてのレコード管理サービス(RMS) ファイル タイプへのアクセスが含まれていますが、DO-WHILEやその他のループ構造がないため、ユーザーは代わりに IF およびGOTOラベル ステートメントを使用する必要があります。
DCL は、他のオペレーティングシステムでも利用可能です。
DCLはXLNT言語の基盤であり、1997年からAdvanced System Concepts Inc.によって配布されている、CGI機能を備えたインタープリタ・IDE・WSHエンジンの組み合わせによってWindows上で実装されている。
OpenVMS の実装では、コマンドライン パーサーはランタイムライブラリ( CLI$ ) であり、ユーザー アプリケーションにコンパイルできるため、OS が提供するコマンドとユーザーが記述したコマンドの両方に対して一貫したコマンドライン インターフェイスを提供します。コマンドラインは動詞で始まり、その後に最大 8 つのパラメータ (引数) および/または修飾子 ( Unix用語ではスイッチ) が続きます。修飾子は '/' 文字で始まります。Unix とは異なり、'/' の前にスペースは必要ありません。修飾子は位置独立 (コマンドライン上のどこにでも出現可能) または位置依存 (修飾子は後に続くパラメータに影響します) のいずれかです。ほとんどの修飾子は位置独立です。修飾子には値または一連の値を割り当てることもできます。動詞と修飾子名の最初の最も重要な部分のみが必要です。パラメータは整数または英数字テキストです。
OSコマンドの例は次のようになります。
set audit / alarm / enable =( authorization , breakin = all ) show device / files $1$DGA1424 :2番目のshowコマンドは、次のように入力することもできます。
sho dev $1$DGA1424:/fil
DCLのドキュメントでは通常、すべてのDCLコマンドが大文字で表記されていますが、DCLコマンドは大文字と小文字を区別しないため、大文字、小文字、または大文字と小文字が混在した形式で入力できます。
OpenVMSやRSXなどの一部の実装では、コマンドの短縮を可能にするために、最小一意性方式が採用されていた。
コマンドの場所を特定するためにパスを使用する他のシステムとは異なり、DCLではコマンドをCLD(コマンド言語定義)定義または外部シンボルを介して明示的に定義する必要があります。ほとんどのOpenVMSネイティブコマンドはCLDファイルを介して定義されます。これらのファイルはコマンド定義ユーティリティ(CDU)によってコンパイルされ、デフォルトではDCL「テーブル」に追加されますがSYS$LIBRARY:DCLTABLES.EXE、プロセスは独自のテーブルを使用することもできます。その後、ユーザーはコマンドを呼び出すことができます。たとえば、オプション「/BAR」を受け入れ、イメージによって実装されるコマンドFOOを定義するには、次のようなCLDファイルを使用できます。SYS$SYSEXE:FOO.EXE
動詞 FOO を定義する イメージ "SYS$SYSEXE:FOO.EXE" 資格取得バー ユーザーは「」または「」と入力すると、FOO プログラムが呼び出されます。コマンド定義言語は、日付やファイル指定など、多くの種類のオプションをサポートしており、修飾子によって呼び出されるイメージを変更できます。たとえば、「」はファイルを作成し、「 」はディレクトリを作成します。FOOFOO/BARCREATECREATE/DIRECTORY
コマンドを定義するもう1つの(より単純だが柔軟性に劣る)方法は、外部コマンドを使用することです。これは、Unixでプログラムを呼び出す方法に似ています。次のコマンドを実行することで、
foo :== $sys$sysexe:foo.exe コマンド「FOO」は FOO.EXE を呼び出し、追加の引数をプログラムに文字通り渡します。たとえば、。この方法は、Unix やその他の非ネイティブ システムから移植されたプログラム、および argc および argv コマンド構文を使用する C プログラムで一般的に使用されます。foo -v
OpenVMS DCLのバージョン6.2 以降では、Unix スタイルのコマンド パスを確立するための論理名がサポートされています。このメカニズムは、自動外部コマンドとして知られています。 これにより、ディレクトリのリストを指定でき、これらのディレクトリ内で、ユーザーが入力したコマンドと一致するファイル名を持つ DCL コマンド プロシージャ ( command.COM ) と実行可能イメージ ( command.EXE ) が検索されます。従来の外部コマンドと同様に、自動外部コマンドでも Unix スタイルのコマンド入力が可能です。DCL$PATHDCL$PATH
DCLスクリプトは、いくつかの例外を除けば、他のスクリプト言語とよく似ています。スクリプト内のすべてのDCL動詞の前には$記号が付きます。その他の行は、前のコマンドへの入力とみなされます。たとえば、TYPEコマンドを使用して段落を画面に表示するには、次のようなスクリプトを使用します。
$ TYPE SYS $INPUT : これは、DCL言語でTYPE動詞を使用する例です。 $ EXIT DCLでは、変換されたシンボルを介して参照される配列を構築することが可能です。これにより、プログラマはデータ自体をインデックス関数として使用して、任意のサイズのデータ構造を構築できます。
$ i = 1 $変数'i' = "blue" $ i = 2 $変数'i' = "green" $ j = 1 $ color =変数'j' $ rainbow 'color' = "red" $ color =変数'i' $ rainbow 'color' = "yellow"この例では、変数rainbowblueには「red」という値が、rainbowgreenには「yellow」という値が割り当てられています。
以下は、OpenVMSコマンドラインインターフェイスでサポートされている一般的なコンピューティングタスク用の DCLコマンドのリストです。[ 2 ]
字句関数は、文字列関数とVMSが管理するデータへのアクセスを提供します。
語彙の例をいくつか挙げます。
F$EXTRACT(start,length,string)—部分文字列を抽出するF$CVTIME—日付/時刻情報を取得する、例: YEST_DOW=F$EXTRACT(0,3,F$CVTIME(DATE_EXPR,,"WEEKDAY"))F$ELEMENT(0," ",ABC_DEF)—ABC_DEF = "ABC DEF"返されるだろう"ABC"F$SEARCHファイルを検索し、見つからない場合は null ("") を返します。F$LOCATE(needle,haystack)F$SetPRV("BYPASS,CMKRNL,ALTPRI")―これにアクセスできるのは光栄なことです。のPC-DCLとAccelr8 Open DCL Liteの比較。