前へ | 次へ | 目次 | 索引 |
EDT エディタを繰り返し起動して,同じファイル・タイプを持つファイルのグループを編集します。このプロシージャは,レキシカル関数を使用して出力からファイル名を取り出す方法を示しています。また,コマンド・プロシージャの中で起動されたプログラムの入力ストリームを再定義する方法も示しています。
$ ! Procedure to edit all files in a directory with a $ ! specified file type. Use P1 to indicate the file type. $ ! $ ON CONTROL_Y THEN GOTO DONE ! Ctrl/Y action (1) $ ON ERROR THEN GOTO DONE $ ! $ ! Check for file type parameter. If one was entered, continue; $ ! otherwise, prompt for a parameter. $ ! $ IF P1 .NES. "" THEN GOTO OKAY (2) $ INQUIRE P1 "Enter file type of files to edit" $ ! $ ! List all files with the specified file type and write the DIRECTORY $ ! output to a file named DIRECT.OUT $ ! $ OKAY: $ DIRECTORY/VERSIONS=1/COLUMNS=1 - (3) /NODATE/NOSIZE - /NOHEADING/NOTRAILING - /OUTPUT=DIRECT.OUT *.'P1' $ IF .NOT. $STATUS THEN GOTO ERROR_SEC (4) $ ! $ OPEN/READ/ERROR=ERROR_SEC DIRFILE DIRECT.OUT (5) $ ! $ ! Loop to read directory file $ ! $ NEWLINE: (6) $ READ/END=DONE DIRFILE NAME $ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND: ! Redefine SYS$INPUT $ EDIT 'NAME' ! Edit the file $ GOTO NEWLINE $ ! $ DONE: (7) $ CLOSE DIRFILE/ERROR=NOTOPEN ! Close the file $ NOTOPEN: $ DELETE DIRECT.OUT;* ! Delete temp file $ EXIT $ ! $ ERROR_SEC: $ WRITE SYS$OUTPUT "Error: ",F$MESSAGE($STATUS) $ DELETE DIRECT.OUT;* $ EXIT |
$ @EDITALL DAT * . . . %DELETE-I-FILDEL, device:[directory]DIRECT.OUT;1 deleted (x blocks) |
EDITALL プロシージャが DAT として指定された P1 によって起動されます。このプロシージャは,省略時のディレクトリにあるファイル・タイプ DAT を持つすべてのファイルのディレクトリ・リストを作成し,エディタを起動してそれぞれのファイルを編集します。ファイル・タイプ DAT を持つ最後のファイルを編集し終わると,一時ファイル DIRECT.OUT を削除して,ターミナルにメッセージを表示します。
C.7 MAILEDIT.COM コマンド・プロシージャ
このコマンド・プロシージャは, MAIL ユーティリティでテキスト・エディタを起動しています。
$ ! Command procedure to invoke an editor for Mail. $ ! $ ! Inputs: $ ! $ ! P1 = Input file name. $ ! P2 = Output file name. $ ! $ ! If MAIL$EDIT is undefined, Mail will invoke the user's selected $ ! callable editor set by the mail SET EDITOR command. $ ! $ ! If MAIL$EDIT is defined to be a command procedure, Mail will create $ ! a subprocess to edit the mail, but any SET EDITOR command in Mail $ ! will override the definition of MAIL$EDIT for the remainder of that $ ! Mail session. $ ! $ ! Note that this procedure is run in the context of a subprocess. $ ! LOGIN.COM is not executed. However, all process logical names $ ! and DCL global symbols are copied. In particular, note that the $ ! user's individual definition of the symbol EDIT is used if there $ ! is one. Otherwise, the system default editor is used. $ ! $ ! The default directory is the same as the parent process $ ! $ DEFINE /USER SYS$INPUT 'F$TRNLNM("SYS$OUTPUT")' (1) $ IF P1 .EQS. "" THEN GOTO NOINPUT (2) $ EDIT /OUTPUT='P2' 'P1' (3) $ EXIT $NOINPUT: $ EDIT 'P2' (4) $ EXIT |
MAILEDIT.COM コマンド・プロシージャの実行結果例
$DEFINE MAIL$EDIT MAILEDIT.COM $MAIL MAIL> SHOW EDITOR Your editor is defined by the file MAILEDIT.COM. |
FORTRAN プログラムの作成,コンパイル,実行を行う会話型ユーザの,ターミナル環境を制御するシステム定義のログイン・コマンド・プロシージャのサンプルを示します。 FORTUSER.COM が,ログイン・コマンド・プロシージャとしてリストされる専用アカウントにログインした場合は, FORTUSER.COM が受け入れるコマンドしか実行できません。このプロシージャは,レキシカル関数を使用してオプション・テーブルを参照し,ユーザが入力したコマンドと有効なコマンドのリストとを比較する方法も示しています。
$ ! Procedure to create, compile, link, execute, and debug $ ! FORTRAN programs. Users can enter only the commands listed $ ! in the symbol OPTION_TABLE. $ SET NOCONTROL=Y (1) $ SAVE_VERIFY_IMAGE = F$ENVIRONMENT("VERIFY_IMAGE") $ SAVE_VERIFY_PROCEDURE = F$VERIFY(0) $ OPTION_TABLE = "EDIT/COMPILE/LINK/RUN/EXECUTE/DEBUG/PRINT/HELP/FILE/DONE/" (2) $ TYPE SYS$INPUT (3) VMS FORTRAN Command Interpreter Enter name of file with which you would like to work. $ ! $ ! Set up for initial prompt $ ! $ PROMPT = "INIT" (4) $ GOTO HELP ! Print the initial help message $ ! $ ! after the first prompting message, use the prompt: Command $ ! $ INIT: $ PROMPT = "GET_COMMAND" $ GOTO FILE ! Get initial file name $ ! $ ! Main command parsing routine. The routine compares the current $ ! command against the options in the option table. When it finds $ ! a match, it branches to the appropriate label. $ ! $ GET_COMMAND: $ ON CONTROL_Y THEN GOTO GET_COMMAND ! Ctrl/Y resets prompt (5) $ SET CONTROL=Y $ ON WARNING THEN GOTO GET_COMMAND ! If any, reset prompt $ INQUIRE COMMAND "Command" $ IF COMMAND .EQS. "" THEN GOTO GET_COMMAND $ IF F$LOCATE(COMMAND + "/", OPTION_TABLE) .EQ. F$LENGTH(OPTION_TABLE) - (6) THEN GOTO INVALID_COMMAND $ GOTO 'COMMAND' $ ! $ INVALID_COMMAND: (7) $ WRITE SYS$OUTPUT " Invalid command" $ ! $ HELP: (8) $ TYPE SYS$INPUT The commands you can enter are: FILE Name of FORTRAN program in your current default directory. Subsequent commands process this file. EDIT Edit the program. COMPILE Compile the program with FORTRAN. LINK Link the program to produce an executable image. RUN Run the program's executable image. EXECUTE Same function as COMPILE, LINK, and RUN. DEBUG Run the program under control of the debugger. PRINT Queue the most recent listing file for printing. DONE Return to interactive command level. HELP Print this help message. Enter Ctrl/Y to restart this session $ GOTO 'PROMPT' (9) $ EDIT: (10) $ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND: $ EDIT 'FILE_NAME'.FOR $ GOTO GET_COMMAND $ COMPILE: $ FORTRAN 'FILE_NAME'/LIST/OBJECT/DEBUG $ GOTO GET_COMMAND $ LINK: $ LINK 'FILE_NAME'/DEBUG $ PURGE 'FILE_NAME'.*/KEEP=2 $ GOTO GET_COMMAND $ RUN: $ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND: $ RUN/NODEBUG 'FILE_NAME' $ GOTO GET_COMMAND $ DEBUG: $ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND: $ RUN 'FILE_NAME' $ GOTO GET_COMMAND $ EXECUTE: $ FORTRAN 'FILE_NAME'/LIST/OBJECT $ LINK/DEBUG 'FILE_NAME' $ PURGE 'FILE_NAME'.*/KEEP=2 $ RUN/NODEBUG 'FILE_NAME' $ GOTO GET_COMMAND $ PRINT: $ PRINT 'FILE_NAME' $ GOTO GET_COMMAND $ BADFILE: (11) $ WRITE SYS$OUTPUT "File must be in current default directory." $ FILE: $ INQUIRE FILE_NAME "File name" $ IF FILE_NAME .EQS. "" THEN GOTO FILE $ IF F$PARSE(FILE_NAME,,,"DIRECTORY") .NES. F$DIRECTORY() - (12) THEN GOTO BADFILE $ FILE_NAME = F$PARSE(FILE_NAME,,,"NAME") $ GOTO GET_COMMAND $ DONE: $ EXIT |
FORTUSER.COM コマンド・プロシージャの実行結果例
この例は,このコマンド・プロシージャを専用コマンド・プロシージャとして使用する方法を示しています。
Username: CLASS30 Password: OpenVMS Version 7.1 OpenVMS FORTRAN Command Interpreter Enter name of file with which you would like to work. The commands you can enter are: FILE Name of FORTRAN program in your current default directory. Subsequent commands process this file. EDIT Edit the program. COMPILE Compile the program with VAX FORTRAN. LINK Link the program to produce an executable image. RUN Run the program's executable image. EXECUTE Same function as COMPILE, LINK and RUN. DEBUG Run the program under control of the debugger. PRINT Queue the most recent listing file for printing. DONE Return to interactive command level. HELP Print this help message. Enter Ctrl/Y to restart this session File name: AVERAGE Command: COMPILE Command: LINK Command: RUN Command: FILE File name: READFILE Command: EDIT |
このサンプル実行は,CLASS30 というユーザが FORTUSERコマンド・プロシージャによって制御されるアカウントにログインするときのセッションを示しています。 FORTUSER コマンド・プロシージャは,ユーザが実行できるコマンドと,セッションを再開するための命令を表示します。次に,ユーザが AVERAGE ファイルを指定して,それをコンパイル,リンク,実行します。この後,ユーザは FILE コマンドを入力して,別のファイルで作業を開始します。
前へ | 次へ | 目次 | 索引 |