OpenVMS
ユーザーズ・マニュアル


前へ 次へ 目次 索引


B.12 COMPILE_FILE.COM コマンド・プロシージャ

PASCAL または FORTRAN で書かれたファイルのコンパイル,リンク,実行を行います。処理するファイルを求めるプロンプトを出し,ファイル・タイプが PAS か FOR かを判別します。ファイル・タイプが PAS でも FOR でもない場合,またはファイルが現在の省略時のディレクトリに存在しない場合には,該当するエラー・メッセージを出力します。このプロシージャは,IF-THEN-ELSE 言語構成の使用方法を示しています。

例: COMPILE_FILE.COM


 
 
$! This command procedure compiles, links, and runs a file written in Pascal 
$! or FORTRAN. 
$! 
$ ON CONTROL_Y THEN EXIT 
$! 
$ TOP: 
$   INQUIRE FILE "File to process" 
$   IF F$SEARCH(FILE).NES. ""                             (1)
$ THEN 
$   FILE_TYPE = F$PARSE(FILE,,,"TYPE")(2)             ! determine file type 
$   FILE_TYPE = F$EXTRACT(1,F$LENGTH('FILE_TYPE'),FILE_TYPE)! remove period 
$! Remove type from file specification 
$   PERIOD_LOC = F$LOCATE(".",FILE)
$   FILE = F$EXTRACT(0,PERIOD_LOC,FILE)
$   ON WARNING THEN GOTO OTHER 
$   GOTO 'FILE_TYPE' 
$ ELSE                                                     (3)
$   WRITE SYS$OUTPUT FILE, "does not exist" 
$ ENDIF                                                    (4)
$! 
$ GOTO END 
$! 
$! 
$! 
$ FOR:                                                      (5)
$ ON ERROR THEN GOTO PRINT 
$ FORTRAN/LIST 'FILE' 
$ GOTO LINK 
 
$! 
$ PAS: 
$   ON ERROR THEN GOTO PRINT 
$   PASCAL/LIST 'FILE' 
$   GOTO LINK 
$! 
$ OTHER: 
$   WRITE SYS$OUTPUT "Can't handle files of type .''FILE_TYPE'" 
$   GOTO END 
$! 
$ LINK:                                                    (6)
$   ON ERROR THEN GOTO END 
$   WRITE SYS$OUTPUT "Successful compilation ...." 
$   LINK 'FILE' 
$   DEFINE/USER_MODE SYS$INPUT SYS$COMMAND 
$   RUN 'FILE' 
$   GOTO CLEANUP 
$! 
$ PRINT:                                                   (7)
$   WRITE SYS$OUTPUT "Unsuccessful compilation, printing listing file ...." 
$   PRINT 'FILE' 
$! 
$ CLEANUP: 
$   DELETE 'FILE'.OBJ; 
$   DELETE 'FILE'.LIS; 
$! 
$ END: 
$   INQUIRE/NOPUNCTUATION ANS "Process another file(Y or N)?  " 
$   IF ANS THEN GOTO TOP 
$ EXIT 

COMPILE_FILE.COM コマンド・プロシージャの説明

  1. IF コマンドは,F$SEARCH レキシカル関数を使用して,ディレクトリを検索し,ファイルが存在するかどうかを判別する。

  2. THEN コマンドの後のコマンド・ブロックは,次のことを行う。

  3. "File to process:" プロンプトに対してユーザが入力したファイルがディレクトリの中にない場合には,ELSE コマンドの後のコマンドを実行する。

  4. ENDIF コマンドは,IF-THEN-ELSE コマンド言語構成を終了する。

  5. FORTRAN プログラムをコンパイルして,LINK ラベルに分岐する。コンパイル中にエラーが生じると,PRINT ラベルに分岐する。

  6. プログラムが正しくコンパイルされたことを表示して,プログラムをリンクしてから実行し,CLEANUP ラベルに分岐する。エラーが生じると,プログラムは END ラベルに分岐する。

  7. プログラムのリスト・ファイルを省略時の印刷キューに登録する。

例: COMPLILE_FILE.COM コマンド・プロシージャの実行結果例


$ @COMPILE_FILE
File to process: RAND.PAS
Successful compilation
%DELETE-I-FILDEL,WORK:[DESCH]RAND.OBJ;1 deleted(3 blocks)
%DELETE-I-FILDEL,WORK:[DESCH]RAND.LIS;1 deleted(9 blocks)
Process another file(Y or N)? N [Return]


用語集


1 次パスワード(primary passward): ユーザ・パスワードのうち,ユーザが入力する最初のユーザ・パスワード。システムによっては,2 次パスワードも必要な場合がある。1 次パスワードは,そのパスワードとともに指定するユーザ名に対応づけたパスワードでなければならない。

2 次パスワード(secondary password): 1 次パスワードを正しく入力した直後に入力するログイン時のユーザ・パスワード。ただし,2 次パスワードは必要ない場合もある。1 次パスワードと 2 次パスワードを使用することによって,ログイン時に複数のユーザがいることを各ユーザに認識させることができる。あまり一般的な方法ではないが,パスワード長を長くする目的で 2 次パスワードを使用することもできる。この場合,2 つのパスワードの合計文字数が多くなるので,パスワードの推測には多くの時間がかかり,難しい。

ASCII(American Standard Code for Information Interchange): 情報交換用米国標準コードを参照。

CPU(central processing unit): 中央処理装置を参照。

DCL(DIGITAL Command Language): DIGITAL コマンド言語を参照。

DECnet-Plus: Digital Network Architecture(DNA)フェーズ V を実現したコンパックのハードウェア/ソフトウェア製品のファミリであり,OSI および DNAプロトコルを統合する。OSI に準拠しており,DECnet フェーズ IV および TCP/IP と互換性がある。

DIGITAL コマンド言語(DIGITAL Command Language(DCL)): OpenVMS システムでのコマンド・インタプリタ。ユーザとオペレーティング・システム間の通信を可能とする。

Extended File Specifications: OpenVMS にこれまで内在していたディレクトリやファイル命名に関する多くの制限を取り除くオプションの機能。深い階層のディレクトリや拡張したファイル名を使用できる。

MIME(Multipurpose Internet Mail Extension): メール・メッセージに非テキスト・ファイルを添付する標準的な方法。グラフィック,サウンド・ファイル,等をエンコードし, プレーン・テキストとして送信する。このテキストは読むことができない。受信側は,MIME インタープリタ・ユーティリティを使用して元のファイル形式に戻すことができる。

RMS(Record Management Services): ファイルおよびフィールド内のレコードを処理するために呼び出すオペレーティング・システムのプロシージャの集合。VMS RMS によりプログラムは,ブロックの読み込みおよび書き込み(ブロック入出力)同様,レコード・レベルの GET および PUT 要求(レコード入出力)を実行できる。VMS RMS はシステム・ソフトウェアの完全な部分であり,そのプロシージャはエグゼクティブ・モードで実行される。

UAF(user authorization file): システム上の各アカウントの詳細を保持したファイル。各アカウントに割り当てられたユーザ名,パスワード,ユーザ識別コード(UIC),クォータ,制限,特権を含む。

UFD(user file directory): ディスクまたはテープに格納されたファイル群を一時的に登録するファイル。UFD には,格納された各ファイルの名前,タイプ,バージョン番号が保持される。また,ファイルの実際の記憶位置を識別し,そのファイル属性リストを指す一意な番号も入る。ディレクトリも参照のこと。

UIC(user identification code): ユーザ,ファイル,グローバル・セクション,コマンド・イベント,フラグ・クラスタ,メールボックスに割り当てた番号の組み合わせ。UIC は,owner,group,world,system の各ユーザ・カテゴリが使用できるアクセス・タイプ(read,write,read/write,またファイルの場合は execute,delete,その両方)を指定する。

アカウント(account): ユーザがシステムを使用するには,アカウントを保持していなければならない。アカウントは,ユーザのユーザ名によって識別される。アカウントが異なれば,異なるサービス・レベル(たとえば,ユーザが保持する特権,ログインできる期間など)を許可できる。

アクセス制御エントリ(access control entry(ACE)): アクセス制御リストの中のエントリ。アクセス制御エントリは,識別子,識別子の保持者に対するアクセス権の許可または禁止,ディレクトリに対する省略時の保護,機密保護アラームの詳細を指定できる。

アクセス制御リスト(access control list(ACL)): ユーザまたはグループが保護されたシステム・オブジェクトに対して持つアクセス権を定義したエントリの集合。

アクセス制御文字列(access control string): リモート・ノードに送信するログイン情報を表す 0 文字から 42 文字までの文字列。OpenVMS システムの場合,アクセス制御文字列は通常,ユーザ名,スペースまたはタブ,そしてパスワードから構成される。

安全ターミナル・サーバ(secure terminal server): すでにログアウトされているターミナルだけにユーザがログインするように設計されている OpenVMS ソフトウェア。ユーザがターミナルで Break キーを押すと,安全ターミナル・サーバは(使用可能にされている場合),ログインされているプロセスをすべて切断してから,ログインを開始することによって応答する。ターミナルでプロセスがログインされていない場合は,ただちにログインできる。

イメージ(image): リンカによって結合された実行プログラムを構成するプロシージャとデータ。この実行可能なプログラムはプロセスで実行される。実行可能イメージ,共有イメージ,システム・イメージの 3 つのタイプがある。

印刷キュー(print queue): 印刷されるのを待機しているファイルのリスト。

エディタ(editor): テキスト・ファイルの作成および修正のために使用するプログラム。

エラー・メッセージ(error message): ユーザが要求した処理が失敗した場合にシステムが送信するメッセージ。各エラー・メッセージはエラーを検出したオペレーティング・システムの部分を特定する。ほとんどのエラー・メッセージは入力ミスまたは構文エラーが原因である。ほとんどの場合,コマンドの再入力によりエラーの訂正ができる。

演算子(operator): 式の中でコンピュータにオペランドの処理方法を指定する部分。たとえば,プラス記号(+)は加算を実行することを指定する演算子である。

オブジェクト: システムがアクセスを制御する情報の受動的な格納場所。オブジェクトへのアクセスは,そのオブジェクトに格納されている情報へのアクセスを意味する。

オープン・アカウント(open account): パスワードが不要であるアカウント。

オペランド(operand): 式の中で値を持つ部分。オペランドは,式の評価の中で演算子によって処理され,結果が生成される。

オペレーティング・システム(operating system): コンピュータ・プログラムの実行およびシステム関数の実行を制御する統合されたプログラムの集合。

カーソル(cursor): モニタ画面上で使用され,画面上の位置を示す表示子。

開始位置修飾子(start position qualifier): EVE において,指定したバッファを開いたときに,最初にカーソルが表示される行および桁の位置を決定するための修飾子。

解析(parsing): 次のいずれかです。

  1. コマンド文字列を要素に分割し解釈すること。

  2. OpenVMS RMS(レコード管理サービス)同様に,ファイル指定を解釈すること。


階層ディレクトリ構造(hierarchical directory structure): 1 つのディレクトリの下に複数のディレクトリが並び,それが何段にも並んだツリー構造のディレクトリ構造。

会話型モード(interactive mode): ユーザがコマンドを入力するとシステムがそれを実行し反応する,オペレーティング・システムとの通信モード。1 つのコマンドを完了しないと次のコマンドを入力できない。

書き込み(write): イメージがデータを送信することまたはその機能。たとえば,PRINT コマンドを実行すると,指定したファイルが格納されている記憶域から読み込まれ,プリンタに書き込まれる。読み込みも参照のこと。

空値(null value): コマンド・プロシージャの中で二重引用符("")で表示される文字を持たない文字列。

完全な名前(full name): DECdns ネームスペース内の名前の完全な指定であり,ルート・ディレクトリから,名前を指定しているオブジェクト,ディレクトリ,またはソフト・リンクまで,パス内のすべての親ディレクトリを含んでいる。ネームスペース名も含むことができるが,ネットワーク内にネームスペースが1つだけしか存在しない場合は不要である。

キー(key): 次のいずれかです。

  1. 索引編成ファイルで,1 つの索引編成ファイルの各データ・レコードの文字列,パック 10 進数,2 バイトまたは 4 バイトの符号なしバイナリ数,2 バイトまたは 4 バイトの符号付き整数。ユーザがレコード内での長さと位置を定義し,OpenVMS RMS(レコード管理サービス)はキーを使用して索引を構成する。

  2. 相対ファイルで,データ・ファイル内の各データ・レコードの相対レコード番号。OpenVMS RMS(レコード管理サービス)は相対レコード番号を使用して,ランダム・アクセス・モードで相対ファイル内のデータ・レコードの識別とアクセスを行う。

  3. Sort/Merge ユーティリティで,レコードのソートに必要な情報を含むレコード内のデータ・フィールド。


キーパッド(keypad): ターミナルのメイン・キーボードの隣にある小さなキー・セット。

キーボード(keyboard): タイプライタに類似した操作を行うことができる入力デバイス。

キーワード(keyword): 通常コマンド文字列またはステートメントなど特定の構文形式で使用される予約語。

キュー(queue): 次のいずれかです。

  1. 処理されるジョブの列。たとえば,バッチ・ジョブ・キューあるいはプリンタ・ジョブ・キュー。処理は基本的に FIFO(ファースト・イン/ファースト・アウト)であるが,ジョブの実行を要求したプロセスの優先順位を反映する。プリント・キューも参照。

  2. リストまたは表の中にエントリを作成すること。INSQUE 命令を使用して行うことが多い。


区切り記号(delimiter): 文字列,ステートメント,プログラムの要素の区切り,終了,まとめのために使用する文字。

クローズ(close): ファイルに対するすべての操作を終了すること。

グローバル・シンボル(global symbol): 次のいずれかです。

  1. プログラム内のモジュールで定義され,他のモジュールによる参照が可能なシンボル。リンカがグローバル・シンボルの定義と参照の一致を確認する。ローカル・シンボルも参照。

  2. すべてのコマンド・レベルでアクセス可能なコマンド言語シンボル。


係留アカウント(captive account): ユーザの処理を制限する OpenVMS アカウント。通常,ユーザが使用できるコマンド・プロシージャとコマンドは特定のものだけに制限される。たとえば,このアカウントのユーザは,Ctrl/Y キー・シーケンスを使用できない。このアカウントはターンキーや結合アカウントと同義である。

結合(concatenate): ファイルを一続きにリンクすること。

高性能 Sort/Merge ユーティリティ(high-performance Sort/Merge utility): OpenVMS Alpha システムで使用可能な Sort/Merge ユーティリティのバージョン。

構文(syntax): スペル・チェック,修飾子およびパラメータの順序を含むコマンドの特別な書式。スペルミスの語が最も一般的な構文エラーである。

コマンド(command): DCL(DIGITAL コマンド言語)で,通常英語表記による命令のこと。ユーザがターミナルから入力する。または,コマンド・プロシージャに書き込まれている。コマンドはソフトウェアにターミナルの監視あるいはコマンド・プロシージャの読み込みを要求し,いくつかの明確なアクティビティを実行する。たとえば COPY コマンドを入力した場合,1 つのファイルの内容を別のファイルにコピーするようにシステムに要求する。

コマンド・イメージ(command image): DCL コマンドと結合し DCL コマンドで起動されるプログラム。

コマンド・インタプリタ(command interpreter): プロセスのコンテキストでスーパバイザ・モードで実行されるプロシージャ・ベースのシステム・コード。ターミナルからのユーザ入力またはコマンド・ファイルで発行されたコマンドを受け取り,構文をチェックして解析する。

コマンド・パラメータ(command parameter): ファイル指定,オプション,定数などの,スペースで区切られたオペランド。コマンドの中で,オペランドを指定する位置が異なれば,そのオペランドの意味も変わる。

コマンド・プロシージャ(command procedure): ターミナルでユーザが個々のコマンドを入力するのではなく,コマンド・インタプリタが受け付けるコマンドとデータを含むファイル。したがって,コマンド・プロシージャは自動的にコマンドをオペレーティング・システムに渡す方法を提供する。さらに,ユーザはループ,カウンタ,ラベル,シンボル代入などのプログラミング手法を使用して,ユーザの会話型処理に代わる複雑なコマンド・シーケンスを設定できる。また,コマンド・プロシージャはバッチ・ジョブとしてシステムに処理される。


前へ 次へ 目次 索引