HPlogo New Features of MPE/iX: Using the Hierarchical File System: 300 MPE/iX Computer Systems > Chapter 1 What's New on MPE/iX: Tutorial

Learning by Doing

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Glossary

 » Index

You can try some of the new features of MPE/iX with the examples in the rest of this tutorial.

Use the HFS syntax

When you log on to the system, you are in a group within an account such as YOURGRP.YOURACCT. Files you work with, such as FILE1, can be referred to as FILE1.YOURGRP.YOURACCT or file1.yourgrp.youracct. MPE syntax automatically converts lowercase letters to uppercase. With the advent of the hierarchical file system, you can also refer to a file using the HFS syntax. That same file can be referred to as /YOURACCT/YOURGRP/FILE1. It is the path to the file or the pathname.

NOTE: To refer to an MPE file name using the HFS syntax, you must type the name using all capital letters; otherwise, the HFS syntax looks for the name using lowercase letters and won't locate it. HFS syntax does not convert lowercase letters to uppercase.
/YOURACCT/YOURGRP/FILE1 = FILE1.YOURGRP.YOURACCT

The first / in the pathname refers to the level above the account and is called the root directory. It is used as a way to reference files on the system. See Figure 1-2 “Location of the File That You Created”.

Figure 1-2 Location of the File That You Created

[Location of the File That You Created]

Figure 1-2 “Location of the File That You Created” shows a picture of your file's location in the file system. YOURACCT is one level below the root directory. You logged on to YOURACCT and were placed into YOURGRP. Then you built a file called FILE1. Any other files that you have in YOURGRP are also located there with FILE1.

List the file

You can refer to a file using either the MPE or HFS syntax. Earlier you created a file called FILE1.

NOTE: The use of the LISTFILE command in this section is intentional. The LISTF command does not recognize HFS syntax.

You can list the file with MPE syntax:

   :LISTFILE FILE1.YOURGRP.YOURACCT

OR (using the exact capitalization shown)

   :LISTFILE /YOURACCT/YOURGRP/FILE1

Both display the same result:



   FILE1


Be careful! HFS syntax is case sensitive but MPE syntax is not. You can type the following command, using MPE syntax in lowercase, and locate uppercase FILE1 in YOURGRP in YOURACCT. Try it.

   :listfile file1.yourgrp.youracct

That's because MPE syntax upshifts everything. But because HFS syntax is case sensitive, the following command will not find FILE1 in YOURGRP in YOURACCT:

   :listfile /youracct/yourgrp/file1

   A component of the pathname does not exist. (CIWARN 9053)

YOURACCT is not the same as youracct in HFS syntax.

Create a directory

A directory is a work area similar to an MPE group where you can put related files. You can create directories in your group and account. You must precede file and directory names with ./ or / to use HFS syntax. Dot (.) means current working directory or where you are working within the file system. So ./ lets you use HFS syntax in your current working directory.

   :NEWDIR ./Directory1

This command creates Directory1 in your current working directory.

HFS syntax accepts the name exactly as you type it in uppercase and lowercase, and the name can be up to 16 characters long when created directly under a group. (Refer to Table 1-2 shown previously for maximum lengths of directory names.)

Watch out! If you try to create the directory without including ./ before the name, MPE/iX treats the name as a regular MPE name. It converts the letters to all uppercase. Try typing the following command:

   :NEWDIR Directory1

   File name is more than eight characters long. (CIERR 532)

Also notice: If you type the following command, MPE/iX creates a directory called DIR2 (uppercase). That is because you are using MPE syntax. Try it.

   :NEWDIR dir2

In the next section, you'll learn how to list the directory.

Figure 1-3 “Location of the Directories That You Created” shows a picture of the file system including the directories that you just created.

Figure 1-3 Location of the Directories That You Created

[Location of the Directories That You Created]

List the directories

You use the LISTFILE command to list directories as well as files. Directories are special types of files.

   :LISTFILE ./Directory1





   PATH=/YOURACCT/YOURGRP/./



   Directory1/

You can tell that it's a directory (rather than a file) in the command output because its name is followed by a slash.

To list all files and directories in your current working directory:

   LISTFILE ./@





   PATH=/YOURACCT/YOURGRP/./



   DIR2/         Directory1/   FILE1

All files (including directories) in your current working directory are listed.

If you omit the ./ from the command, the LISTFILE command assumes that you are looking only for MPE-named files, and HFS-named files are not displayed:

   :LISTFILE @



   FILENAME



   DIR1

   FILE1

If you have other files in the group where you are working, they are listed along with FILE1.

The result is the same if you omit @ and type LISTFILE since that is the default when no parameter is included with the command.

List directories another way

NOTE: You can only use the system-provided UDCs, such as LISTDIR, if the system manager has activated them. Refer to the section "UDCs, JCL, Command Files, and Programs" in Chapter 3 for more information.

You can also use the LISTDIR UDC to list directories:

   :LISTDIR



   /YOURACCT/YOURGRP/DIR2/

   /YOURACCT/YOURGRP/Directory1/

All the directories in your current working directory are listed when you specify the UDC with no parameters.

You can also use the LISTDIR UDC to list directories in a specific location:

   :LISTDIR /SYS/PUB

This command locates any directories located in PUB.SYS.

Move to the directory

After you create a directory, you can move to it.

   :CHDIR ./Directory1

This command moves you to Directory1. Figure 1-4 “Location after Changing Directories” shows you where you moved in the file system. Directory1 is now your current working directory.

Figure 1-4 Location after Changing Directories

[Location after Changing Directories]

Again, use a ./ to act on HFS files. If you don't, MPE/iX acts only on MPE-named files. If you try to change to Directory1 without the preceding ./ the system treats the directory name as an MPE name and converts the letters to uppercase. It does not locate the directory.

   :CHDIR Directory1



   File name is more than eight characters long. (CIERR 532)

According to MPE syntax, the file name is limited to eight characters, but actually, two errors occur here. First, the system discovers that the name is longer than eight characters and reports the error. Second, the name is upshifted, and the system looks for DIRECTORY1, which it wouldn't find even if it were fewer than eight characters.

Move back to your logon group

If you type

   :CHDIR

by itself, MPE/iX moves you back to your logon group. Try typing the command. Figure 1-5 “Moving Back to Your Logon Group” shows you where you are now. YOURGRP is your current working directory again.

Figure 1-5 Moving Back to Your Logon Group

[Moving Back to Your Logon Group]

Move to DIR2

You can move to the DIR2 directory that you created earlier.

   :chdir dir2

This command moves you to the directory called DIR2 since the MPE syntax rules are followed; these rules convert the name to uppercase. Notice when using HFS syntax, you can type the commands in uppercase or lowercase. Using lowercase is easier for some people. Otherwise, you can force specific case for a name by beginning the name with ./ as shown here. Since you have already changed directories, you'll need to change back to your logon group (using CHDIR) to try the following example:

   :chdir

   :chdir ./DIR2

Figure 1-6 “Moving to DIR2” shows you where you are now. DIR2 is your current working directory.

Figure 1-6 Moving to DIR2

[Moving to DIR2]

Create a subdirectory

You can also create a directory within a directory. The previous examples put you in the DIR2 directory. Now try creating another directory with a long name:

   :newdir ./Long_Directory_Name
NOTE: HFS syntax allows you to use special characters in the name, such as "_" (underscore). You can also use characters like the "-" (hyphen) and "." (period or dot). By convention, the dot in a name is usually used to separate the name from an extension that has some significance. For example, names of source programs written in the C language often have a .c extension such as prog1.c.

List the subdirectory

Using LISTFILE or the LISTDIR UDC is the best way to list directories and subdirectories.

   :listfile ./@





   PATH=/YOURACCT/YOURGRP/DIR2/./



   Long_Directory_Name/

Subdirectories can contain files or directories with names of up to 255 characters.

Using LISTDIR also lists directories. The output is similar:

   :listdir

   /YOURACCT/YOURGRP/./DIR2/Long_Directory_Name/

Move to the subdirectory

You change to subdirectories as well as directories using the CHDIR command:

   :chdir ./Long_Directory_Name

Show where you are

CWD is short for current working directory. That's where you are located in the hierarchical file system. To find out your CWD, type the following command:

   :showvar hpcwd

   HPCWD = /YOURACCT/YOURGRP/DIR2/Long_Directory_Name

The location of the directory is presented from the root directory down to the current location in a pathname. The pathname is the path to the directory.

Names are shown top-down rather than bottom-up. The first / refers to the root directory. All directories, accounts, and files exist under the root. Slashes separate the pathname components. The last component of the pathname is the name of the current working directory.

Change your prompt to show the current working directory

You used to use the SHOWME command to find out your logon group. The SHOWME command does not show the current working directory, but you can change your prompt so that it shows where you are at all times.

NOTE: Do not execute the following command unless you want to change your existing prompt.
   :setvar save_prompt hpprompt

   :setvar hpprompt "!!HPCWD:"

   /YOURACCT/YOURGRP/DIR2/Long_Directory_Name:

Having your prompt set to the current working directory makes it obvious where you are as you move around in the hierarchical file system. The first command in the above example also saves your current prompt in case you want to return to it. Here's the command you use to reset your old prompt:

   :setvar hpprompt save_prompt

Create a file with a long file name

Move back to your logon directory:

   /YOURACCT/YOURGRP/DIR2/Long_Directory_Name:chdir

   /YOURACCT/YOURGRP:

Both MPE syntax and HFS syntax will work with your existing files or files with names conforming to MPE syntax. However, you must use HFS syntax to specify file names using HFS naming syntax (such as those using special characters or lowercase letters). The rest of the examples in this tutorial use the colon prompt rather than the name of the current working directory. Try each of these commands to copy an existing MPE file into DIR2:

   :COPY FILE1.YOURGRP.YOURACCT,/YOURACCT/YOURGRP/DIR2/VeryLongFilename

   :



   :COPY /YOURACCT/YOURGRP/FILE1,/YOURACCT/YOURGRP/DIR2/AnotherLongFilename

   :

List files and directories in your CWD

Using the LISTFILE command with option 2 provides useful output.

In the following example, the file type for the directories, DIR2 and Directory1, is DBH. This is a new type that indicates that these are directories in binary form and they are hierarchical (as opposed to being groups or accounts).

   :listfile /YOURACCT/YOURGRP/@,2



    PATH=/YOURACCT/YOURGRP/



    CODE  ------------LOGICAL RECORD-----------  ----SPACE----

   FILENAME

            SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX



            128W  FB           0       1023   1        0  0  *

   AnotherLongFilename

             16W  DBH          4   67107839   1       32  1  *

   DIR2/

             16W  DBH          4   67107839   1       32  1  *

   Directory1/

             80B  FA         411        411   1      144  2  *

   FILE1

            128W  FB           0       1023   1        0  0  *

VeryLongFilename

You can use many options with the LISTFILE command to show additional information about the files and directories.

Delete a directory

To delete Directory1:

   :purgedir ./Directory1

   Directory "./Directory1" to be purged? (Yes/No)y

MPE/iX deleted the directory because it was empty. (You need to use the TREE option with the PURGEDIR command to delete a directory that is not empty.)

Learn about absolute and relative pathnames

HFS syntax, like MPE syntax, allows the use of absolute pathnames and relative naming. An absolute pathname is a pathname where all components, starting with the root, are specified (for example, /SYS/PUB/CI).

HFS syntax also allows the use of relative pathnames. A relative pathname allows you to specify a file by beginning from your CWD. For a relative pathname, start the name specification with a "./" (dot slash).

  1. Make sure that you are working in /YOURACCT/YOURGRP by issuing the following command:

       :chdir
    

    (You can use CHDIR to move to a group because accounts and groups are special types of directories.)

  2. Now try the following command:

       :LISTFILE /YOURACCT/YOURGRP/@,6
    

    The command says, "list everything in /YOURACCT/YOURGRP." It specifies the absolute pathname. Notice the output.

  3. Try this command, which uses the relative pathname "./":

       :LISTFILE ./@,6
    

    The command says, "list everything in the current working directory." Like the last command, it also lists the contents of /YOURACCT/YOURGRP because you are currently working in that directory.

Try a few more LISTFILE commands

You can use the TREE option to show all accounts, groups, files and directories below the specified point.

   :LISTFILE /YOURACCT;TREE

Including a slash at the end of a directory name in the LISTFILE command is the same as specifying the keyword TREE in the command line.

   :LISTFILE /YOURACCT/

List sets of objects on the system

   :LISTFILE /

This command shows all accounts, directories, and files on the system. (It replaces LISTF @.@.@.) In the command shown, the / does triple duty: first it tells MPE/iX to interpret the name using the HFS syntax; second, it calls the TREE option; and third, the / represents the root directory.

   :LISTFILE /@

The above command shows all accounts, directories, and files exactly one level below root.

   :LISTFILE /@/@/@/@

The above command shows all directories or files exactly four levels below the root directory.

Search for files

You can use the NAME option to look for an account, group, directory, or file.

   :LISTFILE /,6; NAME=D@

This command searches for all directories, accounts, groups, and files on the system that begin with D (or d). It searches through all levels of the file system hierarchy.

In the MPE account structure prior to Release 4.5 (when there were only three levels), the following command sequence would have been used:

   LISTF D@.@.@

   LISTF @.D@.@

   LISTF @.@.D@

You can still use the above LISTF commands to locate files beginning with D, groups beginning with D, and accounts beginning with D, respectively. However, the commands only locate files in groups. Files beginning with D in directories are not located. No directories are listed, and no files with names having lowercase letters are found using LISTF.