.p.h INTRODUCTION TO COMMAND PROCEDURES .w (VA147) by Arthur T. McClinton Jr. MITRE Corporation 7525 Colshire Dr McLean, Va 22102 October 1988 .S.p.h WHAT IS A COMMAND PROCEDURE? .X.W.v - A file containing a group of DCL commands and data lines - It may be a series of frequently executed commands - It may be a series of complicated commands - SYSTEM STARTUP/SHUTDOWN - It may be a series of commands to be executed in the batch queue or on another computer. .S.p.h SAMPLE COMMAND PROCEDURE .X.W.V $! LINK AND TEST VUS AND DVS $ $SET DEF [PROD.VUS] $LINK/EXEC=DVS VUS,LOGREQ,VUS1B,ARFVUS,SDRTV,[-.TESTARF]ARFLIB/LI $LINK VUS,LOGREQ,VUS1C,ARFVUS,SDRTV,[-.TESTARF]ARFLIB/LIB $PURGE VUS.*,ARFVUS.*,DVS.* $RUN VUS DCA 80 DCA DCAFT IADSD BWIUA ... .S.p.h COMMAND PROCEDURE FORMAT .X.W.v - DCL Statements - DCL Comments - Using Multiple Lines - Data lines - usually no leading $ - DECK and EOD commands - Blank lines .S.p.h WHY USE COMMAND PROCEDURES? .X.W.v - To simplify the typing of frequently used commands - To correctly execute complicated code - To document the method to execute a series of commands - To simplify commands - To create user commands - As a programming language style .S.p.h WHEN TO USE A COMMAND PROCEDURE .X.W.v - Required on all jobs submitted to the batch queue $FORTRAN WEATHER $LINK WEATHER $RUN WEATHER DCA 01 1246 76 78 .S.p.h WHEN TO USE A COMMAND PROCEDURE .X.W.v - Required on all jobs submitted to the batch queue - When you expect to execute the same commands more than once. ! command file CLGO $IF P1 .EQS. "" THEN INQUIRE P1 "FILE" $FORTRAN P1 $LINK P1 $RUN P1 .S.p.h WHEN TO USE A COMMAND PROCEDURE .X.W.v - Required on all jobs submitted to the batch queue - When you expect to execute the same commands more than once. - If you need to execute at a specified time $SUBMIT/AFTER=12:30 LUNCH .S.p.h WHEN TO USE A COMMAND PROCEDURE .X.W.v - Required on all jobs submitted to the batch queue - When you expect to execute the same commands more than once. - If you need to execute at a specified time - If yo havf a ard tme tyqing .S.p.h HOW TO EXECUTE A COMMAND PROCEDURE .X.W.v - @ is the symbol to execute a command procedure $@CLGO WEATHER .S.p.h HOW TO EXECUTE A COMMAND PROCEDURE .X.W.v - @ is the symbol to execute a command procedure - SUBMIT will submit to the batch queue $SUBMIT/PARAM=("WEATHER") CLGO .S.p.h HOW TO EXECUTE A COMMAND PROCEDURE .X.W.v - @ is the symbol to execute a command procedure - SUBMIT will submit to the batch queue - LOGIN.COM is automatically executed during login SYS$LOGIN:LOGIN.COM EDTINI.EDT .S.p.h HOW TO EXECUTE A COMMAND PROCEDURE .X.W.v - @ is the symbol to execute a command procedure - SUBMIT will submit to the batch queue - LOGIN.COM is automatically executed during login - Reading a deck of cards unsolicited input from card reader is sent to batch queue .S.p.h HOW TO EXECUTE A COMMAND PROCEDURE .X.W.v - @ is the symbol to execute a command procedure - SUBMIT will submit to the batch queue - LOGIN.COM is automatically executed during login - Reading a deck of cards - SPAWN of a subprocess $SPAWN/INPUT=COMMANDS/[NO]WAIT [/OUTPUT=...] .S.p.h EXECUTING A COMMAND PROCEDURE ON REMOTE NODE .X.W.v $! SHOWUSERS.COM $ IF F$MODE() >EQS. "NETWORK" THEN - DEFINE/USER SYS$OUTPUT SYS$NET $ SHOW USERS TYPE ODLVX::"TASK=SHOWUSERS.COM" .S.p.h CONTROL OF INPUT/OUTPUT .X.W.v - SYSTEM assigned logical names SYS$INPUT - program input - defaults to current command source SYS$OUTPUT - program and command output - terminal for interactive - log file for batch SYS$ERROR - originally the same as SYS$OUTPUT SYS$COMMAND - highest level command source .S.p.hCONTROL OF INPUT/OUTPUT .X.W.v - Common problems 1.While in a command file you want input from your terminal. $ASSIGN SYS$ERROR SYS$INPUT 2.Running an interactive job and want output to the printer. $ASSIGN/USER LP: SYS$OUTPUT 3.In a subdirectory and want to submit a command file to the batch queue. remember that the command file will not be run in the same environment 4.Want to suppress output NL: is the null device .S.p.h USING SYMBOLS .W.X.v - used to pass information from one command to another - rules for forming a symbol name - first character letter, _, $ - all letters translated upper - may contain numbers - length 1-255 characters - may be a formed by evaluating a symbol $USER_'P1'=P2 .S.p.h USING SYMBOLS .W.X.v - symbol types - character or integer - type assigned by context - lexical functions to translate F$STRING - integer to string F$INTEGER - string to integer - when is 1 + 2 not equal to 3? .S.p.h USING SYMBOLS When is 1 + 2 not equal to 3? .W.X.v $ONE="1" $TWO:=2 $THREE=ONE+TWO $SHOW SYM THREE THREE = "12" $TWO=2 $THREE=ONE+TWO $SHOW SYM THREE THREE = 3 Hex... .S.p.h SAMPLE USING SYMBOLS .W.X.v $TOP: $ASSIGN/USER ZZTEMP.LIS SYS$OUTPUT $SHOW USERS $OPEN/READ TEMP ZZTEMP.LIS $READ TEMP LINE $LINE=LINE - "VAX/VMS " - " - Total"- $_ + " " + F$TIME() $WRITE SYS$OUTPUT LINE $CLOSE TEMP $DELETE ZZTEMP.LIS.* $WAIT 0:01:00 $GOTO TOP Interactive Users = 1 11-NOV-1982 20:17: .S.p.H.$(0 SYMBOL TABLES .W.X.v lqqqqqqqqqqqqqqqqqqqqqk x GLOBAL SYMBOLS 5 x tqqqqqqqqqqqqqqqqqqqqqu x LEVEL 1 SYMBOLS 4 x tqqqqqqqqqqqqqqqqqqqqqu x LEVEL 2 SYMBOLS 3 x tqqqqqqqqqqqqqqqqqqqqqu x LEVEL 3 SYMBOLS 2 x tqqqqqqqqqqqqqqqqqqqqqu x LEVEL 4 SYMBOLS 1 x