Bob Jones

revised by J.D. Wear, June 1994

1.  Introduction

This document is intended as an overview for beginners interested in using VMS-based computers in the OSU Physics Department. These computers are collectively known by the name OHSTPY. This document is not a complete guide to the use of OHSTPY; instructions for accessing more information are given in later sections.

2.  Interaction with OHSTPY

The user interacts with the operating system by entering commands at a terminal, or from a workstation window. The system usually responds by sending text back to the terminal/window. Generally, commands are not case sensitive (upper case: ABC...Z, lower case: abcd...z) and may be abbreviated. An example of a DCL command and its response is:

$ DIR
Directory DEV$USER:[USERNAME]
  
LOGIN.COM;1         EDTINI.EDT;1

Total of 2 files.

For clarity in this document, we will underline commands entered by the user. Also for clarity, the examples will be indented. Commands are not executed until the carriage return <CR >, which is not shown, is pressed. The dollar sign $ is the DCL prompt and is not typed by the user. The cursor is a unique postion on the screen and is usually indicated by a special blinking character. When a character is typed, it is entered at the cursor postion. The cursor character will not be shown here.

2.1  Getting Started

To log in to OHSTPY, you must have an account. Obtain an account in person from a system manager in Smith 2180. You must complete a simple form and have it signed by a faculty member or shop supervisor. If you are a member of a research group, be sure to indicate this so you may share the group's files.

2.2  Logging In from an Ordinary Terminal

One way to access OHSTPY is via a video terminal connected to a ``terminal server''. There are video terminals in Rooms 4035, 2097, and 1021 which are connected this way. Here's how to connect to OHSTPY from such a terminal:

2.3  Logging In from a Workstation

There are only two VMS-based workstations in Smith Lab. There are many Unix-based workstations in the public areas listed above. The login procedure for either type of workstation is simple: There are two prompts displayed on the idle workstation; one for a username, and one for a password. Complete the information for both and you're logged in. After your X session starts, you'll want to start something called an xterm or a DECterm if such has not been created for you; these applications are terminal emulators, and allow command line access to the system. Use the Applications pull-down menu from the Session Manager to start a xterm or DECterm, as well as other X applications.

2.4  Logging In from Another System

OHSTPY is accessible from other systems on the internet. The most common method of logging in from another system is via telnet. On any system that allows command line access, the command for making a telnet connection to OHSTPY is the same:

telnet ohstpy.mps.ohio-state.edu

This form of the telnet command will almost always work. In some cases, the entire internet name is not required. For example, from a system in the Physics Department, this command is sufficient:

telnet ohstpy

On Microsoft Windows or Mac OS based systems, a windowed application like WinQVT/Net doesn't require a telnet command line, but rather that you pick the telnet object and supply a host name (i.e., internet name) to connect. Again, that name for our system is ohstpy.mps.ohio-state.edu

2.5  Logging In over the Phone

You might be able to log in to OHSTPY over the phone lines if you have a PC (or a terminal) and a modem. Please see the computer staff in Smith 2180 for information and software which will allow you to access the OSU main campus network from home.

2.6  Setting Your Password

The first time you log in to the system, your password must be set. To maintain security, your password should be modified periodically. This may be done at any time by entering the following command and responding:

$ SET PASSWORD
Old password:
New password:
Verification:

The system prompts you for the old password, new password, and your new password again as verification; all of which must be entered before the password is modified. The passwords are not shown on the terminal screen.

The number of characters in the password must be greater than 5. Generally, a password of 6 to 10 characters in length is sufficient. You may use the 26 letters and the 10 digits. OHSTPY uses password history and a password dictionary to enforce good password selection. One technique for choosing a safe and acceptable password is the use of compound words of your own creation.

2.7  Logging Off OHSTPY

When you are done with your interactive session, log out of the system with the logout command:

$ logout
JOEUSER logged out at 12-DEC-1989 14:32:12.43

This is sufficient to end anything but an X session from a workstation. To end an X session, go to the Session Manager and select Quit from the Session pull-down menu. By default, the X Session Manager will display a confirmation window which you must respond to before your session is ended.

3.  Digital Command Language (DCL)

VMS commands form a language called DCL. This section uses examples to illustrate DCL commands and is not intended to be complete.

We use DCL commands to interact with the system or other users. The commands provide a computer language environment; there are conditionals, assignment statements, etc., typical of other high level computer languages.

3.1  DCL Format

There are several formats for entering DCL commands. Typically, a DCL command consists of three parts. They are the VERB, the QUALIFIER, and the PARAMETER. The DCL format is:

$ VERB [/QUALIFIER...] [PARAMETER[/QUALIFIER...]]...

where the square brackets indicate optional entries and the dots indicate additional entries. The VERB is the DCL command. The QUALIFIERs and PARAMETERs allow one to enter more specific information at the DCL level. QUALIFIERs are preceded by slashes.

Typical examples of DCL commands of this type are:

$ directory/size/date login.com
$ dir/siz /dat login.com
$ dir/size
$ help
$ show users
$ purge/nolog *.*
$ print/queue=smith4035 file.dat

where the responses from the system are supressed. The first two examples give identical results and illustrate how we may abbreviate commands. The *.* is a wildcard file specification. Notice that QUALIFIERs may be assigned values - as in the last example.

Some PARAMETERs or QUALIFIERs are required and if they are not entered initially, you may be prompted, for example:

$ print/que=smith2097
_File: login.com

Other types of commands may be more interactive, for example, the MAIL utility enters into a subcommand mode. A simple session may look like:

$ mail
MAIL > send
To: bill
Subj: homework
Enter your message below. Press CTRL/Z when complete or CTRL/C to quit:
Please help me on problem 3 of our E+M homework!
Joeuser ^Z
MAIL > exit

At the DCL level, we invoke the MAIL utility which has its own prompt. The first MAIL command is send which enters into a prompting mode inquiring information about the message we want to send. After typing Joeuser, we press CTRL/Z, (hold the key marked Ctrl down and press the Z key), thus sending the message to bill and subsequently returning to the MAIL prompt. Entering exit at the MAIL prompt exits MAIL and returns to the DCL level.

3.2  Online HELP

You can obtain online help for any standard DCL command. Online help is perhaps the most useful utility when learning DCL. Its use is strongly encouraged.

As an example, we can get help on using the DCL PURGE command by typing HELP PURGE. (To see a list of most DCL commands, just type HELP.) Here's what you'll see:

$ HELP PURGE

PURGE

    Deletes all but  the  highest-numbered  versions  of  the
    specified files.


    Format:
  
  
      PURGE  [file-spec[,...]]
  
  
  Additional information available:
  
  PARAMETER  QUALIFIERS
  /BACKUP    /BEFORE    /BY_OWNER  /CONFIRM   /CREATED
  /ERASE     /EXCLUDE   /EXPIRED   /KEEP      /LOG
  /MODIFIED  /SINCE
  EXAMPLES
   
PURGE Subtopic?

At this point, you can get additional information by responding to the PURGE Subtopic prompt. If you hit return at this prompt, you'll go up a level in the HELP ``tree''. If you type CTRL-Z, you'll exit HELP.

There is also a local help tree which describes programs and environments specific to OHSTPY. This local help is accessible via the command TELL. TELL works in an identical fashion to HELP. TELL is extensive; the management trys to keep a TELL entry for every modification to user software and environments.

3.3  DCL Shortcuts

There are several ways that may help us save time entering commands.

Commands may be abbreviated as long as the abbreviation is not ambiguous. For example, when we compile a program:

$ fortran prog
$ fortra prog
$ fortr prog
$ fort prog
$ for prog
$ fo prog
%DCL-W-ABVERB, ambiguous command verb - supply more characters
\ FO \

It is generally not a good idea to abbreviate DCL commands to less than 3 or 4 letters. Experiment to see what you can get away with. Note that in this example, we may not abbreviate the PARAMETER prog.

Pressing the ``up arrow'' key repeatedly at the DCL level recalls up to 20 previously entered DCL commands. We may simply re-enter any of these by pressing <CR > when it is visible. It is also possible to edit the command before re-entering it. When the command is visible, use the ``left arrow'' and ``right arrow'' keys to position the cursor. You may also use control characters to help edit the command, some of which are:

CTRL/A Toggles between insert and overstrike mode.
CTRL/H Moves the cursor to the begining of the line.
CTRL/E Moves the cursor to the end of the line.
CTRL/U Deletes the characters to the left of the cursor.
CTRL/B Same as the up arrow.
CTRL/F Same as the right arrow.
CTRL/D Same as the left arrow.
CTRL/Y Interrupt.
CTRL/C Interrupt.
To use the control character CTRL/A, for example, press the control key CTRL and (while it is depressed) press the A key. These control characters are not case sensitive, CTRL/A is the same as CTRL/a. Editing the command line is very practical and easy to learn.

There is a way to view the (at most) 20 previously entered DCL commands with a non-recallable DCL command. Namely:

$ recall/all
1 run prog
2 link prog
3 fortran prog
4 eve prog.for
5 purge
$ recall 4
eve prog.for

If we press <CR > at the last line, it will execute that command.

There may be a few commands we use a lot. If we wish, we may assign a command to a DCL ``symbol'' and use the symbol in place of the command. The usefulness lies in that the symbol may be easy to remember and much shorter than the actual command. For example,

$ ds*d :== directory/size/date
$ show symbol dsd
$ DS*D == "DIRECTORY/SIZE/DATE"
$ dsd
Directory DEV$USER:[JOEUSER]
  
LOGIN.COM;1              10  11-NOV-1989 04:04:16.48
EDTINI.EDT;2              6  11-NOV-1989 10:04:04.50
TEST.FOR;1                2  29-DEC-1989 15:57:07.75
TEST.FOR;2                2  31-DEC-1989 15:34:07.55
TEST.OBJ;1                2  31-DEC-1989 17:57:06.13
TEST.EXE;1                5  31-DEC-1989 17:57:07.12
  
Total of 7 files, 27 blocks.

Here, DSD is the convenient symbol that represents the much longer DCL command DIRECTORY/SIZE/DATE. The star indicates where we may start to abbreviate. Another example is:

$ pho*ne :== phone/noscroll
$ show symbol phon
PHO*NE == ``PHONE/NOSCROLL''

Use HELP to learn more about the SYMBOL definitions under ``:='' and ``=''.

4.  FILES

This section contains a simplified description of file handling under VMS.

4.1  File Specification Syntax

Programs, data, source code, etc., reside in discrete units called files. Files are stored on disks. A disk has a directory structure so that files may be managed more easily.

Each file has a name or file specification. The full file specification of a file contains the disk, directory, file-name, extension, and version number. The syntax is shown by example,

$ purge
%PURGE-I-FILEPURG, DEV$USER:[JOEUSER.SOURCE]PROGRAM.FOR;4 deleted (9 blocks)
%PURGE-I-FILEPURG, DEV$USER:[JOEUSER.SOURCE]PROGRAM.FOR;3 deleted (8 blocks)
%PURGE-I-FILEPURG, DEV$USER:[JOEUSER.SOURCE]PROGRAM.FOR;2 deleted (4 blocks)
%PURGE-I-FILEPURG, DEV$USER:[JOEUSER.SOURCE]PROGRAM.FOR;1 deleted (3 blocks)
%PURGE-I-TOTAL, 4 files deleted (24 blocks)
$ dir/size
Directory DEV$USER:[JOEUSER.SOURCE]

PROGRAM.FOR;5               12

Total of 1 files, 12 blocks.

(Recall that the DCL command PURGE deletes all files except the most recent versions.) A block is a unit of storage on the disk. By default 1 block is 512 bytes where one byte is one character. A diagram illustrates the main features of the file specification.

                                                  extension
                                                  |
                 DEV$USER:[JOEUSER.SOURCE]PROGRAM.FOR;4
                 |         |              |           |
                 disk      directory      file-name   version-number

This syntax is unique to VMS. Those familiar with UNIX might use the filename /u2/joeuser/source/program.for for analogy.

In the above example, DEV$USER is a device name that refers to the user disk. Most of the files that you own and want to maintain should be kept on this disk. Files on DEV$USER are permanent and are backed up weekly. This is the disk volume that is used when you first log in. Temporary space is available on DEV$SCRATCH. You must be more careful with files on DEV$SCRATCH because these files are not backed up as they are on DEV$USER; they are also subject to periodic deletion by the operator. Therefore, please don't store files on DEV$SCRATCH for more than 5 days. Use the commmand TELL SCRATCH for more information.

Each user is allocated a finite amount of memory on the user disk, called the disk quota. Try running this program:

$ run diskuse
User [000045,000018] has 9509 blocks used, 491 available,
of 10000 authorized and permitted overdraft of 40000 blocks on DSA10:

Here the limit is 10000 blocks (about 5.12 Megabytes). The quota is calculated using only the files on DEV$USER. Note that a synonym of of sorts for DEV$USER is DSA10:. DEV$USER is a ``logical name'' - a VMS concept. Try

$ show logical dev$user
``DEV$USER'' = ``DSA10:[USER.]'' (LNM$SYSTEM_TABLE)

In our example, the default directory is [JOEUSER.SOURCE]. The period seperates the main directory JOEUSER from the subdirectory SOURCE. To see what the current default directory is, use the utility sd as follows,

$ sd
DEV$USER:[JOEUSER.SOURCE]

Try also:

$ sd ?

and

$ help show default

to obtain help.

In our example, the file-name is PROGRAM and the extension is FOR. The combination PROGRAM.FOR is usually a sufficient abbreviation for most purposes. This abbreviation refers to the most recent version of the file in the default directory. The file-name should give some information about why it is being used. The file-name PROGRAM may indicate that the file is a program, for example.

The extension is usually characteristic of the type of file. A FOR file, for example, should be a FORTRAN source file. A short list of typical extensions and the corresponding file types follows.

EXTENSION TYPE OF FILE
COM Command file.
DAT Data file.
DIR Directory file.
DIS Mail distribution file.
EXE Executable file.
FOR FORTRAN source file.
LIS List file.
OBJ Object file.
OLB Library file.
TEX LaTeX or TeX file.
TXT Text file.
The extension does not determine the type of file (an executable file may be called PROGRAM.TXT); however, it is a good idea to stick with standard extensions.

Each time a file is modified, both the old version and the new version are kept on disk. The way they are distinguished is by the version number. In our example, before purging, there were five files. The oldest one was PROGRAM.FOR;1 and the newest PROGRAM.FOR;5. After purging, only the most recent one is left. Version numbers have no analog in UNIX and are truely a VMS concept.

4.2  Viewing Files With TYPE

Perhaps the simplest way to view a file is with the DCL command TYPE. If the file is a text file, TYPE will probably be able to display the file at the terminal. The text will scroll on the screen perhaps faster than it can be read. Toggle scrolling with the HOLD SESSION (or the NO SCROLL) button. Another way to do this is with CTRL/S to stop scrolling and CTRL/Q to resume. Yet another way to see only one page of text at a time is to use the command TYPE/PAGE. Use HELP for more information.

4.3  Text Editors on OHSTPY

A program that allows users to create, view, and modify text files is called a ``text editor''. There are at least 4 different text editors on OHSTPY: EVE, LSE, EMACS, and EDT. All of these editors are invoked by their names; e.g., to edit a text file named PROG.FOR with LSE, use the command

$ LSE PROG.FOR

Usage of EVE is briefly discussed below. However, the other editors listed might be more attractive for your purposes. For instance, LSE, which stands for Language Sensitive Editor, is used by one of the authors for all Fortran and C development. All 4 of these editors have online help accessible from within the editors themselves.

4.4  Creating And Modifying Files With EVE

Perhaps the most widely used text editor on OHSTPY is EVE.

$ show symbol eve
EVE == ``EDIT/TPU/SECTION=SYS$SHARE:EVE$SECTION''

When EVE is invoked, the screen is cleared and the text (if any) is displayed. Three lines at the bottom of the screen are used to display some information. The cursor is placed in the upper left hand corner. The end of the file is marked with [End of file].

To invoke EVE,

$ EVE FILENAME.TXT

If the file FILENAME.TXT exists (in the current directory), it is read into memory and only the first approximately twenty lines are initially displayed on the screen. If, on the other hand, it doesn't exist, the buffer is initially empty and the [End of File] appears in the upper left hand corner.

To exit from EVE and save the file, press CTRL/Z. Remember that the previous versions are kept.

There are three types of online help for EVE that you can invoke. One type is invoked at the DCL level and the other two from within EVE. Perhaps the best way to learn EVE is to use it and make use of these help facilities.

The first way to obtain EVE help is with the HELP utility:

$ HELP EDIT/TPU

A second way to obtain EVE help is to invoke EVE, identify the help-key and press it. (The help-key may be a dedicated key labeled Help or it may be the the key labeled PF2. This depends on the terminal and the keyboard - eg: PROCOMM usually uses the F2 key on the PC keyboard.) The screen will clear and a diagram of the keypad should appear. For a VT100 terminal, it should look something like:

   _______________________________         _______________________________
   |Move up| Move  | Move  | Move  |       | Find  | HELP  |Change |  Do   |
   |       | down  | left  | right |       |       |       |directi|       |
   |_______|_______|_______|_______|       |_______|_______|_______|_______|
                                           |Select |Remove |Insert | Move  |
   To get help on commands, type a         |       |       | here  |by line|
   command or ? and press RETURN.          |_______|_______|_______|_______|
                                           |       |Move up|       | Erase |
   For a list of all key definitions       |       |       |       | word  |
   type KEYS and press RETURN, or          |_______|_______|_______|_______|
   press GOLD-HELP.                        | Move  | Move  | Move  |       |
                                           | left  | down  | right |       |
   To show a key definition, use the       |_______|_______|_______|Change |
   command SHOW KEY.                       |  Next screen  |Previou| mode  |
                                           |               |screen |       |
                                           |_______________|_______|_______|
                                                Synonyms for the DO key:
                                                       PF4, DO
  
   Buffer: HELP
  Press the key that you want help on (RETURN to exit help):

This method provides a keypad oriented help. In the spirit of VMS, the responses are not case sensitive and may be abbreviated. Note that there are instructions at each stage.

To use the third online EVE help, still within EVE, identify the DO key and press it. (If there isn't a key labeled DO, use the keypad diagram to help find it. Try PF4. PROCOMM usually uses the Shift/F2 key.) A prompt should appear near the bottom of the screen. Enter help at this prompt. Immediately before pressing <CR >, the bottom of the screen should look something like:

                         .......
                 a(i+1)=4.0*b(i)-c(j)*c(i)/(5.43*a(i))
                 if(a(i+1).lt.20.0)then
                    call sub1a(a(i),a(i+1))
                 else  
                    stop
                 end if
           200 continue
               end
        [End of file]
  
         Buffer: PROG.FOR                                    | Write | Insert | Forward

        Command:  help
        19 lines read from file DEV$USER:[JOEUSER]PROG.FOR;8

In the spirit of VMS, DO commands are not case sensitive and may be abbreviated. A list of about 5 screens of commands is displayed.

To edit a previous version of the file, we simply have to be more specific with the file specification, for example:

$ dir *.for
  
Directory DEV$USER:[JOEUSER.SOURCE]
  
PROG.FOR;8          PROG.FOR;7          PROG.FOR;6
  
Total of 3 files.
$ eve prog.for;7
*** EDITING SESSION TERMINATED WITH CTRL/Z ***
$ dir *.for
Directory DEV$USER:[JOEUSER.SOURCE]
  
PROG.FOR;9          PROG.FOR;8          PROG.FOR;7          PROG.FOR;6
  
Total of 4 files.

The most recent version is PROG.FOR;9 and the other three versions are unchanged.

4.5  Disks And Sub-directories And File Maintainance

When a user gets an account on the VAX, he is given both an area on the user disk DEV$USER and an area on the scratch disk DEV$SCRATCH. Our hypothetical user's default directory at the time of login is DEV$USER:[JOEUSER]. Try the command:

$ SHOW DEFAULT
DEV$USER:[JOEUSER]

This command displays the current default disk DEV$USER and the default directory JOEUSER. To change the default disk to DEV$SCRATCH, try:

$ SET DEFAULT DEV$SCRATCH:[JOEUSER]
$ SHOW DEFAULT
DEV$SCRATCH:[JOEUSER]
$ SET DEFAULT DEV$USER:[JOEUSER]
$ SHOW DEFAULT
DEV$USER:[JOEUSER]

There is a DCL symbol that allows us to move about more easily.

$ SHOW SYMBOL SD
SD == ``@MISC_COM:SD_COM''
$ SD
DEV$USER:[JOEUSER]
$ SD DEV$SCRATCH:
DEV$SCRATCH:[JOEUSER]
$ SD <
DEV$USER:[JOEUSER]
$ SD ?
  
 Set/Show Default
  
 Format:
        SD                   Show current default
        SD *                 List subdirectories under this one
        SD NODE::            Translates to SET HOST NODE
        SD ::                Translates to SET HOST SYS$NODE 
        SD ^^                Go to top level of current directory   +
        SD ^                 Go up one subdirectory level           +
        SD  >TWO              Go to .TWO of this subdirectory level  +
        SD  <                 Restore most recent previous directory +
        SD .                 Restore default directory (SYS$LOGIN)  +
        SD .TWO              Set Default to [Current.TWO]           +
        SD ONE.TWO.THREE     Set Default to [ONE.TWO.THREE]         +
  
 +  = >  Redifines SD_SAVED_DIRECTORY = last Default directory setting

The first command shows that SD is defined as a symbol. (Because of the ``@'' we know that SD executes a COMmand file. This COMmand file may be viewed with EVE as using the command,

$ EVE/READ MISC_COM:SD_COM.COM

The COMmand file is made up of DCL commands, and is called a ``COMMAND PROCEDURE''.

To create sub-directories, use the DCL command CREATE/DIRECTORY:

$ SD .
DEV$USER:[JOEUSER]
$ CREATE/DIR
_File: [.SUBDIR]
$ DIR SUBDIR.DIR
  
Directory DEV$USER:[JOEUSER]
  
SUBDIR.DIR;1         
  
Total of 1 file.
$ SD.SUBDIR
$ SD
DEV$USER:[JOEUSER.SUBDIR]
$ DIR
%DIRECT-W-NOFILES, no files found
$ SD Ù
DEV$USER:[JOEUSER]

The first command brings us to our default login directory - if we are not already there. The second command creates the sub-directory DEV$USER:[JOEUSER.SUBDIR]. The third command shows that creating this sub-directory has also created a file named DEV$USER:[JOEUSER]SUBDIR.DIR;1 The fourth command moves us into the newly created sub-directory. The fifth command shows that there aren't any files in the sub-directory. The sixth command moves us back up (one level) to the main directory.

After the sub-directory is created, we may create files in it. Try to keep only a few files in each sub-directory, perhaps about a screen-full with DIR. A purpose of sub-directories is to make it possible to easily maintain files.

4.6  Cleaning Up With PURGE

There are several DCL commands that are used to manage files. Here we discuss only one to give an introduction.

Since VMS tries to save all previous versions, it is up to us to clean up. In practice, old versions of a file are not used except perhaps as a temporary form of backup. (There are of course exceptions to this rule.) VMS provides an easy way to delete all but the most recent version (highest version number). We illustrate:

$ dir prog.for
Directory DEV$USER:[JOEUSER]
  
PROG.FOR;10         PROG.FOR;9          PROG.FOR;8          PROG.FOR;7 
PROG.FOR;6          PROG.FOR;5          PROG.FOR;4          PROG.FOR;3 
PROG.FOR;2          PROG.FOR;1
  
Total of 10 files.
$ purge/nolog
$ dir prog.for
  
Directory DEV$USER:[JOEUSER]
  
PROG.FOR;10
  
Total of 1 file.

Learn more about deleting files with either of the following:

$ help delete
$ help purge

5.  Communication With Other Users

The VAX is a multi-user, time-sharing, computer. Typically, approximately 100 users may be logged on at the same time (during working hours SP 94). There are over 500 accounts listed in the file userlist. There are several ways to communicate with other users. This section gives a brief introduction to some of the methods.

5.1  Who Is Logged On The System, FINGER And SHOW USERS

To see who is logged on the system at any time, we may use the utility FINGER and/or the DCL command SHOW USERS. Each gives specific information. Try them:

$ finger

Monday, July 11, 1994 3:20PM-EDT   Up 43 17:19:23
40+1 Jobs on OHSTPX  Load ave  1.39 1.42 1.49

 User    Personal Name          Job   Subsys       Terminal  Console Location
ACOSTA   Darin Acosta        21C001A0 *DCL*     PHYVSH$FTA15
ALLEN    Brent H. Allen      2040988A *DCL*            LTA9668PHDS7A/PHDS7A_P2
ARUN     Arun K. Tripathi    20409681 *DCL*       1:01.NTY6  hepw04.hep.phys.ksu
ATL      Ann T. Lawrence     2020FC2A *DCL*     OHSTPW$NTY5  maps4.mps.ohio-stat
ATWOOD   Bruce Atwood        2021BC40 MAIL      OHSTPW$LTA7321PHDS7I/PHDS7I_P3
...         ...                ...     ...          ...           ...
JOEUSER  Joe User            2040485D RLOGIN           FTA78
                             20409664 *DCL*       3:23.NTY3  capemay.mps.ohio-st
                             20409478 LSEDIT           FTA120
                             20409279 FINGER           FTA121
                             204040E9 LSEDIT           FTA75
                             20404B03 RLOGIN           FTA77
                             20609202 LSEDIT    OHSTPZ$NTY1  ohstpx.mps.ohio-sta
                             20606481 DTEPAD    OHSTPZ$NTY6  ohstpx.mps.ohio-sta
...         ...                ...     ...          ...           ...
YEMING   Ming Ye             2060B292 *DCL*     OHSTPZ$LTA9765LAT_AA0004001118
YUEYANG  Yue Yang            20218C66 NEWS      OHSTPW$NTY10 china.mps.ohio-stat
YWB      Wenbin Yu           2060ACFF *DCL*     OHSTPZ$NTY12 brighton.mps.ohio-s
ZQMA     Ma Zhenqiang        2040969B NEWS             LTA9675PHDS7H/PHDS7H_P16
$ show users/full

      VAX/VMS User Processes at 11-JUL-1994 15:26:08.70
    Total number of users = 78,  number of processes = 179

 Username     Node   Process Name       PID     Terminal
  <login >     PHYVS9  DECW$LOGINOUT    210001A7
  <login >     PHYVSB  DECW$LOGINOUT    214002A6
 ACOSTA      PHYVSH  ACOSTA           21C001A0  FTA15:
  ...         ...     ...               ...      ...
 JOEUSER     OHSTPX  Joe              20409664  VTA5382: NTY3:
                                                    (capemay.mps.ohio-state.edu)
  ...         ...     ...               ...      ...
 YWB         PHYVSJ  BATCH_546        22000BC5  (batch)
 ZQMA        OHSTPX  ZQMA             2040969B  LTA9675: (PHDS7H/PHDS7H_P16)

With FINGER, we see a list (truncated here in this example) of all the users logged in presently. The columns give various information. The first column lists the USERNAMEs. Each person is locally (on OHSTPY) refered to by this USERNAME. The second column lists the user's name as entered by a system manager (John Heimaster et al) when the account is started. The third column lists the corresponding program that is being run. For example, JOEUSER (our fictitious user) is running the image FINGER. (Note that FINGER abbreviates some utility names which are not in the spirit of VMS and these abbreviations are sometimes not valid DCL abbreviations.) If the user is not running a program and is at the DCL level, we see that the image is *DCL*. The fourth and fifth columns give information about what terminal is being used.

The DCL command SHOW USERS also lists the USERNAMEs, however, it gives other types of information. The second column lists the Process Name, which you may change with the DCL command,

$ set process/name="Joe"

The quotes help preserve the case. The third column lists the PID (Process ID number). The last two columns list more terminal information - beyond the scope of this section.

If you create a plan in your login directory, other people may view it with FINGER. The file must be named PLAN.TXT. Here is an explicit example:

$ sd .
DEV$USER:[JOEUSER]
$ eve finger.pln
*** EDITING SESSION TERMINATED WITH CTRL/Z ***
$ set file plan.txt/protection=w:re
$ finger joeuser


JOEUSER  Joe E. User         2040485D RLOGIN           FTA78
                             20409664 *DCL*       3:43.NTY3  capemay.mps.ohio-st
                             20409478 LSEDIT           FTA120
                             20409279 FINGER           FTA121
                             204040E9 LSEDIT           FTA75
                             20404B03 RLOGIN           FTA77
                             20609202 LSEDIT    OHSTPZ$NTY1  ohstpx.mps.ohio-sta
                             20606481 DTEPAD    OHSTPZ$NTY6  ohstpx.mps.ohio-sta

Plan:

I'm just an average joe.  My office number is 292-5555.  I have no personal life,
so I have no home phone.

After the word ``Plan'', the file FINGER.TXT that was created is displayed. You may finger any user this way, even when he is not logged on. Try it.

5.2  Interactive Communication With SEND and PHONE

We may interactively communicate with other users logged onto the system. If you want to send short messages to another user, use the DCL SEND command. If you want to carry on a longer conversation, use the utility PHONE.

The SEND command may send lines of text to the other user's terminal screen. For example, JOEUSER SENDs a message to MARY. At JOEUSER's terminal,

$ send mary
MARY: Hello Mary MARY:

At MARY's teminal,

$ JOEUSER(VTA5833) - Hello Mary $

MARY may respond by sending text back to JOEUSER with the SEND JOEUSER command.

Another more sophisticated method of interactive communication uses the PHONE utility. Try first:

$ help phone

When PHONE is invoked, the screen clears and splits into three areas. At the top of the screen appears a prompting and system message area. The default prompt within PHONE is the percent sign. (Try entering help at the % prompt - % help - to get more help.) Below this top area are two areas - a split screen - where messages either appear or are entered. The user types in the upper half of the split screen. The other user's message appears in the bottom part of the split screen. Note that the characters are sent as they are typed.

To successfully invoke PHONE, the other user must respond. If JOEUSER wants to call MARY, he may initiate the utility by using:

$ phone mary

The system displays at his terminal the three windows described above. A message that JOEUSER is calling is sent to MARY. MARY's display and subsequent responce may look like:


$
OHSTPY::JOEUSER is phoning you on OHSTPY::      (10:24:10)
$
OHSTPY::JOEUSER is phoning you on OHSTPY::      (10:24:10)
$
OHSTPY::JOEUSER is phoning you on OHSTPY::      (10:24:10)
$ phone answer

Her screen clears and displays the same three windows. Try it with a friend to get used to it.

5.3  Electronic Mail

Another way to communicate with other users is with the MAIL utility. This utility is very useful for sending and maintaining messages. MAIL has a help facility very similar EVE's. First try:

$ help mail

Then, to obtain even more help, enter HELP at the MAIL prompt. Below is a detailed example showing how to obtain help with the MAIL command DIRECTORY.

$ mail
MAIL > help
  
HELP
  
  
    Allows you to obtain information about the Mail Utility.
  
    To obtain information about all of  the  MAIL  commands,  enter  the
    following command:
  
         MAIL > HELP *
  
    To obtain information about individual  commands  or  topics,  enter
    HELP followed by the command or topic name.
  
     Format:
  
         HELP [topic]
  
  
  Additional information available:
  
  /EDIT      /PERSONAL_NAME        /SELF      /SUBJECT   ANSWER     ATTACH
  BACK       COMPRESS   COPY       CURRENT    DEFINE     DELETE     DIRECTORY
  EDIT       ERASE      EXIT       EXTRACT    FILE       FIRST      Folders
  FORWARD    GETTING_STARTED       HELP       KEYPAD     LAST       MAIL
  MARK       MOVE       NEXT       PRINT      PURGE      QUIT       READ
  REMOVE     REPLY      SEARCH     SELECT     SEND       SET-SHOW   SPAWN
  V5_CHANGES
Topic? dir
  
DIRECTORY
  
  
    Displays a list of the messages in the current mail file,  including
    message number, sender's name, date, and subject.
  
    If "folder-name" is  omitted,  MAIL  displays  a  directory  of  the
    currently  selected  folder.   If  there  is  no  currently selected
    folder, MAIL displays a directory of the NEWMAIL folder  (if  unread
    messages  exist)  or  the  MAIL folder.  (See the SELECT command for
    information about selecting messages.)  You create a new set of selected
    messages everytime you use any directory qualifier except the /EDIT
    qualifier.
  
     Format:
  
         DIRECTORY [folder-name]
  
  
  Additional information available:
  
  Parameters Qualifiers
  /BEFORE    /CC_SUBSTRING         /EDIT      /FROM_SUBSTRING       /FOLDER
  /FULL      /MARKED    /NEW       /REPLIED   /SINCE     /START
  /SUBJECT_SUBSTRING    /TO_SUBSTRING
  Examples
DIRECTORY Subtopic? examples
  
DIRECTORY
  
  Examples
  
  
      1.
           MAIL > DIRECTORY
                                                             MAIL
           #   From    Date             Subject
  
           1   MARK    11-APR-1988        The Yen
           2   MARK    11-APR-1988        The Buck
           3   BILL    13-APR-1988        The Pound
           4   BILL    13-APR-1988        The Dollar
           5   BILL    14-APR-1988        The Cent
           6   MARK    17-APR-1988        The Dime
  
  
      This example shows how to display a listing of all the  messages  in
      the current folder by using the DIRECTORY command.
  
      2.
           MAIL > DIRECTORY/SUBJECT_SUBSTRING= POUND
           #   From    Date             Subject
  
           3   BILL    13-APR-1988        The Pound
  
      This example shows how to use the /SUBJECT_SUBSTRING qualifier to find
      messages that contain the text POUND in the subject field.
  
      3.
           MAIL > DIRECTORY/SINCE=13-OCT
                                                             MAIL
           #   From    Date             Subject
  
           1   MARK    13-OCT-1988        The Yen
           2   MARK    13-OCT-1988        The Buck
           3   BILL    15-OCT-1988        The Pound
           4   BILL    17-OCT-1988        The Dollar
           5   BILL    20-OCT-1988        The Cent
           6   MARK    21-OCT-1988        The Dime
  
  
      This example  shows  how  to  use  the  /SINCE  qualifier  with  the
      DIRECTORY  command  to  display  a  listing of all the mail messages
      received on or after October 13, 1988 in the current folder.
  
      4.
           MAIL > DIRECTORY/FOLDER
           Listing of folders in DISK$:[BACON]MAIL.MAI;1
               Press CTRL/C to cancel listing
           MAIL      NEW_HIRES
           PROJECTS      SALES_LEADS
  
  
      This example shows how to display a listing of all  the  folders  in
      the current mail file.
  
DIRECTORY Subtopic? 

Note that in this example, only the underlined commands are entered, everything else is displayed by the MAIL utility.

If we are MAILing a message to a person with an account on OHSTPY, we need the USERNAME. However, if we are sending a message to a person over the network, we may need to use a full computer address. A typical computer address is the ``INTERNET'' address. JOEUSER's and MARY's INTERNET addresses are respectively

JOEUSER@OHSTPY.MPS.OHIO-STATE.EDU
MARY@OHSTPY.MPS.OHIO-STATE.EDU

Anyone on this system (OHSTPY) simply appends

@OHSTPY.MPS.OHIO-STATE.EDU

to his USERNAME to obtain his INTERNET address.

As an example of how the INTERNET address is used in MAIL, suppose JOEUSER wishes to send a message to MARY. His interactive session may look like:

$ mail
MAIL > send
To: mary@ohstpy.mps.ohio-state.edu
Subj: What's Your Sign?

If JOEUSER is MAILing from OHSTPY, he may have used the following:

$ mail
MAIL > send
To: mary
Subj: What's Your Sign?

to obtain the same result. Generally, if you know someone with an account on a node other than OHSTPY, you may exchange computer addresses without the computer, eg: via telephone or in person. You may also be able to obtain a person's email address via the facility WHOIS. Use HELP WHOIS for details.

PMDF MAIL is a program which functions similarly to MAIL, with enhancements to make it easier to do tasks like sending multi-part mailings or maintaining mailing lists. For more information try the following HELP commands:

$ HELP PMDF MAIL
$ HELP PMDF DB

A final note on MAIL: Over the years, we've noticed that the most common problem users have with MAIL, (or PMDF MAIL for that matter), is accidental deletion of MAIL's files. Please DO NOT use the DCL DELETE command on any files with the extension MAI, for example MAIL.MAI. Always use the MAIL or PMDF MAIL DELETE command to remove old or unwanted messages. If the presence of mail files in your login directory bothers you, use the MAIL or PMDF MAIL command SET MAIL_DIRECTORY command to make a special mail subdirectory in which to hide these files away.

5.4  Network News

A network news reader is available on OHSTPY. This news reader is started with the command DCL command NEWS. When NEWS starts, you'll see many groups listed, most of which you (or almost anyone else) aren't going to be interested in. Here's a method to read a message from a particular group:

NEWS allows the user to REGISTER newsgroups of particular interest, making it possible to ignore the hundreds of newsgroups you'll never care to read. Posting is also possible, though a very good rule of thumb is to read a particular news group for a while to familiarize onesself with the process a bit before participating. Here're a few tips to remember before posting:

There are several online documents with instructions on the use of NEWS. Use the command TELL NEWS_6 for more information.

6.  Program Development

VMS provides a user-friendly environment for program development. PASCAL, FORTRAN, and C are three high level languages available on the VAX. There are also several useful subroutine libraries available.

This section is designed as an introduction to programming on the VAX. There are several minimal steps needed to create and run a program. These steps are briefly:

Each of these are describe below.

6.1  Source-Code Development

Use EVE to create the source-code file. the file-specification extention should reflect the computer language that is being used:

Language File
FORTRAN PROG.FOR
PASCAL PROG.PAS
C PROG.C

The file-name is ours to make up - here we use PROG in all three cases.

To give a specific example, we write a simple program in FORTRAN. (At this point, the reader is assumed to be familiar with FORTRAN.)

$ EVE PROG.FOR
*** EDITING SESSION TERMINATED WITH CTRL/Z ***
$ TYPE PROG.FOR
      PROGRAM PROG
C+
C     THIS EXTREMELY SIMPLE PROGRAM ADDS TWO NUMBERS AND PRINTS THE RESULT TO
C     THE TERMINAL SCREEN. REMEMBER, THE STATEMENTS MUST START IN COLUMN 7.
C-
      INTEGER I,J
C+
C     ASSIGN THE VALUES TO THE TWO VARIABLES I AND J
C-
      I=1002
      J=321
C+
C     PRINT I+J=RESULT TO UNIT=6 (THE TERMINAL SCREEN) WITH THE DEFAULT
C     FORMAT (INDICATED BY THE *)
C-
      WRITE(6,*) I, ' + ', J, ' = ', I+J
C
      STOP
      END
$ DIR PROG
  
Directory DEV$USER:[JOEUSER]
  
PROG.FOR;1          
  
Total of 1 file.

We use the TYPE command to show what the file perhaps should look like when we are done and the DIRECTORY command to see that we have one file with the PROG file-name. This file of course is the source-code file PROG.FOR.

6.2  Compiling The Source-code

After creating the source-code, we run a utility to compile it into an object file. This object file is not a text file and is not human readable.

Each of the languages need to be compiled with a different compiler. Use the commands

$ help fortran
$ help pascal
$ help cc

to obtain extensive online help regarding these utilities.

To compile our simple example program PROG.FOR, we enter:

$ fortran prog
$ dir
  
Directory DEV$USER:[JOEUSER]
  
PROG.FOR;1          PROG.OBJ;1          
  
Total of 2 files.

The DIR simply shows us that the compiler produced the OBJ file. Note that with the FORTRAN compiler, we do not need to specify the FOR extension since this is the default.

If our program is written in PASCAL and if PROG.PAS is the source-code file then

$ pascal prog

would produce the file PROG.OBJ. Similarily, if our program is written in C and if PROG.C is the source-code file then

$ cc prog

would produce the file PROG.OBJ.

6.3  Linking The Object-code

After we produce the object file, we need to run another utility to link up our program with any subroutines that we may have called. Try the command

$ help link
  
LINK
  
    Invokes the VMS Linker to link one or more  object  modules  into  a
    program  image,  and defines execution characteristics of the image.
    For a complete description of the linker, including more information
    about the LINK command, see the VMS Linker Utility Manual.
  
    Format:
  
  
      LINK  file-spec[,...]
  
  
  Additional information available:
  
  Parameters Command_Qualifiers
  /BRIEF     /CONTIGUOUS           /CROSS_REFERENCE      /DEBUG     
  /EXECUTABLE           /FULL      /HEADER    /MAP       /P0IMAGE   /PROTECT
  /SHAREABLE /SYMBOL_TABLE         /SYSLIB    /SYSSHR    /SYSTEM    
  /TRACEBACK /USERLIBRARY
  Positional_Qualifiers
  /INCLUDE   /LIBRARY   /OPTIONS   /SELECTIVE_SEARCH     /SHAREABLE
  Examples

   LINK Subtopic? 

to obtain extensive help on link.

In our simple example, we simply enter:

$ link prog
$ dir
  
Directory DEV$USER:[JOEUSER]
  
PROG.EXE;1          PROG.FOR;1          PROG.OBJ;1          
  
Total of 3 files.

The DIR shows us that LINK produced another file, namely PROG.EXE. LINK took as input the file PROG.OBJ, where the OBJ is the default extension, and generated our executable file PROG.EXE.

The same command LINK is used to link programs written in the other languages.

6.4  Running The Program

At this point, we are ready to run the program. Try

$ help run

to get help on this command.

We may simply run our example program interactively as follows,

$ run prog
        1002 +          321 =         1323
FORTRAN STOP

The default extension for the RUN command is EXE.

It is possible to run a program as a batch job rather than interactively. As an example of how we may run our simple example program this way, we first produce a command file and then SUBMIT it to a batch queue. Try

$ help submit

to get more help. Of course, it may not be necessary to run small programs in batch - we use our example program only as an illustration.

$ eve prog.com
*** EDITING SESSION TERMINATED WITH CTRL/Z ***
$ dir
  
Directory DEV$USER:[JOEUSER]
  
PROG.COM;1          PROG.EXE;1          PROG.FOR;1          PROG.OBJ;1         
  
Total of 4 files.
$ type prog.com
$!
$! this command file is used to run PROG in batch.
$!  <- following "!" are comments.
$!
$ run dev$user:[joeuser]prog   !Enter the command that will run the program.
$ exit                         !Put this optional DCL command at the end.
$ submit prog
Job PROG (queue SYS$BATCH, entry 535) pending
$ show queue/all sys$batch
Generic batch queue SYS$BATCH
  
  Jobname         Username     Entry          Status
  -------         --------     -----          ------
  MR101           FIRSTUSER      507          Executing
  INT3            OTHERUSER      532          Pending
  PROG            JOEUSER        535          Pending

The EVE command is used to create the command file. The DIRECTORY command verifies that the file PROG.COM is present. The TYPE command simply displays the file we made. The SUBMIT command submits the command file to the batch queue SYS$BATCH. The SHOW command shows us that we are placed at the end of the batch queue after two other entries. We wait until turn is up before our program is run. The output is written to the file DEV$USER:[JOEUSER]JOEUSER.LOG by default. Try the commands

$ show queue/all

to learn more about the possible queues.

6.5  Using the Debugger

There is an interactive debugger available on OHSTPY to help isolate run-time errors in programs for which the source code is available. The following commands are required to compile and link the FORTRAN program PROG.FOR so that the debugger can be used:

$ fortran/debug/nooptimize prog
$ link/debug prog
$ run prog

When the command run prog is issued, a prompt like the following is displayed:


         VAX DEBUG Version V6.0DS-004

%DEBUG-I-INITIAL, language is FORTRAN, module set to PROG

DBG >
Debugger commands issued at the DBG > prompt allow the user to interactively walk through the code using the STEP and GO commands, examine variable contents using the EXAMINE command, and change variable contents using the DEPOSIT command. Use the debugger command SET MODE SCREEN for full-screen debugging and source display. The VMS debugger is easy to use, and the 5 commands mentioned here will likely be sufficient to debug most run-time errors. Help is available online from within the debugger; please use the debugger help on these commands to learn more.

6.6  Some Available Libraries

Several libraries are available. We only mention two to make the user aware.

IMSL contains subroutines for tasks like eigensystem analysis, linear systems evaluations, and evaluation of differential equations. There are several sets of hardcopy documentation available, as well as an online help system accessible via the following commands:

$ tutorial

The following tutorial programs are available:

   EDT       The "old" VAX editor, EDT; use and extension.
   IMSL      Standard numerical subroutines; calling sequences, applications.
   TCP       Wollongong TCP/IP package (TELNET, FTP); ignore "MAIL" section.
   TTYPE     Touch typing course.
   VMS       VMS commands, file creation, mail, etc.

Type a program name, or QUIT to exit: IMSL

Note the other entries in the TUTORIAL main menu. If you like a little structure and this is all completely new to you, you might be interested in running the VMS tutorial. The EDT tutorial isn't bad either, and the keypad layout which EDT uses can be duplicated by all other editors supported on OHSTPY.

The Digital Extended Math Library is a collection of public and proprietary mathematical subroutines. Included in the library are VLIB, BLAS, and LAPACK, as well as routines for doing FFTs, convolution filters, and more. Use the command HELP DXML for more information, including linking instructions.

7.  Plotting Data

There are at least two programs on OHSTPY which will help you generate X-Y plots.

GNUPLOT is a shareware program that can generate 2 and 2 dimensional plots from intrinic functions and from datafiles. GNUPLOT has an online help, as well as an extensive manual. For more information, use the command TELL GNUPLOT.

PHYSICA is another shareware program that has graphics and mathematical analysis capabilities. For more information, use the command TELL TRIUMF.

8.  Typesetting

VMS, (and just about every other computer environment at OSU Physics), provides sophisiticated typesetting programs LATEX and TEX\. In fact, this document is itself typeset using LATEX\. The best way to learn about LATEX and TEX is to read the manuals and study exisiting examples. LATEX\ and TEX are related, however TEX is more primitive than LATEX and it is recommended that LATEX be learned first. There is a local guide for LATEX which you can print a copy of this document using the command

$ laser tex_root:[documentation]local-latex-guide.ps smith2097

You will be asked by LASER if you want two-sided output; please answer yes. A copy of the local guide will then print out on the laser printer in Room 2097 Smith. Instructions in the local guide on how to process a DVI file are applicable for both TEX and LATEX sources.


File converted from TEX by TTH, version 0.8.