Trailing-Edge
-
PDP-10 Archives
-
LCG_Integration_Tools_Clearinghouse_T20_v7_30Apr86
-
tools/casestdy/case2dis.doc
There are 3 other files named case2dis.doc in the archive. Click here to see a list.
Vax Conversion Team Project Plan
Vax Conversion Team Project Plan
Events in a Conversion from a Dec-10 to a Vax-11/780
Events in a Conversion from a Dec-10 to a Vax-11/780
by
Charles Anthony
Charles Anthony
Richard A. Farrenkopf
Richard A. Farrenkopf
David Russell
David Russell
CHAPTER 1
OVERVIEW OF PROJECT PLAN
OVERVIEW OF PROJECT PLAN
1.1 INTRODUCTION
INTRODUCTION
This document will discuss a project to convert Corporate
Purchasing's application systems from a Dec-10 computer system
(PDCF::) to a Vax-11/780 to be installed in a new NR05 Data Center. A
team was put together to aid in this process whose specific
responibilities are discussed below.
1.2 GOAL
GOAL
The goal of the Vax conversion team is to provide technical
support to assist in intelligent decison making in the migration
process. This will include developing a project plan for initial
conversion decisions and events that are necessary before the
Corporate Purchasing Mis programming staff is able to begin the
conversion of any specific systems. It is also to act as a resource
for specific technical problems. We will work with Data Center
representatives in order to make decisions about hardware and software
resources. This will include setting up user-accounts, user-quotas,
the residence of data files, programs, libraries, etc. It is also to
develop guidelines for naming conventions for files and programs, and
systems. We shall also serve as a communications link between project
leaders so as to ensure a cohesive translation of systems. We shall
provide common application tools for the programming and user
community such as a front-end system. We also plan to provide
training seminars as it becomes necesary to ensure the proper
education of the programming staff in efficient a manner as possible.
1.3 TASKS
TASKS
1. Achieve optimum level of expertise on Vax
Achieve optimum level of expertise on Vax
In order to be able to provide the level of technical
support that is needed in such a conversion effort, it is
imperative that the conversion team become initimately
familiar with both Vax software and hardware. This inludes
both formal training courses and 'hands-on' experience.
Formal training courses included a Vax Utilities/Commands
Course, a Datatrieve Programming Course, a Vax-11 Cobol
OVERVIEW OF PROJECT PLAN Page 1-2
OVERVIEW OF PROJECT PLAN
Course, and a Systems Manager's Course. These courses
provided us with a firm but very broad understanding of the
Vax and its capabilities. We are expanding this knowlege
through the process of solving specific problems we know to
exist as will be explained later as a seperate task.
2. Provide training for other members of programming staff
Provide training for other members of programming staff
This initially will consist of ensuring that all
necessary personnel attend formal training courses. However
this responsiblity will grow as we get further into the
conversion process. The basic reason for this is that the
formal courses in Bedford are forced to cover a very great
deal of material in a relatively short period of time. Thus
the conversion team feels it is necessary to complement this
training with our own internal mini-presentaions. These
presentaions will be meant to serve as a medium for sharing
vital details necessary to us that might have been overlooked
by the formal training. They are not meant to and cannot
serve as a substitute for 'hands-on' experience, but will be
an open forum for the presentation and discussion of the Vax
software tools available to us. We will also prepare written
documentaion of information we feel will be helpful to the
programming staff. A copy of all this documentation will be
included in a seperate chapter.
3. Investigate other Dec Vax sites
Investigate other Dec Vax sites
Since our MIS group started off generally lacking Vax
expertise, we found it necesary to look around the general
Digital community looking for groups who had gone through
some type of conversion process or simply had any Vax
experience or advice they could offer. Although so far we
have been unable to find any groups who have had experience
with a converion project of the size we are undertaking, we
were able to find many users who offered us valuable advice.
We are continuing to pursue this task actively.
4. Determine Structure of Major Master Files
Determine Structure of Major Master Files
We identified three main master files that currently
existed to support our Purchasing applications. In order for
these systems to continue to exist and continue to support
our users, we realized that we needed to develop a comparable
database on our new Vax. The three files we identified were
the Master-Parts File, the Bill-Of-Material File, and the
Vendor-Master File which all existed on the Decsystem-10 as
random access files. Initially because of time
considerations we did not consider Vax-11 DBMS as an
alternative for our implementation. We narrowed our decision
to a choice between relative and indexed RMS file structures.
A full discussion of this is found in a chapter entitled
'MASTER FILES'.
5. Determine Necessary Software for Vax
Determine Necessary Software for Vax
We compiled a list of all software we thought would be
applicable for our Vax environment. Not all of it was
immediatley necessary but we thought it would be a good
OVERVIEW OF PROJECT PLAN Page 1-3
OVERVIEW OF PROJECT PLAN
investment for the future. A seperate chapter has been
devoted to this subject.
6. Evaluation of 1032 vs DATATRIEVE
Evaluation of 1032 vs DATATRIEVE
In migrating our application systems from a Decsystem-10
to a Vax-11/780, we are faced with the problem of reproducing
the functionality that our users both required and enjoyed
with their previous systems. This includes machine interface
in terms of user-friendly screens and data retrieval
capabilities. Corporate Purchasing utilized 1022 to a great
extent on the DECsystem-10. Comparable functionality was
available through two products on the Vax, 1032 and
Datatrieve. Our decision around this is discussed at length
in a seperate chapter.
7. Assist Data-Center
Assist Data-Center
The Data Center for Corporate Purchasing has not as yet
been fully staffed. Because of this, this team is needed to
assist the Data Center in such areas as software selection,
designing security around user-accounts, designing security
around Common Data Dictionary Directories, designing
system-specific startup and login files, getting network
availability on the Digital Business Network, and general
support. We will be working with the Data Center Staff
during the installation of our software and attending a
DEC-START seminar presented by Internal Software Services.
These general tasks will be documented in a seperate chapter
as the specifics are accomplished.
8. Write Menu-Driven Front-End System for Vax
Write Menu-Driven Front-End System for Vax
The user community of Corporate Purchasing was used to
and very much liked a front-end system that existed on the
Decsystem-10. The source code of this system, which belonged
to the spec-control group, was unavailable to us for security
reasons. We thus undertook the project of writing our own
front-end system for our Vax. The details of this project
are left for another chapter.
CHAPTER 2
DOCUMENTATION AND TRAINING
DOCUMENTATION AND TRAINING
2.1 PURPOSE AND USE OF TENVAX
PURPOSE AND USE OF TENVAX
The DECsystem-10 does not write tapes in a standard ANSI labelled
format that is recognizable by the Vax/Vms operating system. Thus any
tapes written on the Dec-10 using Backup or Copy will not be able to
be read by the Vax. In order to solve this problem, a utility was
written which will easily transfer data files between a Dec-10 and a
Vax. Tenvax can copy files from a Dec-10 disk structure to a Vax/Vms
Tenvax can copy files from a Dec-10 disk structure to a Vax/Vms
formatted tape. It can also copy files from a Vax/Vms formatted tape
formatted tape
to a Dec-10 disk structure. (This document will only cover
transferring files from the Dec-10 to the Vax). The only restriction
The only restriction
for this is that files be written in an Ascii format with no imbedded
for this is that files be written in an Ascii format with no imbedded
computational fields. These files may contain fixed or variable
computational fields. These files may contain fixed or variable
length records and may span more that one tape volume. A detailed
length records and may span more that one tape volume
discussion of the use of Tenvax follows.
As is mentioned above some preperation of a file may be required
before it is transferred through Tenvax. Cobol programs should have
no line-numbers which might have been left on by an editor. It is not
the end of the world if line numbers are left on; nevertheless you
will save yourself needless work in removing them on the Vax side if
you make sure they are removed initially. Data files which contain
Comp fields however are quite a different story. A field in a
A field in a
Computational format cannot be directly brought over from the Dec-10
Computational format cannot be directly brought over from the Dec-10
to the Vax. This is primarily because of the difference in word
to the Vax. This is primarily because of the difference in word
length between the two machines. Also the blocking factor of the
length between the two machines. Also the blocking factor of the
files should be changed to 0 (i.e un-blocked files) before any attempt
files should be changed to 0 (i.e un-blocked files) before any attempt
is made to bring them over.
is made to bring them over
A detailed example of transferring a Cobol program (MYPROG.CBL)
and two data files (FILE1.DAT and FILE2.DAT) follows. The program
contains no line numbers. The first data file(FILE1.DAT) is sixbit,
block 2, and contains no Comp Fields. The second data file(FILE2.DAT)
is Sixbit, block 10, and does contain Comp fields. Both data files
contain fixed length 250 character records and are assumed to be in
sequential or random-access organization. If you wish to transfer an
indexed file, the examples below would have to be changed to reflect
this (access mode is indexed....move low-values to key...etc.. or
pack the ISAM file depending upon the existence of comp fields).
DOCUMENTATION AND TRAINING Page 2-2
DOCUMENTATION AND TRAINING
1. Prepare files for Tenvax
Prepare files for Tenvax
Since the file MYPROG.CBL contains no line numbers, it
requires no preparation. A data file which contains Comp
A data file which contains Comp
fields or is Sixbit or has a blocking factor other than 0
fields or is Sixbit or has a blocking factor other than 0
does require preparation. FILE1.DAT contains no Comp Fields.
does require preparation. FILE1.DAT contains no Comp Fields.
Thus this file can be converted with a system-utility called
Thus this file can be converted with a system-utility called
CIP. The following sequence of commands converts the file
CIP
FILE1.DAT(block 2, sixbit, record 250) to FILE1.VAX (block 0,
ascii, record 250).
1. RUN PUB:CIP
*PUR8:FILE1.VAX_PUR8:FILE1.DAT
blocking for input file: 2
mode of input file: S
blocking for output file: 0
mode of input file: A
record size: 250
2400 records copied
*^c
It is critical to note that the above process worked
It is critical to note that the above process worked
because FILE1.DAT contained no COMP fields. If CIP is used
because FILE1.DAT contained no COMP fields. If CIP is used
for files which do contain COMP fields, these fields will
for files which do contain COMP fields, these fields will
remain as computational in the output file and the Vax will
remain as computational in the output file and the Vax will
not understand them. The second file we must transport
not understand them. The second file we must transport
(FILE2.DAT) is just such a file. In order to transport this
(FILE2.DAT) is just such a file. In order to transport this
file, a Cobol program should be written to sequentially read
file, a Cobol program should be written to sequentially read
the file and write a block 0, Ascii file that contains no
the file and write a block 0, Ascii file that contains no
Comp fields. An example follows:
Comp fields
2. IDENTIFICATION DIVISION.
PROGRAM-ID. FILCVT.
AUTHOR. Rick Farrenkopf
DATE-WRITTEN. MAY 13,1983
REMARKS. Dec-10 TO Vax Conversion.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. DECsystem-10.
OBJECT-COMPUTER. DECsystem-10.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE
ASSIGN TO DSK001
ACCESS MODE IS SEQUENTIAL
RECORDING MODE IS SIXBIT.
SELECT OUTPUT-FILE
ASSIGN TO DSK002
ACCESS MODE IS SEQUENTIAL
RECORDING MODE IS ASCII.
DATA DIVISION.
FILE SECTION.
FD INPUT-FILE
BLOCK CONTAINS 10 RECORDS
RECORD CONTAINS 250 CHARACTERS
LABEL RECORDS ARE STANDARD
VALUE OF IDENTIFICATION IS "FILE2 DAT"
DATA RECORD IS INPUT-FILE-RECORD.
01 INPUT-FILE-RECORD.
DOCUMENTATION AND TRAINING Page 2-3
DOCUMENTATION AND TRAINING
02 INPUT-1 PIC 9(4) USAGE IS COMP.
02 INPUT-2 PIC 9(6) USAGE IS COMP.
02 INPUT-3 PIC X(238).
FD OUTPUT-FILE
BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 248 CHARACTERS
LABEL RECORDS ARE STANDARD
VALUE OF IDENTIFICATION IS "FILE2 VAX"
DATA RECORD IS OUTPUT-FILE-RECORD.
01 OUTPUT-FILE-RECORD.
02 OUTPUT-1 PIC 9(4).
02 OUTPUT-2 PIC 9(6).
02 OUTPUT-3 PIC X(238).
|
|
V
PROCEDURE DIVISION.
OPEN-FILES.
OPEN INPUT INPUT-FILE.
OPEN OUTPUT OUTPUT-FILE.
LOOP.
READ INPUT-FILE AT END,
GO TO END-OF-PROGRAM.
MOVE INPUT-1 TO OUTPUT-1.
MOVE INPUT-2 TO OUTPUT-2.
MOVE INPUT-3 TO OUTPUT-3.
WRITE OUTPUT-FILE-RECORD.
GO TO LOOP.
END-OF-PROGRAM.
CLOSE INPUT-FILE.
CLOSE OUTPUT-FILE.
STOP RUN.
We now have 3 file ready to be brought over. They are
MYPROG.CBL, FILE1.VAX, and FILE2.VAX. One should note the
difference in record length between the input and output file
(250 and 248 characters respectively). This difference is
caused by the fact that the input file has comp fields and
the output file does not.
2. Mount an IT scratch tape
Mount an IT scratch tape
.MOUNT MTA:TAPE/VID:"1600 BPI IT SCRATCH TAPE FOR RICK"/WE
3. Copy files to tape with Tenvax
Copy files to tape with Tenvax
.R TENVAX
Welcome to TENVAX, version 2.0. Type HELP for assistance.
Tape Drive: TAPE:
... at beginning of volume
TENVAX function: WRITE
Files: MYPROG.CBL,FILE1.VAX,FILE2.VAX
Block Size <8192>: <cr>
... at beginning of volume, assuming new volume set
Volume Set Name <NONAME>: RICK
Volume Set Tape Density <1600>: <cr>
... writing PUR8:MYPROG.CBL[4040,20273]
... writing PUR8:FILE1.VAX[4040,20273]
DOCUMENTATION AND TRAINING Page 2-4
DOCUMENTATION AND TRAINING
... writing PUR8:FILE2.VAX[4040,20273]
... at end of volume set
TENVAX function: REWIND
... at beginning of volume
TENVAX function: DIRECT
Files <*.*>: <cr>
... searching tape
... volume RICK
MYPROG. CBL 13-MAY-83
FILE1. VAX 13-MAY-83
FILE2. VAX 13-MAY-83
... at end of volume set
TENVAX function: REWIND
... at beginning of volume
TENVAX function: EXIT
.DISMOUNT/RELEASE TAPE:
4. Copy files onto Vax at NR02
Copy files onto Vax at NR02
After you are finished with the above step, you should
request that the tape be sent to you through the mail. You
should then clearly mark on the tape the volume set name
(internal label of tape), the density, your name, your DTN,
the fact that it was written with TENVAX, and the area on the
Vax you wish the files to be copied. You may then give them
to me and I will take them up to NR02 for you. You should
then allocate a tape drive with the following command:
$ ALLOCATE MFA0: (NR02 has 2 drives MFA0 and MFA1)
You should then call the NR02 Data Center at Ext. 4225 or
4496 and request that your tape be mounted on the tape drive
that you have allocated. You should then issue the following
commands:
$ MOUNT MFA0: RICK TAPE: (RICK=vol-label; TAPE:=log-name)
$ COPY TAPE:*.* [RICK]*.*
$ DISMOUNT TAPE:
$ DEALLOCATE MFA0:
These commands copy all of the files from the tape TAPE: to
the user-area [RICK].
5. Replace Computational fields
Replace Computational fields
If you want to replace the Comp fields you took out, you
should write another program similar to the one above to do
this.
The files you will end up with on the Vax will be RMS sequential
The files you will end up with on the Vax will be RMS sequential
files. If you wish to convert them to RMS relative or indexed
files. If you wish to convert them to RMS relative or indexed
organizations, you should use the FDL(File Definition Language)
organizations, you should use the FDL(File Definition Language)
utilities to accomplish this. This topic will be covered in a
utilities to accomplish this. This topic will be covered in a
DOCUMENTATION AND TRAINING Page 2-5
DOCUMENTATION AND TRAINING
seperate document. However, I feel it necessary to comment on one
seperate document
aspect of FDL utilities here. Tenvax by default produces variable
length 8188 byte records (in other words very long records mostly
padded with spaces.) A Cobol program can handle this fine but
Datatrieve seems to have problems. If you wish to use the file
directly out of Tenvax, I recommend the following:
1. Determine actual length of record in bytes
2. Create Fdl file for fixed length records
This step will be talked about in a seperate document in
more detail. In this step, you need to create an FDL file
specifying that your output file fixed length records of a
certain length.
3. Create output file with above specifications.
CONVERT/FDL=OUTPUT.FDL/TRUNCATE/EXCEPTIONS INPUT.VAR OUTPUT.FIX
CONVERT/FDL=OUTPUT.FDL/TRUNCATE/EXCEPTIONS INPUT.VAR OUTPUT.FIX
This step copies long variable length records from
input.var to fixed length records in output.fix. This
effectively truncates spaces which were padded at the end of
the records by Tenvax. By doing a file comparison
(differences) between input.var and output.fix, you should
see that these files are reported as identical (differences
ignores trailing spaces).
The entire process of TENVAX assumes that no network link from
our Dec-10 at PDCF: to our Vax exists. When a network link does
become available, the Tenvax step may be eliminated.
2.2 DIGITAL COMMAND LANGUAGE
DIGITAL COMMAND LANGUAGE
2.2.1 User Authorization File
User Authorization File
1. User Name
User Name
One to twelve characters naming a record in the user
authorization file. Each username on a system must be
Each username on a system must be
unique.
unique
2. Password
Password
One to thirty-one phantom characters controlling access
to system.
3. User Identification Code
User Identification Code
Two octal numbers between 0 and 377 separated by comma
and enclosed in brackets in format [100,200] or
[GROUP,MEMBER]. The UIC is used to determine your right to
access data files or to communicate with other processes on
your system. System UICs are by default between [0,x] and
[10,x]. Usually each user has a unique UID.
DOCUMENTATION AND TRAINING Page 2-6
DOCUMENTATION AND TRAINING
4. Process Name
One to fifteen characters identifying your process to
other users. Usually your process is the same as your
username.
5. Account Name
One to eight characters identifying users whose computer
usage is combined for billing purposes.
6. Privileges
Privileges
This is a list of protected system operations you are
allowed to perform.
7. Resource Limits
Resource Limits
Decimal integers determining how much of certain system
resources you can consume.
8. Default Device and Directory Specification
Default Device and Directory Specification
Names the device and directory where by default you keep
your files. Each user typically has his own default
directory.
2.2.2 File Specification
File Specification
Node::Device:[Directory]Name.Typ;Version
Node::Device:[Directory]Name.Typ;Version
Node 1 to 6 characters
Device 4 to 16 characters
Directory 1 to 9 characters
Name 0 to 9 characters
Type 0 to 3 characters
Version integer, 1 to 32767
2.2.3 Three Levels Of Protection
Three Levels Of Protection
1. Volume Protection
Volume Protection
2. Directory Protection (System,Owner,Group,World)
Directory Protection (System,Owner,Group,World)
3. File Protection (System,Owner,Group,World)
File Protection (System,Owner,Group,World)
The default protection for files is (S:RWED,O:RWED,G:RWED,W:RE).
The default protection for directories is (S:RWE,O:RWE,G:RWE,W:RE).
In order to delete a directory, you need both D and W.
DOCUMENTATION AND TRAINING Page 2-7
DOCUMENTATION AND TRAINING
System Group = 0 to 10 (octal) Member = does not matter
Owner Group = match group UIC of file Member = match member
Group Group = match group UIC of file Member = does not matter
World Group = does not matter Member = does not matter
Read File = type,copy,etc. Directory = find files with wildcard
Write File = update file Directory = can create files in dir
Execute File = run file,not copy Directory = need exact name for dir
Delete File = delete file Directory = can delete dir
(execute does not allow copy;read implies execute)
EDT needs only Read to edit a file since it creates a new copy of it.
You should protect files against delete and directories against write
You should protect files against delete and directories against write
Each disk has an MFD that catalogs all user file directories
Each disk has an MFD that catalogs all user file directories
(UFD's). Your default directory is one of many UFDs. It catalogs
(UFD's)
files and subdirectories. Subdirectories catalog files and
subdirectories. Up to eigth levels of directories are possible.
MFD ______________
level 0 | 000000 |
---------------
|
-------------------------------------
| |
------------ -------------
UFD | RICK | | CHARLIE |
level 1 ------------- -------------
|
------------
SFD | RICK.COBOL |
level 2 -------------
2.2.4 Logical Names
Logical Names
Logical names are composed of 1 to 63 characters and are
Logical names are composed of 1 to 63 characters and are
primarily used to achieve device and file independence in programs and
primarily used to achieve device and file independence in programs and
convenience. There are three logical names tables: Process, Group,
convenience. There are three logical names tables: Process, Group,
and System. Through the Group and System logical name tables, logical
and System. Through the Group and System logical name tables, logical
names can be retained even after the process defining them terminates.
names can be retained even after the process defining them terminates.
They never require a substitution operator (see symbols) except for a
They never require a substitution operator (see symbols) except for a
colon (:) if the logical name is the left part of a file specification
colon (:) if the logical name is the left part of a file specification
( $ TYPE COB:PROGRAM.COB)
( $ TYPE COB:PROGRAM.COB)
DEFINE Logical-name Equivalence-name
DEFINE Logical-name Equivalence-name
DEFINE COB SYS$SYSDEVICE:[COBOL.PROGRAMS]
DEFINE COB SYS$SYSDEVICE:[COBOL.PROGRAMS]
DEASSIGN Logical-name
DEASSIGN Logical-name
SHOW LOGICAL/process or group or system
SHOW LOGICAL Logical-name Runs program. Recursive tranlation
SHOW TRANSLATION Logical-name Runs no program. No recursion
Do not put colons in logical name definitions.
You can only use one logical name for a file specification. In
other words, the following is illegal:
DEFINE THERE [RICK]
DOCUMENTATION AND TRAINING Page 2-8
DOCUMENTATION AND TRAINING
DEFINE FILE A.DAT
DIRECT THERE:FILE
2.2.5 Symbols
Symbols
Symbols are primarily used for command synonyms. Each process
stores symbols in one of two tables: local and global. Symbols are
Symbols are
always process private and are deleted when the process terminates.
always process private and are deleted when the process terminates.
Symbols may require various substitution operators depending on how a
particular symbol is used. Symbols get values in four possible ways:
1. PATH = "SET DEFAULT" or FOO = 7
PATH = "SET DEFAULT" FOO = 7
2. INQUIRE FOO
INQUIRE FOO
3. @ COMPROC FOO (P1 -> P8)
@ COMPROC FOO (P1 -> P8)
4. READ FILE FOO (local only)
READ FILE FOO
Path == "SET DEFAULT" Global symbol
A = 2 Local symbol
SHOW SYMBOLS/LOCAL
SHOW SYMBOLS/GLOBAL
DELETE/SYMBOL/LOCAL symbol
DELETE/SYMBOL/GLOBAL symbol
There are four places where DCL expects to find a symbol. In the
following examples, the highlited areas are expected to be symbols:
1. PATH RICK
PATH
Path is here the first text on a command line. Dcl
expects to find a symbol here (a command synonym symbol).
Dcl looks in its symbol table for the symbol automatically.
2. IF ANSWER THEN ...
ANSWER
For example, IF ANSWER .EQS. "YES" THEN ...
3. A = FOO
FOO
Foo here is expected to be a symbol. If you say A = 4,
DCL is smart enough to not require 3 to be a symbol;thus the
number 3 is assigned to A. In this example, foo must be a
symbol or else you would need quotes.
4. WRITE SYS$OUTPUT ANSWER
ANSWER
If you want text output, you must use quotes eg. WRITE
SYS$OUTPUT "HELLO"
Everywhere else, the system does not expect a symbol. If you
want something interpreted as a symbol, you must use an apostrophe(').
X = "FILE.DAT;"
"
DELETE X
This does not work since DCL does not expect a symbol here.
This does not work
DOCUMENTATION AND TRAINING Page 2-9
DOCUMENTATION AND TRAINING
DCL expects a file specification here.
DELETE 'X'
The apostrophes force symbol substitution where DCL would
normally do none.
DEFINE X FILE.DAT;
DELETE X
D
This works because DCL expects a file specification after a
This works
DELETE. Since a logical name is a substitute for a file
name ... we're ok.
The order of symbol translation is as follows:
1. Apostrophe Substitution
2. Command Synonym Substitution
3. Automatic Expression Evaluation
For example, consider the following:
SAY = "WRITE"
PLACE = "SYS$OUTPUT"
MESSAGE = "HELLO"
SAY 'PLACE' MESSAGE,"RICK"
SAY SYS$OUTPUT MESSAGE,"RICK"
WRITE SYS$OUTPUT MESSAGE,"RICK"
WRITE SYS$OUTPUT "HELLO","RICK"
2.2.6 Sample Login.Com File
Sample Login.Com File
$ SET NOVERIFY
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The following command procedure defines logical names and symbols for
! processes created by [RICK]. The procedure displays information about the
! current process and the exits.
! If the current procedure is executing as a batch job, this command
! procedure is ignored.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$ IF F$MODE() .EQS. "BATCH" THEN GOTO END
$
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Define logical names:
$
$ DEFINE EDTINI [RICK]EDTINI.EDT
$ DEFINE CDD$DEFAULT CDD$TOP.TYMSHR.RICK
$
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$
! Define command synonym symbols
$
$ CLEAN*UP == "@[RICK.COMPROC]CLEANUP.COM"
$ C*LEAR == "TYPE [RICK]CLEAR.SCR"
$ COB*OL == "COBOL/LIST/MAP/COPY_LIST"
DOCUMENTATION AND TRAINING Page 2-10
DOCUMENTATION AND TRAINING
$ COMP*ILE == "@[RICK.COMPROC]COMPILE.COM"
$ COP*Y == "COPY/LOG"
$ DA*Y == "SHOW DAYTIME"
$ DEL*ETE == "DELETE/CONFIRM"
$ DI*RECTORY == "DIRECTORY/OWNER/PROTECTION/SIZE=USED"
$ DISPLAY == "WRITE SYS$OUTPUT"
$ DTR == "MCR DTR32"
$ DKILL == "DELETE/NOCONFIRM"
$ EDT == "EDIT/EDT"
$ ER*ASE == "TYPE [RICK.REGIS]CLEAR.REG
$ FED == "MCR FED"
$ FUT == "MCR FUT"
$ K*JOB == "@[RICK.COMPROC]KJOB"
$ LI*BRARY == "LIBRARY/TEXT"
$ LIST == "@[RICK.COMPROC]TYPE"
$ NET*WORK == "SHOW NETWORK"
$ ON == "TYPE [RICK]ON.VT
$ OFF == "TYPE [RICK]OFF.VT
$ PA*TH == "@[RICK.COMPROC]PATH"
$ PJ == "SHOW PROCESS"
$ PRI*NT == "PRINT/NAME=NR05/NOTIFY"
$ REV == "TYPE [RICK]REV.VT
$ REVOFF == "TYPE [RICK]REVOFF.VT
$ SOS == "EDIT/SOS"
$ SU*BMIT == "SUBMIT/NOTIFY/NOPRINT"
$ WH*O == "SHOW USERS"
$
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$ SET CONTROL=T
$ SET TERMINAL/VT100
$ SET PROTECTION = (S:R,O:RWED,G:RE,W:R)/DEFAULT
$ TYPE CLEAR.SCR
$ REV
$
$
$ END:
$ EXIT
2.3 VAX-11 RECORD MANAGEMENT SERVICES
VAX-11 RECORD MANAGEMENT SERVICES
Vax-11 RMS disk files reside on Files-11 disks. The term
Files-11 refers to the logical structure given to the disk: a
hierarchical organization of files, their data, and the directories
needed to gain access to them. The VAX/VMS file system implements the
disk structure and provides access control to the files located on the
disk. VAX-11 RMS provides the organization of the files and the
method of access to the data within the files.
A Vax-11 RMS file is a collection of logically related records
that are treated as a unit and arranged in a useful order. For disk
For disk
files, the smallest unit of transfer between Vax-11 RMS buffers and
files, the smallest unit of transfer between Vax-11 RMS buffers and
the disk is a block. Two or more blocks can be grouped together to
the disk is a block. Two or more blocks can be grouped together to
form buckets. A bucket is a storage structure consisiting of from 1
form buckets. A bucket is a storage structure consisiting of from 1
to 32 blocks, which is used for building and processing relative and
to 32 blocks, which is used for building and processing relative and
indexed files.
indexed files.
DOCUMENTATION AND TRAINING Page 2-11
DOCUMENTATION AND TRAINING
The manner in which RMS builds a files is called is organization.
The manner in which RMS builds a files is called is organization.
RMS provides three different file organizations: Sequential,
RMS provides three different file organizations: Sequential,
Relative, and Indexed. File organization determines the physical
Relative, and Indexed
arrangement of records in a file. File organization is related to,
but distinct from, the record access mode. The latter is concerned
with the manner in which the records in the file are inserted and
retrieved. The purpose of file organization is to arrange the records
in an orderly manner so that you can access them in the quickest and
most feasible way. You can select the type of file organization at
You can select the type of file organization at
file-creation time; it cannot be changed therafter.
file-creation time; it cannot be changed therafter.
2.3.1 File Organization
File Organization
2.3.1.1 Sequential File Organization -
Sequential File Organization
Records appear in consecutive sequence. The order in which
records appear is the order in which the records were originally
written to the file by an application program or RMS utility. You can
only add records to the end of the file.
2.3.1.2 Relative File Organization -
Relative File Organization
RMS structures the files as a series of fixed-size record cells.
Cell size is based on the maximum length permitted for a record in the
file. These cells are numbered from 1 (the first) to n (the last). A
cell's number represents its location relative to the beginning of the
file. Each cell in a relative file can contain a single record.
There is no requirement however that every cell contain a record.
Empty cells can be interspersed among cells containing records.
--------------------------- ------
|record|record| | | ... |record|
| 1 | 2 | empty| empty| | n |
--------------------------- ------
Since cell numbers in a relative file are unique, they can be
used to identify both a cell and the record (if any) occupying that
cell. Thus record #1 occupies the first cell in the file, record #6
occupies the sixth cell, etc. When a cell number is used to identify
a record, it is also known as a relative record number.
To access a record in a relative file in a random mode (I will
To access a record in a relative file in a random mode (I will
discuss modes of access later), you must know the relative record
discuss modes of access later), you must know the relative record
number (key) of the record. One method of keeping track of each
number (key) of the record. One method of keeping track of each
record's cell is to store records using a numeric value within the
record's cell is to store records using a numeric value within the
record. For example, you could make an account number equivalent to
record. For example, you could make an account number equivalent to
the relative record number. Although each record in a relative file
the relative record number
is assigned to a fixed-length cell, the actual size of the individual
records can vary in length (that is, different size records can be in
the same file).
DOCUMENTATION AND TRAINING Page 2-12
DOCUMENTATION AND TRAINING
2.3.1.3 Indexed File Organization -
Indexed File Organization
The location of records in the indexed file organization is
transparent to the program. RMS completely controls the placement of
records in an indexed file. The presence of keys in the records of
the file governs this placement. A key is a field that is present in
A key is a field that is present in
every record of the file. The location and length of this field is
every record of the file. The location and length of this field is
identical in all records. When creating an indexed file, the user
identical in all records. When creating an indexed file, the user
decides which field or fields in the file's records are to be a key.
decides which field or fields in the file's records are to be a key.
Selecting such fields indicates to RMS that the contents (ie key
Selecting such fields indicates to RMS that the contents (ie key
value) of those fields in any particular record written to the file
value) of those fields in any particular record written to the file
can be used by a program to identify that record for subsequent
can be used by a program to identify that record for subsequent
retrieval. A key is a field within each record definded by its
retrieval. A key is a field within each record definded by its
location and length. A key can be a character string, a packed
location and length. A key can be a character string, a packed
decimal number, a 2 or 4 byte unsigned binary number, or a 2 or 4 byte
decimal number, a 2 or 4 byte unsigned binary number, or a 2 or 4 byte
signed integer. When identifying the location and length of character
signed integer
string keys, you can define simple or segmented keys. A simple key is
segmented keys
a single contiguous string of characters in the record. Integer,
binary, and packed decimal keys are always simple keys. A segmented
key, however, can consist of from two to eight strings; these strings
do not need to be contigous. When processing records that contain
segmented keys, Vax-11 RMS treats the seperate segments as a logically
contigous string. At least one key must be defined for an indexed
At least one key must be defined for an indexed
file...the primary key. Optionally additional keys (alternate keys)
file...the primary key. Optionally additional keys (alternate keys)
can be defined. An alternate key value can also be used as a means of
can be defined. An alternate key value can also be used as a means of
identifying a record for retrieval. Each alternate key is also
identifying a record for retrieval. Each alternate key is also
defined by its location and length within the record.
defined by its location and length within the record.
As programs write records into and indexed file, RMS builds a
tree-structured table known as an index. An index consists of a
series of entries each of which contain a key value copied from a
record that a program wrote into the file. Stored within each key
value is a pointer to the location in the file of the record from
which the value was copied. RMS builds and maintains a seperate index
RMS builds and maintains a seperate index
for each key defined for the file. An index is the structure that
for each key defined for the file. An index is the structure that
allows the records to be retrieved randomly. Each index is stored in
allows the records to be retrieved randomly. Each index is stored in
the file.
the file.
Primary Key Values
-------------------------
| | | | | | |
-------------------------
/ \
/ \ ___________
/ ------| Data |
---------- | Record |
! Data | ----------
| Record |
---------
There are three key characteristics you can define for a primary
or secondary key. The first is whether duplicate values are allowed
for the key value (you can specify this for a primary or secondary
key). The second is whether the value of the keyed fields can be
changed (you can specify this only for a secondary key). The third
characteristic you can set is whether the value for the key can be
null (you can specifiy this only for an alternate key).
DOCUMENTATION AND TRAINING Page 2-13
DOCUMENTATION AND TRAINING
1. Duplicate values allowed for Primary and Secondary key
Duplicate values allowed for Primary and Secondary key
2. Values for Alternate keys can change
Values for Alternate keys can change
3. Values for Alternate keys can be null
Values for Alternate keys can be null
When you specify that duplicate key values are allowed, you
When you specify that duplicate key values are allowed, you
indicate that more that one record in an indexed file can have the
indicate that more that one record in an indexed file can have the
same value for that key. Such records, therefore, have the same
same value for that key. Such records, therefore, have the same
record identifier. Only the first record with a duplicate key value
record identifier. Only the first record with a duplicate key value
can be retrieved randomly; subsequent records must be retrieved
can be retrieved randomly; subsequent records must be retrieved
sequentially. This capability is applicable only to indexed files.
sequentially. This capability is applicable only to indexed files.
In Relative files, the record identifier that represents a relative
In Relative files, the record identifier that represents a relative
record number is always unique.
record number is always unique.
When you specify that key values can change, you indicate that
records can be updated with a modified value in the key; however,
this characteristic is limited to alternate keys.
The third key characteristic that you can specify is the null-key
value, which indicates that when the record is put into the file, the
key value may be a null value. This characteristic is also limited to
alternate keys.
You can also declare the opposite of these characteristics; that
is, you can specify that for a given key, duplicate key values are not
allowed, key values cannot change, and there is no null value. When
When
duplicate key values are not allowed, Vax-11 RMS rejects any request
duplicate key values are not allowed, Vax-11 RMS rejects any request
to put a record into the file when that record contains a key value
to put a record into the file when that record contains a key value
that is already present in another record. Similary, when key values
that is already present in another record
cannot change, Vax-11 RMS does not allow your program to update a
record by modifying the key value. Records whose keys cannot be null
values always have an entry in the appropriate alternate index.
Vax-11 RMS uses a logical storage structure called a bucket for
Vax-11 RMS uses a logical storage structure called a bucket for
building and processing relative and indexed files. A bucket, which
building and processing relative and indexed files. A bucket, which
is a unit of contiguous transfer between Vax-11 RMS buffers and the
is a unit of contiguous transfer between Vax-11 RMS buffers and the
disk, can contain from 1 to 32 blocks. You specifiy the number of
disk, can contain from 1 to 32 blocks. You specifiy the number of
blocks in a bucket when you build the file. Since buckets are units
blocks in a bucket when you build the file. Since buckets are units
of transfer, large buckets help provide good disk throughput for
of transfer, large buckets help provide good disk throughput for
sequential operations, but require more buffer space in programs that
sequential operations, but require more buffer space in programs that
process them. These buffers are areas of internal memory that Vax-11
process them
RMS uses to read and write blocks of data. Record processing under
RMS appears to your program as the movement of records directly
between a file and the program itself. This is in fact not the case.
Transparently to your program, Vax-11 RMS reads and writes blocks or
buckets of a files into or from an I/O buffer. Records within the
buffer are then made available to the program. The transfer of data
The transfer of data
between a file and I/O buffers depends on the file's organization.
between a file and I/O buffers depends on the file's organization.
For sequential files, RMS reads and writes a block or series of
For sequential files, RMS reads and writes a block or series of
blocks. For relative and indexed files, RMS reads and writes buckets.
blocks. For relative and indexed files, RMS reads and writes buckets.
When processing indexed files, you cannot insert records into a
full bucket. Doing this will cause a bucket split which results in
bucket split
additional overhead. To avoid bucket splits, you can specify that the
initial loading of records will not completely fill the data or index
buckets. You should do this if you know that your application will
require random insertions into the database.
DOCUMENTATION AND TRAINING Page 2-14
DOCUMENTATION AND TRAINING
2.3.2 Record Access Modes
Record Access Modes
A record access mode is the method of inserting and retrieving
A record access mode is the method of inserting and retrieving
records in a file. Access mode is different from file organization,
records in a file. Access mode is different from file organization,
which is the physical arrangement of records in the file. Vax-11 RMS
which is the physical arrangement of records in the file. Vax-11 RMS
provides three record access modes: sequential, random by
provides three record access modes: sequential, random by
key-value/relative record-number, and random by record file address.
key-value/relative record-number, and random by record file address.
Although you cannot change the file organization once it is
Although you cannot change the file organization once it is
established at file-creation time, you can change the record access
established at file-creation time, you can change the record access
mode each time the file is used. This means, for example, that a
mode each time the file is used
relative file can be processed in sequential record access mode one
time and in random by key (relative record number) record access mode
the next time.
----------------------------------------------------------
| Record Access | File |
| Mode Permitted | Organization |
|---------------------|----------------------------------|
|---------------------|----------------------------------|
| | Sequential | Relative | Indexed |
----------------------------------------------------------
| Sequential | Yes | Yes | Yes |
----------------------------------------------------------
| Random by Relative | | | |
| Record Number | No | Yes | No |
----------------------------------------------------------
| Random by Key Value | No | No | Yes |
----------------------------------------------------------
| Random by Record's | | | |
| File Address | Yes | Yes | Yes |
----------------------------------------------------------
2.3.2.1 Sequential Access -
Sequential Access
In sequential access, record storage or retrieval starts at a
designated point in the file and continues through the file. When
using the sequential record access mode, a program issues a series of
requests to Vax-11 RMS to retrieve or store the next record in the
file.
2.3.2.1.1 Sequential Access To Sequential Files -
Sequential Access To Sequential Files
In a sequential file, record are adjacent to each other. To read
a particular record within the file using sequential access mode, your
program must open the file and successively read the records preceding
this record. Each record can be retrieved only by first retrieving
Each record can be retrieved only by first retrieving
all the records that physically precede it. Sequential access does
all the records that physically precede it
not allow you to backspace to a record that was already passed. You
have to restart at the first record by either reopening or rewinding
the file, or by switching access modes. In addition, you can add
records only to the end of the file.
DOCUMENTATION AND TRAINING Page 2-15
DOCUMENTATION AND TRAINING
2.3.2.1.2 Sequential Access To Relative Files -
Sequential Access To Relative Files
Relative files also permit sequential access even if some of the
fixed length cells in the file do not contain records. Empty cells,
representing records that were never written or records that were
deleted, can occur in a relative file. Vax-11 RMS recognizes whether
Vax-11 RMS recognizes whether
successive record cells in a relative file are empty or contain
successive record cells in a relative file are empty or contain
records; Vax-11 RMS ignores the empty cells and searches, in
records; Vax-11 RMS ignores the empty cells and searches, in
succession, for cells that contain records. When using sequential
succession, for cells that contain records
access for writing records to a relative file, Vax-11 RMS places the
new record in the empty cell whose relative number is one higher than
that used for the previous write or read request. New records cannot
be written into cells that already contain records. If you attempt to
write into a cell already occupied by a record, the attempt will fail.
You can, however, request Vax-11 RMS to update an existing record.
2.3.2.1.3 Sequential Access to Indexed Files
Sequential Access to Indexed Files
In an indexed file, Vax-11 RMS uses one or more indexes to
In an indexed file, Vax-11 RMS uses one or more indexes to
determine the order in which to process records in sequential access
determine the order in which to process records in sequential access
mode. The entries in an index are arranged in ascending order by key
mode. The entries in an index are arranged in ascending order by key
values. Thus, an index represents a logical ordering of the records
values. Thus, an index represents a logical ordering of the records
in the file. If you define more that one key for the file, each index
in the file. If you define more that one key for the file, each index
associated with a key will represent a different logical ordering of
associated with a key will represent a different logical ordering of
the records in the file. Your program, then, can use the sequential
the records in the file. Your program, then, can use the sequential
access mode to retrieve records in the order represented by any index.
access mode to retrieve records in the order represented by any index.
When reading records form an indexed file in sequential mode,
When reading records form an indexed file in sequential mode,
your program must initially specify to Vax-11 RMS a key of reference
your program must initially specify to Vax-11 RMS a key of reference
(for example, primary key, first alternate key, second alternate key,
(for example, primary key, first alternate key, second alternate key,
and so on). Therafter, Vax-11 RMS uses the index associated with that
and so on). Therafter, Vax-11 RMS uses the index associated with that
key of reference to retrieve records in the same sequence as the
key of reference to retrieve records in the same sequence as the
entries in the index. Each successive record that Vax-11 RMS returns
entries in the index
in response to your program's read request contains a value in the
specified key field that is equal to (when duplicate keys are allowed)
or greater than that of the previous record returned.
In contrast to a sequential read request, a sequential write
In contrast to a sequential read request, a sequential write
request to an indexed file does not require a key of reference.
request to an indexed file does not require a key of reference.
Rather, Vax-11 RMS uses the stored definition of the primary key to
Rather, Vax-11 RMS uses the stored definition of the primary key to
place the record in the file and the definition of alternate keys to
place the record in the file and the definition of alternate keys to
place entries for the record in the alternate indexes. When your
place entries for the record in the alternate indexes. When your
program issues a series of sequential write requests, Vax-11 RMS
program issues a series of sequential write requests, Vax-11 RMS
verifies that each successive record contains a key value in the
verifies that each successive record contains a key value in the
primary key field that is equal to or greater than that of the
primary key field that is equal to or greater than that of the
preceding record.
preceding record.
2.3.2.2 Random Access -
Random Access
In random access, your program, not the file organization,
determines the order in which record processing occurs. Each program
Each program
request for a record must include the relative record number (for
request for a record must include the relative record number (for
relative files) or the key of reference plus the key value (for
relative files) or the key of reference plus the key value (for
indexed files) of the particular record to be accessed. Random access
indexed files) of the particular record to be accessed.
is supported for all relative and indexed files. Vax-11 RMS also
DOCUMENTATION AND TRAINING Page 2-16
DOCUMENTATION AND TRAINING
permits random access by relative record number for sequential records
residing on disk devices containing fixed length records.
2.3.2.2.1 Random Access To Relative Files -
Random Access To Relative Files
Unlike sequential access which always follows a
one-record-after-the-other pattern, random access follows no specific
pattern. Your program randomly identifies any record within the file
by means of the relative record number. Vax-11 RMS then retrieves or
inserts that record. Your program may then make successive requests
for accessing or retrieving records from anywhere within the file.
2.3.2.2.2 Random Access To Indexed Files -
Random Access To Indexed Files
Each of your program's get requests in random access mode to an
Each of your program's get requests in random access mode to an
indexed file must specify both a key value and the index that Vax-11
indexed file must specify both a key value and the index that Vax-11
RMS must search (for example, primary index, first alternate key
RMS must search (for example, primary index, first alternate key
index, second alternate key index, and so on). When Vax-11 RMS finds,
index, second alternate key index, and so on)
by means of an index, the record that matches the key value, it reads
the record and passes it to your program. Random access can be
accomplished on any key by any of the following methods.
1. Exact match of key values
Exact match of key values
2. Approximate match of key values
Approximate match of key values
This is a record key value that is either greater than
or equal to your program supplies key value.
3. Generic match of key values
Generic match of key values
Generic match is applicable to string data type keys
only. A generic match is a match of some number of leading
characters in the key. You determine the number by
specifiying a search key smaller than the entire field.
4. Combination of Approximate and Generic Match
Combination of Approximate and Generic Match
In contrast to get requests which require your program-specified
key value, program requests to insert records randomly in an indexed
requests to insert records randomly in an indexed
file do not require the seperate specification of a key value. All
file do not require the seperate specification of a key value. All
keys (primary and any alternate key values) are in the record itself.
keys (primary and any alternate key values) are in the record itself
When an indexed file is opened, Vax-11 RMS retrieves all key
definitions stored in the file. Thus, Vax-11 RMS knows the location
and length of each key field in a record. After writing a record into
After writing a record into
the file, Vax-11 RMS examines the key values in the record and creates
the file, Vax-11 RMS examines the key values in the record and creates
new entries in the appropriate alternate indexes. In this way, Vax-11
new entries in the appropriate alternate indexes. In this way, Vax-11
RMS ensures that the record can be retrieved by any of its key values.
RMS ensures that the record can be retrieved by any of its key values.
DOCUMENTATION AND TRAINING Page 2-17
DOCUMENTATION AND TRAINING
2.3.3 RMS Utilities
RMS Utilities
2.3.3.1 Introduction -
Introduction
The Vax-11 RMS utilities are EDIT/FDL, CREATE/FDL, CONVERT,
EDIT/FDL CREATE/FDL CONVERT
CONVERT/RECLAIM, and ANALYZE/RMSFILE. They let the user design,
CONVERT/RECLAIM ANALYZE/RMSFILE
create, populate, and analyze data files. I will discuss the first
three utilities only as these are the most important.
2.3.3.2 Edit/Fdl -
Edit/Fdl
The FDL editor, EDIT/FDL creates and modifies FDL files. FDL
files provide specifications for Vax-11 RMS data files; these
specifications are then used by certain utilitities to create data
files. The command to invoke FDL is as follows:
EDIT/FDL FDL-FILE-SPEC
The FDL-FILE-SPEC specifies the name of the FDL file to be
created, modified, or optimized.
As is mentioned above, the File Definition Language (FDL) is a
special-purpose language that is used to write specifications for data
files. An FDL file consists of a collection of file attributes
grouped into related sections. The section headings are called
primary attributes. Attributes within a section are called secondary
attributes. Certain secondaries can have a third level of attributes
called qualifiers. A completed FDL file consists of attribute
keywords followed by their assigned values. Lowercase letters are
legal anywhere; they are equivalent to uppercase letters. I will go
over each primary attribute in the following paragraphs.
1. Title Primary Attribute
Title Primary Attribute
This primary attribute is a string that you can place at
the beginning of the FDL file. The character string that you
supply is for comment purposes only and can be up to 132
characters long.
2. Ident Primary Attribute
Ident Primary Attribute
This primary attribute contains the date and time of the
creation of the FDL file and specifies the name of the
creating utility.
3. System Primary Attribute
System Primary Attribute
This primary attribute identifies the name of the
operating system that you are using to create the FDL file.
It takes no value.
4. File Primary Attribute
File Primary Attribute
This primary attribute takes no value. It has several
important secondary attributes.
DOCUMENTATION AND TRAINING Page 2-18
DOCUMENTATION AND TRAINING
1. Name
The NAME secondary attribute is the file
specification of the data file to be created from this
FDL file. If you supply a creating utility with a name
for the data file, that name will override the one
specified here.
2. Organization
Organization
The organization attribute defines the type of file
organization. Its value must be one of the following
keywords: Sequential, Relative, or Indexed.
5. Record Primary Attribute
Record Primary Attribute
The record primary attribute contains secondary
attributes that define records. The record keyword itself
takes no value; it serves only to begin the record section.
1. Carriage-Control
The carriage-control attribute must be one of the
following keyword: carriage-return, fortran, none, or
print. Carriage-return is the default and specifies that
each record is preceded by a line feed and is followed by
a carriage return.
2. Format
Format
The format sets the record format for the data file.
Its value should be either fixed for fixed-length records
fixed
or variable for variable length records.
variable
3. Size
Size
The size attribute sets the maximum record size in
bytes. With fixed-length records, this value is the
length of every record in the file. With variable-length
records, this value is the longest record that can be
placed in the file.
6. Area Primary Attribute
Area Primary Attribute
The area primary takes a value that must be a number in
the range of 0 to 254. The number identifies the area. To
define multiple areas for an indexed file, you must specify a
seperate area section for each area.
1. Allocation
Allocation
The allocation attribute sets the number of blocks
that you will initially allocate from this area. Its
value must be an integer in the range of 0 to
4,294,967,295. The default is 0 which means that the
system will not allocate space for this area.
DOCUMENTATION AND TRAINING Page 2-19
DOCUMENTATION AND TRAINING
2. Best-Try-Contiguous
This is a switch that controls whether the area will
be allocated contiguously if there is enougth space for
it. If the switch is set to yes and there is enough
space for the area, the area will be allocated
contigously. If the switch is set to yes and there is
not enough space, the area is allocated noncontiguously.
If the switch is set to the default of no, the attribute
has no effect.
3. Bucket Size
Bucket Size
The bucket-size attribute sets the number of blocks
per bucket for this area. Its value must be an integer
in the range of 0 to 32. The default value is 0, which
means that the bucket size specified by the current
rms-default will be used.
4. Extension
The extension attribute sets the number of blocks
for the default extension quantity for the area. The
extension is the amount of space that the system will add
to the sequential end of the area when the area is filled
up. The value must be an integer in the range of 0 to
65,535. The default is 0, which means that the extension
size will be determined by the system whenever the area
requires extending.
7. Key Primary Attribute
Key Primary Attribute
The primary attribute key takes a value that must be the
number of the key. The key value for the primary key must be
0. The key value for alternate keys can be numbered from 1
to 254. The most important secondary attributes follow:
1. Changes
Changes
The changes attribute is a switch. When it is set
to yes, it allows a Vax-11 RMS access method to change
the value of the key. Such a change is an error with the
primary key, so the default setting for the primary keys
is no. With alternate keys the default setting is yes,
which allows changes to the key's value.
2. Data-Area
The data-area attribute identifies the area in which
you will place the data records in an indexed file with
multiple areas. The value is an integer in the range of
1 to 254, which must be the same as that assigned to the
area in an area section. This value is used when the
data level and the index levels are placed in seperate
areas, or when each key is placed in its own area.
DOCUMENTATION AND TRAINING Page 2-20
DOCUMENTATION AND TRAINING
3. Data-Fill
Data-Fill
This attribute sets the percentage of the bytes in
each data bucket in this area what you wish populated
initially. If you anticipate that many records will be
inerted randomly into this file, this value should be
less than 100% of the bytes. The default value is 100%
and the minimum value is 50%.
4. Duplicates
Duplicates
The duplicates attribute is a switch that controls
whether duplicate keys are allowed in the indexed files.
For primary keys, the default setting is no, but for
alternate keys the default setting is yes. When this
switch is set to yes, this attribute specifies that there
can be more than one record with the same specific key
value. When this attribute is set to no, duplicate keys
are not allowed, and any attempt to write a record where
the key would be a duplicate will result in an error.
5. Index-Area
This attribute identifies the area in which you will
place the index levels other than level 1 in an indexed
file with multiple areas. The value is an integer in the
range of 1 to 254, which must be the same number as that
assigned to the area in an area section. This value is
used when the data levels and the index levels are placed
in seperate areas, or when each key is placed in its own
area.
6. Index-Fill
Index-Fill
This attribute sets the percentage of bytes in each
index level bucket that you wish populated initially. If
you anticipate that many records will be inserted
randomly into the file, this value should be less that
100%. The default value is 100% and the minimum value is
50%.
7. Level1-Index-Area
This attribute identifies the area in which you will
place the level 1 index in an indexed file with multiple
areas. The value is an integer in the range of 1 to 254,
which must be the same number as that assigned to the
area in an area section. This value is used when the
data levels and the index levels are placed in seperate
areas, or when each key is placed in its own area.
8. Name
The name attribute assigns a name to a key. The
value is a string from 1 to 32 characters long. This is
an optional value.
DOCUMENTATION AND TRAINING Page 2-21
DOCUMENTATION AND TRAINING
9. Prologue
Prologue
The prologue attribute defines the internal
structure level of an indexed file. There are three
different structure levels. A prologue 3 can only have a
primary key (no alternate keys) and the primary key must
be of the string type. Prologue 3 gives you the option
of compressing keys, indexes, and data. You can use the
CONVERT/RECLAIM utility to reclaim buckets from prologue
3 files. Prologue 1 and 2 files do not allow these
options.
To specifiy a Prologue 3 file, assign the value 3 to
this attribute. To specifiy a Prologue 1 to 2 file,
assign the value 2. There is no user discernible
difference between Prologue 1 and 2 files.
10. Length
Length
The length attribute sets the length of the key in
bytes.
11. Position
Position
The position attribute defines the byte position if
the beginning of the key field within the record. The
first position is 0. Primary keys work best if they
start at position 0.
12. Type
Type
The type attribute specifies the type of the key.
There are 6 different type of keys.
1. BIN2 --> 2 byte unsigned number (0 to 65,535)
2. BIN4 --> 4 byte unsigned number (0 to 4,294,967,295)
3. DECIMAL --> Packed decimal (1 to 16 bytes)
4. INT2 --> 2 byte signed integer (-32,768 to +32767)
5. INT4 --> 4 byte signed integer (-2,147,483,648 to
+2,147,483,647)
6. STRING --> 1 to 255 string of Ascii characters
2.3.3.2.1 Sample Fdl File -
Sample Fdl File
The following is a sample FDL file.
TITLE Sample FDL File
IDENT 27-JUN-1983 15:22:21 VAX-11 FDL Editor
DOCUMENTATION AND TRAINING Page 2-22
DOCUMENTATION AND TRAINING
SYSTEM
SOURCE VAX/VMS
FILE
NAME INPUT.DAT
ORGANIZATION indexed
RECORD
CARRIAGE-CONTROL carriage-return
FORMAT fixed
SIZE 80
AREA 0
ALLOCATION 235
BEST-TRY-CONTIGUOUS yes
BUCKET-SIZE 3
EXTENSION 23
AREA 1
ALLOCATION 7
BEST-TRY-CONTIGUOUS yes
BUCKET-SIZE 3
EXTENSION 0
KEY 0
CHANGES no
DATA-AREA 0
DATA-FILL 75
DUPLICATES no
INDEX-AREA 1
INDEX-FILL 75
LEVEL1-INDEX-AREA 1
NAME PART-NUMBER
PROLOGUE 2
SEG0-LENGTH 9
SEG0-POSITION 0
TYPE string
2.3.3.3 Create/Fdl -
Create/Fdl
The Create Utility uses the specifications in an existing FDL
file to create a new , empty data file.
CREATE/FDL=OUTPUT.FDL OUTPUT.DAT
CREATE/FDL=OUTPUT.FDL OUTPUT.DAT
OUTPUT.FDL specifies the FDL file from which to create the
data file. OUTPUT.DAT specifies the empty output file that is
created.
The following switches are recommended:
/LOG.........display file specification of data file created
DOCUMENTATION AND TRAINING Page 2-23
DOCUMENTATION AND TRAINING
2.3.3.4 Convert/Fdl -
Convert/Fdl
The Convert Utility copies records from one or more files to an
output file, changing the record format and file organization to that
of the output file. The input files themselves do not change. The
output data file can already exist or a convert can create it. If you
If you
want to create an output file with different characteristics than the
want to create an output file with different characteristics than the
input file, you specifiy an FDL file specification in the command
input file, you specifiy an FDL file specification in the command
line. To create an output file with the same characteristics as the
line.
first input file, you omit the /FDL qualifier. If the output file
exists, it can be either empty or it can contain records. If the
output file is sequential, the specifying the /APPEND qualifier will
cause the new record from the input file to be added sequentially to
the end of the output file. If the existing output file is indexed
and it contains records, then specifying the /MERGE qualifier will
cause the new records from the input file to be merged in their proper
order.
Conversions in which the length of the input records exceeds the
maximum length of the fixed length of the output records will cause an
exception condition. Conversions of short fixed-length records into
longer fixed-length records will also cause an exception. You can
avoid these exception conditions by specifying the /TRUNCATE qualifier
when going from long input records to shorter output records, and by
specifying the /PAD qualifier to pad the output records when
converting from short input records to longer output records. The
/PAD qualifier allows you to specify the pad character.
To keep a copy of the exception records, you create an exceptions
file with the /EXCEPTIONS-FILE qualifier. The exceptions file is a
sequential file with variable length records. It receives a copy of
any record that cannot be placed in the output data file. Exception
files are given the EXC file type by default.
CONVERT can also be used to reformat an indexed file that has had
CONVERT can also be used to reformat an indexed file that has had
many record deletions and insertions. The file's file specification
many record deletions and insertions. The file's file specification
is used as both the input and the output file specification. In such
is used as both the input and the output file specification.
a case the output file will have a version number that is one greater
than the highest exisiting version of the input file.
CONVERT/FDL=OUTPUT.FDL/EXCEPTIONS-FILE=OUTPUT.EXC INPUT.DAT OUTPUT.DAT
CONVERT/FDL=OUTPUT.FDL/EXCEPTIONS-FILE=OUTPUT.EXC INPUT.DAT OUTPUT.DAT
This command will create a file (OUTPUT.DAT) according to the
file specifications in OUTPUT.FDL and with the data records
found in INPUT.DAT. The newly created output file will have the
name specified by the output file spec; this name overrides any
file name specified in the FDL file.
CONVERT/TRUNCATE/EXCEPTIONS-FILE=OUTPUT.EXC VARFILE.DAT FIXFILE.DAT
CONVERT/TRUNCATE/EXCEPTIONS-FILE=OUTPUT.EXC VARFILE.DAT FIXFILE.DAT
This command copies records from a variable-length file to a
file with fixed-length records and truncates records longer than
the fixed length. Any records that are truncated are copied to
the exceptions file.
CONVERT INDEXED.DAT INDEXED.DAT
CONVERT INDEXED.DAT INDEXED.DAT
This command creates the output file INDEXED.DAT with a
version-number one higher that that of the input file. The
DOCUMENTATION AND TRAINING Page 2-24
DOCUMENTATION AND TRAINING
output is a copy of the input file, but it is a clean
copy...bucket splits and rrvs disappear, and pointers to deleted
records are reclaimed.
The following switches are recommended:
/EXCEPTIONS-FILE.....create error report
/READ-CHECK..........reads input file twice
/NOSHARE.............lock input file while converting
/STATISTICS..........display statistics about conversion
/WRITE-CHECK.........check new records on disk with memory
2.4 VAX-11 COBOL
VAX-11 COBOL
2.4.1 Vax-11 Cobol Examples
Vax-11 Cobol Examples
2.4.1.1 Indexed File / Simple Primary Key Read -
Indexed File / Simple Primary Key Read
FILE-CONTROL.
SELECT EMPLOYEE-FILE
SELECT EMPLOYEE-FILE
ASSIGN TO "PROG1.DAT"
ASSIGN TO "PROG1.DAT"
ORGANIZATION IS INDEXED.
ORGANIZATION IS INDEXED.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-FILE
FD EMPLOYEE-FILE
RECORD CONTAINS 26 CHARACTERS
RECORD CONTAINS 26 CHARACTERS
LABEL RECORDS ARE STANDARD
LABEL RECORDS ARE STANDARD
VALUE OF ID IS EMPLOYEE-FILE-ID
VALUE OF ID IS EMPLOYEE-FILE-ID
DATA RECORD IS EMPLOYEE-RECORD
DATA RECORD IS EMPLOYEE-RECORD
ACCESS MODE IS DYNAMIC
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMPLOYEE-BADGE-NUMBER.
RECORD KEY IS EMPLOYEE-BADGE-NUMBER.
01 EMPLOYEE-RECORD.
01 EMPLOYEE-RECORD.
02 EMPLOYEE-BADGE-NUMBER PIC 9(6).
02 EMPLOYEE-BADGE-NUMBER PIC 9(6).
02 EMPLOYEE-NAME.
02 EMPLOYEE-NAME.
03 EMPLOYEE-NAME-LAST PIC X(10).
03 EMPLOYEE-NAME-LAST PIC X(10).
03 EMPLOYEE-NAME-FIRST PIC X(10).
03 EMPLOYEE-NAME-FIRST PIC X(10).
WORKING-STORAGE SECTION.
01 EMPLOYEE-FILE-ID PIC X(12).
PROCEDURE DIVISION.
INITIAL-PARAGRAPH.
DISPLAY "You must start off with a paragraph name".
OPEN-FILES.
OPEN I-O EMPLOYEE-FILE.
ADD-A-RECORD.
INITIALIZE EMPLOYEE-RECORD.
INITIALIZE EMPLOYEE-RECORD.
ACCEPT EMPLOYEE-BADGE-NUMBER.
ACCEPT EMPLOYEE-NAME-LAST.
ACCEPT EMPLOYEE-NAME-FIRST.
WRITE EMPLOYEE-RECORD INVALID KEY,
WRITE EMPLOYEE-RECORD INVALID KEY,
DOCUMENTATION AND TRAINING Page 2-25
DOCUMENTATION AND TRAINING
STOP RUN.
STOP RUN.
TYPE-A-RECORD.
INITIALIZE EMPLOYEE-RECORD.
INITIALIZE EMPLOYEE-RECORD.
ACCEPT EMPLOYEE-BADGE-NUMBER.
ACCEPT EMPLOYEE-BADGE-NUMBER.
READ EMPLOYEE-FILE INVALID KEY,
READ EMPLOYEE-FILE INVALID KEY,
DISPLAY "No such employee as ", EMPLOYEE-BADGE-NUMBER
DISPLAY "No such employee as ", EMPLOYEE-BADGE-NUMBER
GO TO SOMEWHERE.
GO TO SOMEWHERE.
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME.
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME.
2.4.1.2 Indexed File / Alternate Key -
Indexed File / Alternate Key
FILE-CONTROL.
SELECT EMPLOYEE-FILE
SELECT EMPLOYEE-FILE
ASSIGN TO "PROG1.DAT"
ASSIGN TO "PROG1.DAT"
ORGANIZATION IS INDEXED.
ORGANIZATION IS INDEXED.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-FILE
FD EMPLOYEE-FILE
RECORD CONTAINS 26 CHARACTERS
RECORD CONTAINS 26 CHARACTERS
LABEL RECORDS ARE STANDARD
LABEL RECORDS ARE STANDARD
VALUE OF ID IS EMPLOYEE-FILE-ID
VALUE OF ID IS EMPLOYEE-FILE-ID
DATA RECORD IS EMPPLOYEE-RECORD
DATA RECORD IS EMPPLOYEE-RECORD
ACCESS MODE IS DYNAMIC
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMPLOYEE-BADGE-NUMBER
RECORD KEY IS EMPLOYEE-BADGE-NUMBER
ALTERNATE RECORD KEY IS EMPLOYEE-NAME-LAST WITH DUPLICATES.
ALTERNATE RECORD KEY IS EMPLOYEE-NAME-LAST WITH DUPLICATES.
01 EMPLOYEE-RECORD.
02 EMPLOYEE-BADGE-NUMBER PIC 9(6).
02 EMPLOYEE-NAME.
03 EMPLOYEE-NAME-LAST PIC X(10).
03 EMPLOYEE-NAME-FIRST PIC X(10).
PROCEDURE DIVISION.
INITIAL-PARA.
|
V
READ-A-RECORD.
INITIALIZE EMPLOYEE-RECORD.
INITIALIZE EMPLOYEE-RECORD.
ACCEPT WS-ACCEPT-LAST-NAME.
MOVE WS-ACCEPT-LAST-NAME TO EMPLOYEE-NAME-LAST.
READ EMPLOYEE-FILE
READ EMPLOYEE-FILE
KEY IS EMPLOYEE-NAME-LAST
KEY IS EMPLOYEE-NAME-LAST
INVALID KEY,
INVALID KEY,
DISPLAY "No such employee as ", EMPLOYEE-NAME-LAST
DISPLAY "No such employee as ", EMPLOYEE-NAME-LAST
GO TO SOMEWHERE.
GO TO SOMEWHERE.
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME.
DUPL-NAME-LOOP.
INITIALIZE EMPLOYEE-RECORD.
INITIALIZE EMPLOYEE-RECORD.
READ EMPLOYEE-FILE NEXT RECORD AT END,
READ EMPLOYEE-FILE NEXT RECORD AT END,
GO TO LEAVE-LOOP.
GO TO LEAVE-LOOP.
IF WS-ACCEPT-LAST-NAME IS EQUAL TO EMPLOYEE-NAME-LAST,
IF WS-ACCEPT-LAST-NAME IS EQUAL TO EMPLOYEE-NAME-LAST,
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME
GO TO DUPL-NAME-LOOP
GO TO DUPL-NAME-LOOP
DOCUMENTATION AND TRAINING Page 2-26
DOCUMENTATION AND TRAINING
ELSE,
ELSE,
GO TO LEAVE-LOOP.
GO TO LEAVE-LOOP.
2.4.1.3 Indexed File / Start Verb -
Indexed File / Start Verb
FILE-CONTROL.
SELECT EMPLOYEE-FILE
SELECT EMPLOYEE-FILE
ASSIGN TO "PROG1.DAT"
ASSIGN TO "PROG1.DAT"
ORGANIZATION IS INDEXED.
ORGANIZATION IS INDEXED.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-FILE
FD EMPLOYEE-FILE
RECORD CONTAINS 26 CHARACTERS
RECORD CONTAINS 26 CHARACTERS
LABEL RECORDS ARE STANDARD
LABEL RECORDS ARE STANDARD
VALUE OF ID IS EMPLOYEE-FILE-ID
VALUE OF ID IS EMPLOYEE-FILE-ID
DATA RECORD IS EMPPLOYEE-RECORD
DATA RECORD IS EMPPLOYEE-RECORD
ACCESS MODE IS DYNAMIC
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMPLOYEE-BADGE-NUMBER
RECORD KEY IS EMPLOYEE-BADGE-NUMBER
ALTERNATE RECORD KEY IS EMPLOYEE-NAME-LAST WITH DUPLICATES.
ALTERNATE RECORD KEY IS EMPLOYEE-NAME-LAST WITH DUPLICATES.
01 EMPLOYEE-RECORD.
02 EMPLOYEE-BADGE-NUMBER PIC 9(6).
02 EMPLOYEE-NAME.
03 EMPLOYEE-NAME-LAST PIC X(10).
03 EMPLOYEE-NAME-FIRST PIC X(10).
WORKING-STORAGE SECTION.
01 WS-ACCEPT-LAST-NAME PIC X(80).
01 NUL PIC X(80).
01 WS-STR-TRIM-LENGTH PIC S9(9) USAGE IS COMP.
PROCEDURE DIVISION.
INITIAL-PARA.
|
V
READ-A-RECORD.
INITIALIZE EMPLOYEE-RECORD.
ACCEPT WS-ACCEPT-LAST-NAME.
MOVE WS-ACCEPT-LAST-NAME TO EMPLOYEE-NAME-LAST.
CALL "STR$TRIM" USING BY DESCRIPTOR NUL
BY DESCRIPTOR WS-ACCEPT-LAST-NAME
BY REFERENCE WS-STR-TRIM-LENGTH.
START EMPLOYEE-FILE (key is equal to/ key is greater than)
START EMPLOYEE-FILE (key is equal to/ key is greater than)
KEY IS NOT LESS THAN EMPLOYEE-NAME-LAST
KEY IS NOT LESS THAN EMPLOYEE-NAME-LAST
INVALID KEY,
INVALID KEY,
DISPLAY "No such employee like ", WS-ACCEPT-LAST-NAME
DISPLAY "No such employee like ", WS-ACCEPT-LAST-NAME
GO TO SOMEWHERE.
GO TO SOMEWHERE.
DUPL-NAME-LOOP.
DUPL-NAME-LOOP.
INITIALIZE EMPLOYEE-RECORD.
INITIALIZE EMPLOYEE-RECORD.
READ EMPLOYEE-FILE NEXT RECORD AT END,
READ EMPLOYEE-FILE NEXT RECORD AT END,
GO TO LEAVE-LOOP.
GO TO LEAVE-LOOP.
IF WS-ACCEPT-LAST-NAME IS EQUAL TO EMPLOYEE-NAME-LAST(1:WS-STR-TRIM-LENGTH),
IF WS-ACCEPT-LAST-NAME IS EQUAL TO EMPLOYEE-NAME-LAST(1:WS-STR-TRIM-LENGTH),
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME
GO TO DUPL-NAME-LOOP
GO TO DUPL-NAME-LOOP
DOCUMENTATION AND TRAINING Page 2-27
DOCUMENTATION AND TRAINING
ELSE,
ELSE,
GO TO LEAVE-LOOP.
GO TO LEAVE-LOOP.
2.4.1.4 Relative File -
Relative File
FILE-CONTROL.
SELECT EMPLOYEE-FILE
SELECT EMPLOYEE-FILE
ASSIGN TO "PROG0.DAT"
ASSIGN TO "PROG0.DAT"
ORGANIZATION IS RELATIVE.
ORGANIZATION IS RELATIVE.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-FILE
FD EMPLOYEE-FILE
RECORD CONTAINS 26 CHARACTERS
RECORD CONTAINS 26 CHARACTERS
LABEL RECORDS ARE STANDARD
LABEL RECORDS ARE STANDARD
VALUE OF ID IS EMPLOYEE-FILE-ID
VALUE OF ID IS EMPLOYEE-FILE-ID
DATA RECORD IS EMPLOYEE-RECORD
DATA RECORD IS EMPLOYEE-RECORD
ACCESS MODE IS DYNAMIC
ACCESS MODE IS DYNAMIC
RELATIVE KEY IS REL-KEY.
RELATIVE KEY IS REL-KEY.
01 EMPLOYEE-RECORD.
02 EMPLOYEE-BADGE-NUMBER PIC 9(6).
02 EMPLOYEE-NAME PIC X(20).
WORKING-STORAGE SECTION.
01 WS-FUNCTION PIC X(10).
88 FUNCTION-TYPE VALUE "T","TY","TYP","TYPE".
88 FUNCTION-ADD VALUE "A","AD","ADD".
01 REL-KEY PIC 9(6).
01 REL-KEY PIC 9(6).
01 EMPLOYEE-FILE-ID PIC X(12).
PROCEDURE DIVISION.
OPEN-FILES.
OPEN I-O EMPLOYEE-FILE.
REQUEST-FUNCTION.
DISPLAY "FUNCTION? " WITH NO ADVANCING.
ACCEPT WS-FUNCTION.
IF WS-FUNCTION IS EQUAL TO SPACES,
GO TO END-OF-PROGRAM.
IF FUNCTION-TYPE,
GO TO TYPE-FUNCTION.
IF FUNCTION-ADD,
GO TO ADD-FUNCTION.
DISPLAY "Only type or add is valid".
GO TO REQUEST-FUNCTION.
TYPE-FUNCTION.
INITIALIZE EMPLOYEE-RECORD.
DISPLAY "Badge Number? " WITH NO ADVANCING.
ACCEPT REL-KEY.
ACCEPT REL-KEY.
READ EMPLOYEE-FILE INVALID KEY,
READ EMPLOYEE-FILE INVALID KEY,
DISPLAY "No such employee as ", REL-KEY
DISPLAY "No such employee as ", REL-KEY
GO TO REQUEST-FUNCTION.
GO TO REQUEST-FUNCTION.
DISPLAY EMPLOYEE-BADGE-NUMBER," ",EMPLOYEE-NAME.
GO TO REQUEST-FUNCTION.
ADD-FUNCTION.
INITIALIZE EMPLOYEE-RECORD.
DISPLAY "Badge Number? " WITH NO ADVANCING.
ACCEPT EMPLOYEE-BADGE-NUMBER.
DISPLAY "Name? " WITH NO ADVANCING.
ACCEPT EMPLOYEE-NAME.
MOVE EMPLOYEE-BADGE-NUMBER TO REL-KEY.
MOVE EMPLOYEE-BADGE-NUMBER TO REL-KEY.
DOCUMENTATION AND TRAINING Page 2-28
DOCUMENTATION AND TRAINING
WRITE EMPLOYEE-RECORD INVALID KEY,
WRITE EMPLOYEE-RECORD INVALID KEY,
DISPLAY "INVALID KEY ON WRITE"
DISPLAY "INVALID KEY ON WRITE"
STOP RUN.
STOP RUN.
GO TO REQUEST-FUNCTION.
END-OF-PROGRAM.
CLOSE EMPLOYEE-FILE.
STOP RUN.
2.4.1.5 Variable Length Record -
Variable Length Record
DATA DIVISION.
FILE SECTION.
FD FILE-OUT
FD FILE-OUT
RECORD VARYING 1 TO 80 CHARACTERS DEPENDING ON LEN
RECORD VARYING 1 TO 80 CHARACTERS DEPENDING ON LEN
VALUE OF ID IS OUT-FILE-NAME.
01 OUT-REC PIC X(80).
WORKING-STORAGE SECTION.
01 DATA-STRING PIC X(80).
01 LEN PIC 9(05) COMP.
01 NUL PIC X(80).
PROCEDURE DIVISION.
010-START.
OPEN OUTPUT FILE-OUT.
INITIALIZE OUT-REC.
MOVE LINE-01 TO DATA-STRING.
PERFORM 100-WRITE THRU WRITE-EXIT.
100-WRITE.
CALL "STR$TRIM" USING BY DESCRIPTOR NUL
CALL "STR$TRIM" USING BY DESCRIPTOR NUL
BY DESCRIPTOR DATA-STRING
BY DESCRIPTOR DATA-STRING
BY REFERENCE LEN.
BY REFERENCE LEN.
MOVE DATA-STRING TO OUT-REC.
MOVE DATA-STRING TO OUT-REC.
WRITE OUT-REC.
WRITE OUT-REC.
WRITE-EXIT.
EXIT.
2.4.1.6 Copy From Dictionary -
Copy From Dictionary
PROG3 27-Jun-1983
Source Listing 27-Jun-1983
1 IDENTIFICATION DIVISION.
2 PROGRAM-ID. PROG3 IS INITIAL PROGRAM.
3 AUTHOR. Richard A. Farrenkopf.
4 INSTALLATION. Vax-11/780 for Corporate Purchasing.
5 DATE-WRITTEN. June 20,1983.
6 DATE-COMPILED.
7 SECURITY. This program requires no security.
8
9 ENVIRONMENT DIVISION.
10 CONFIGURATION SECTION.
DOCUMENTATION AND TRAINING Page 2-29
DOCUMENTATION AND TRAINING
11 SOURCE-COMPUTER. Vax-11.
12 OBJECT-COMPUTER. Vax-11
13 Memory Size 2000 words.
14 INPUT-OUTPUT SECTION.
15 FILE-CONTROL.
16 SELECT EMPLOYEE-FILE
17 ASSIGN TO "PROG2.DAT"
18 ORGANIZATION IS INDEXED.
19
20 DATA DIVISION.
21 FILE SECTION.
22 FD EMPLOYEE-FILE
23 RECORD CONTAINS 26 CHARACTERS
24 LABEL RECORDS ARE STANDARD
25 VALUE OF ID IS EMPLOYEE-FILE-ID
26 DATA RECORD IS EMPLOYEE-RECORD
27 ACCESS MODE IS DYNAMIC
28 RECORD KEY IS EMPLOYEE-BADGE-NUMBER
29 ALTERNATE RECORD KEY IS EMPLOYEE-NAME-LAST WITH DUPLICATES.
30
31 COPY "CDD$TOP.TYMSHR.RICK.CDD-EMPLOYEE-RECORD FROM DICTIONARY.
COPY "CDD$TOP.TYMSHR.RICK.CDD-EMPLOYEE-RECORD FROM DICTIONARY.
32L
33L CDD$TOP.TYMSHR.RICK.CDD-EMPLOYEE-RECORD
3 C
34L
35L 01 EMPLOYEE-RECORD.
3
36L 02 EMPLOYEE-BADGE-NUMBER PIC 9(6).
37L 02 EMPLOYEE-NAME.
38L 03 EMPLOYEE-NAME-FIRST PIC X(10).
39L 03 EMPLOYEE-NAME-LAST PIC X(10).
40
41
2.4.2 Inter-Program Communication
Inter-Program Communication
2.4.2.1 The Call Statement -
The Call Statement
A Call statement transfers the run unit's execution control
from the calling program to the beginning of the called subprogram's
Procedure Division. The first time the called subprogram gains
execution control, its state is that of a fresh copy of the program.
Thereafter, each time it is called, its state is the same as the last
exit from that program except when the called program has the Initial
clause.
2.4.2.2 The Exit Program Statement -
The Exit Program Statement
To return execution control to the calling program, the called
subprogram executes an Exit Program statement. You can include more
than one Exit Program statement in a subprogram. On executing an Exit
Program statement, control returns to the next statement following the
calling program's Call statement. For example,
IDENTIFICATION DIVISION. IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN PROGRAM-ID. SUB1 INITIAL.
ENVIRONMENT DIVISON. ENVIRONMENT DIVISION.
DOCUMENTATION AND TRAINING Page 2-30
DOCUMENTATION AND TRAINING
DATA DIVISION. DATA DIVISION.
PROCEDURE DIVISION. PROCEDURE DIVISION.
BEGIN. / BEGIN.
! / !
! / !
V / !
CALL "SUB1".-----------/ !
DISPLAY "BACK". !
STOP RUN. \ V
\--------------------EXIT PROGRAM.
2.4.2.3 Accessing Another Program's Data Division. -
Accessing Another Program's Data Division.
1. External Clause
External Clause
The External Clause is one method of passing arguments
among programs. External data can be shared between
calling/called seperately compiled programs. For example, in
the following Working-Storage Section entry, the data items
in COMMON-RECORD are available to any program in the image
that also describes COMMON-RECORD and its data items. The
description of the data-items must be identical in all
programs in which they are defined.
IDENTIFICATION DIVISION. IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN. PROGRAM-ID. SUB1.
ENVIRONMENT DIVISON. ENVIRONMENT DIVISION.
DATA DIVISION. DATA DIVISION.
WORKING-STORAGE SECTION. WORKING-STORAGE SECTION.
01 COMMON-RECORD EXTERNAL. 01 COMMON-RECORD EXTERNAL.
02 A PIC 9(2) COMP. 02 A PIC 9(2) COMP.
02 B PIC 9(2) COMP. 02 B PIC 9(2) COMP.
02 C PIC 9(2) COMP. 02 C PIC 9(2) COMP.
01 C-RES PIC 99.
PROCEDURE DIVISION. PROCEDURE DIVISION.
BEGIN. BEGIN.
MOVE 1 TO A. ADD A,B GIVING C.
MOVE 1 TO B. EXIT PROGRAM.
CALL "SUB1".
MOVE C TO C-RES.
DISPLAY C-RES.
STOP RUN.
2. The Using Giving Phrase
The Using Giving Phrase
Another way to access a calling program's Data
Division is to use a Call statement and a Procedure Division
Using phrase, both containing an equal number of data-names.
The order in which Using identifiers appear in both calling
and called programs determines the correspondence of single
sets of data available to the called subprogram. The
correspondence is by position, not by name. The Giving
phrase allows the subprogram to return a value through the
data item in the Giving clause. For example,
IDENTIFICATION DIVISION. IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN. PROGRAM-ID. SUB1
DOCUMENTATION AND TRAINING Page 2-31
DOCUMENTATION AND TRAINING
ENVIRONMENT DIVISON. ENVIRONMENT DIVISION.
DATA DIVISION. DATA DIVISION.
WORKING-STORAGE SECTION. LINKAGE SECTION.
01 A PIC 9(2) COMP. 01 X PIC 9(2) COMP.
01 B PIC 9(2) COMP. 01 Y PIC 9(2) COMP.
01 C PIC 9(2) COMP. 01 Z PIC 9(2) COMP.
01 C-RES PIC 99.
PROCEDURE DIVISION. PROCEDURE DIVISION USING X,Y,Z.
BEGIN. BEGIN.
MOVE 1 TO A. ADD X,Y GIVING Z.
MOVE 1 TO B. EXIT PROGRAM.
CALL "SUB1" USING A,B,C.
MOVE C TO C-RES.
DISPLAY C-RES.
STOP RUN.
In this format, the CALL statement can make data
available to the called program by four argument passing
mechanisms. A called Cobol subprogram must have arguments
passed to it by one of the first two mechanisms (by reference
or by content). In other words, procedures written in Cobol
In other words, procedures written in Cobol
can only accept arguments passed by REFERENCE or by CONTENT.
can only accept arguments passed by REFERENCE or by CONTENT
Passing by Reference is the default for Cobol.
1. Reference
Reference
The By Reference mechanism passes the address of the
argument to the called program. The called program
references the same storage area for the data item as the
calling program. This mechanism ensures that the
contents of the parameter in the calling program is
identical at all times with the contents of the parameter
in the called program. Normally this parameter is passed
as PIC S9(9) COMP.
2. Content
Content
The By Content mechanism copies the argument to a
temporary location, and passes the address of the
temporary location to the called program. This mechanism
ensures that the called program cannot change the
original contents of the argument.
3. Value
Value
This mechanism passes the value of the argument.
Normally it is passed as PIC S9(9) COMP.
4. Descriptor
Descriptor
This mechanism passes the address of the data item's
descriptor and is normally passed as PIC X(--).
DOCUMENTATION AND TRAINING Page 2-32
DOCUMENTATION AND TRAINING
2.4.3 Calling The Run Time Library And System Services
Calling The Run Time Library And System Services
The Run Time Library is a set of routines that do special things
you might not ordinarily be able to do. There are 9 types of
routines.
1. LIB$ - General Purpose Procedures
LIB$ - General Purpose Procedures
2. STR$ - String Manipulation Procedures
STR$ - String Manipulation Procedures
3. SCR$ - Terminal Screen Procedures
SCR$ - Terminal Screen Procedures
4. COB$ - Cobol-specific Support Procedures
COB$ - Cobol-specific Support Procedures
5. OTS$ - Language Independant Support Procedures
OTS$ - Language Independant Support Procedures
6. MTH$ - Mathematical Procedures
MTH$ - Mathematical Procedures
7. BAS$ - Basic-specific Support Procedures
BAS$ - Basic-specific Support Procedures
8. FOR$ - Fortran-specific Support Procedures
FOR$ - Fortran-specific Support Procedures
9. PL1$ - PL1-specific Support Procedures
PL1$ - PL1-specific Support Procedures
All System-Services begin with SYS$ and do other types of things.
All System-Services begin with SYS$
Both types of routines (RTL and System Services) are called in similar
ways. When reading a description of these procedures you must figure
out how to pass it its parameters (whether by reference, value,
descriptor, or content). The following table will attempt to help you
with this decision.
|---------------------|-------------------------------------|
| Calling Mechanism | Words to look for | Picture |
|---------------------|---------------------|---------------|
|---------------------|---------------------|---------------|
| | | |
| Reference | "Address of ..." | PIC S9(9) COMP|
Reference PIC S9(9) COMP
|---------------------|---------------------|---------------|
| | "Value","Mask", | |
| Value | "Number" | PIC S9(9) COMP|
Value PIC S9(9) COMP
| |omission of "address"| |
| | when in doubt... | |
|---------------------|---------------------|---------------|
| | | |
| Descriptor | "Address of a | PIC X(..) |
Descriptor PIC X(..)
| | descriptor" | |
|---------------------|---------------------|---------------|
| | | |
| Content | "The contents of" | |
|---------------------|---------------------|---------------|
The Vax-11 procedure calling standard requires that a status code
be returned from an external procedure to indicate success or failure.
The status code is returned to the calling program as a function
result. To use the status code from a Cobol program you must do two
things. First, you must call the external procedure as a function
(use the ...giving phrase). Second, declare the variable receiving
the status code in the range of PIC S9(5) COMP to PIC S9(9) COMP. You
check for success or failure of an external procedure with a
DOCUMENTATION AND TRAINING Page 2-33
DOCUMENTATION AND TRAINING
SUCCESS/FAILURE test of the status value in 2 ways.
WORKING-STORAGE SECTION.
WORKING-STORAGE SECTION.
01 STAT PIC S9(9) COMP.
01 STAT PIC S9(9) COMP.
|
|
V
V
CALL "SUB" USING ... GIVING STAT.
CALL "SUB" USING ... GIVING STAT.
IF STAT IS FAILURE, HANDLE ERROR.
IF STAT IS FAILURE, HANDLE ERROR.
WORKING-STORAGE SECTION.
WORKING-STORAGE SECTION.
01 STAT PIC S9(9) COMP.
01 STAT PIC S9(9) COMP.
01 STATUS-CODE PIC S9(9) COMP VALUE IS EXTERNAL STATUS-CODE.
01 STATUS-CODE PIC S9(9) COMP VALUE IS EXTERNAL STATUS-CODE.
|
|
V
V
CALL "SUB" USING ... GIVING STAT.
CALL "SUB" USING ... GIVING STAT.
IF STAT IS EQUAL TO STATUS-CODE, HANDLE ERROR.
IF STAT IS EQUAL TO STATUS-CODE, HANDLE ERROR.
Status codes for system services, run-time library procedures,
and record management services follow the naming convention
FACILITYCODE$STATUSCODE. Specific status codes are listed with each
procedure in the appropriate reference manual. An examples of a
specific system service and testing for specific error conditions
follows:
IDENTIFICATION DIVISION.
PROGRAM-ID. GETMSG.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MESSAGE-ID PIC 9(9) COMP.
01 MESSAGE-LENGTH PIC 9(9) COMP.
01 MESSAGE-TEXT PIC X(132).
01 MASK PIC 9(9) COMP VALUE 15.
01 OUT-ARRAY PIC X(4).
01 MESSAGE-ID-DIS PIC X(4).
01 MSG-1 PIC X(15) VALUE "Buffer Overflow".
01 MSG-2 PIC X(17) VALUE "Message Not Found".
01 STAT PIC S9(9) COMP.
01 STAT PIC S9(9) COMP.
01 SS$BUFFEROVF PIC S9(9) COMP VALUE EXTERNAL SS$BUFFEROVF.
01 SS$BUFFEROVF PIC S9(9) COMP VALUE EXTERNAL SS$BUFFEROVF.
01 CAN-BE-CALLED-ANYTHING PIC S9(9) COMP VALUE EXTERNAL SS$MSGNOTFND.
01 CAN-BE-CALLED-ANYTHING PIC S9(9) COMP VALUE EXTERNAL SS$MSGNOTFND.
PROCEDURE DIVISION.
BEGIN.
DISPLAY "Enter a message number " WITH NO ADVANCING.
ACCEPT MESSAGE-ID-DIS AT END,
STOP RUN
END-ACCEPT.
MOVE MESSAGE-ID-DIS TO MESSAGE-ID.
INITIALIZE MESSAGE-TEXT.
CALL "SYS$GETMSG" USING BY VALUE MESSAGE-ID
CALL "SYS$GETMSG" USING BY VALUE MESSAGE-ID
BY REFERENCE MESSAGE-LENGTH
BY REFERENCE MESSAGE-LENGTH
BY DESCRIPTOR MESSAGE-TEXT
BY DESCRIPTOR MESSAGE-TEXT
BY VALUE MASK
BY VALUE MASK
BY REFERENCE OUT-ARRAY
BY REFERENCE OUT-ARRAY
GIVING STAT.
GIVING STAT.
EVALUATE STAT
EVALUATE STAT
DOCUMENTATION AND TRAINING Page 2-34
DOCUMENTATION AND TRAINING
WHEN SS$BUFFEROVF DISPLAY MSG-1
WHEN SS$BUFFEROVF DISPLAY MSG-1
WHEN CAN-BE-CALLED-ANYTHING DISPLAY MSG-2
WHEN CAN-BE-CALLED-ANYTHING DISPLAY MSG-2
WHEN OTHER DISPLAY MESSAGE-TEXT(1:MESSAGE-LENGTH)
WHEN OTHER DISPLAY MESSAGE-TEXT(1:MESSAGE-LENGTH)
END-EVALUATE.
END-EVALUATE.
GO TO BEGIN.
A short list follows just to give you an idea of what types of
procedures are available for you to call on.
1. LIB$DISABLECTRL: Disable control-y
LIB$DISABLECTRL:
2. LIB$DOCOMMAND: Execute DCL command
LIB$DOCOMMAND:
3. LIB$FINDFILE: Directory of a file
LIB$FINDFILE:
4. MTH$SQRT: Square-root of a number
MTH$SQRT:
5. STR$TRIM: Trim trailing blanks and tabs from string
STR$TRIM:
6. STR$UPCASE: Convert string to uppercase
STR$UPCASE:
2.4.4 Dec-10 Cobol Vs Vax-11 Cobol
Dec-10 Cobol Vs Vax-11 Cobol
Besides the already mentioned differences (RMS file access and
RTL/System Service Library Procedures), Vax-11 Cobol has many other
differences. I will briefly point out some new features and then talk
about some of the differences. One should note that the term Dec-10
Cobol is used mainly to refer to ANSII-68 Cobol. Vax-11 Cobol is a
subset of Cobol-81 standards of which many are similar to ANSII-74
Cobol.
2.4.4.1 New Features -
New Features
1. Delimited Scope Statements
Delimited Scope Statements
There are certain statements now that are called
delimited scope statements. This basically means that they
can be terminated with special END- scope terminators. For
example, the following If statements are identical. Note
that the end-if statement takes the place of the period after
the first perform no-routine statement. This is the purpose
of end-if. It delimits or marks the end of the statement
just as the period does in the second if statement. Some of
the statements that can be delimited in this way are listed
here: add (end-add), compute (end-compute), if (end-if),
perform (end-perform), read (end-read), write(end-write).
IF WS-VALUE IS EQUAL TO "Y",
PERFORM YES-ROUTINE
ELSE,
PERFORM NO-ROUTINE
END-IF.
DOCUMENTATION AND TRAINING Page 2-35
DOCUMENTATION AND TRAINING
IF WS-VALUE IS EQUAL TO "Y",
PERFORM YES-ROUTINE
ELSE,
PERFORM NO-ROUTINE.
2. Evaluate
Evaluate
This verb selects a program action based on one or more
conditions. It can be
used to eliminate confusing nested If..Else statements. It
can be used as
follows:
ACCEPT WS-RESPONSE.
EVALUATE WS-RESPONSE
WHEN "ADD" PERFORM ADD-ROUTINE
WHEN "CHANGE" PERFORM CHANGE-ROUTINE
WHEN "DELETE" PERFORM DELETE-ROUTINE
WHEN "EXIT" PERFORM EXIT-ROUTINE
WHEN OTHER GO TO INVALID-RESPONSE
END-EVALUATE.
3. Failure
Failure
This is a reserved word now used to test return status
codes of Cobol and non-Cobol procedures for success of
failure conditions. The data-item tested must be a longword
Comp integer (PIC S9(9) COMP).
IF WS-RETURN-STATUS IS FAILURE ...
4. Initialize
Initialize
This statement is used to set selected types of data
fields to predetermined values. One of its uses is to
'clear' data-items. It will move zeros to a numeric
data-item or spaces to an alphanumeric item.
INITIALIZE EMPLOYEE-RECORD.
5. Inspect
Inspect
This statement replaces the examine verb on the Dec-10
and is much more powerfull. For example, the following code
converts alphabetic phone exchanges to numeric (ie.
8-ADG-4120 becomes 8-234-4120).
INSEPECT WS-PHONE-NUMBER CONVERTING
"ABCDEFGHIJKLMNOPRSTUVWXY" TO
"222333444555666777888999"
AFTER INITIAL "-".
6. Merge
Merge
This statement combines two or more identically
sequenced files on a set of key values.
DOCUMENTATION AND TRAINING Page 2-36
DOCUMENTATION AND TRAINING
7. Perform
Perform
In Vax-11 Cobol, the perform verb is more powerfull.
Especially nice is the feature of the in-line perform as
follows:
PERFORM VARYING WS-ITEM FROM 1 BY 2 UNTIL WS-ITEM > 7
MOVE CHARA(WS-ITEM) TO CHARB(WS-ITEM)
MOVE CHARC(WS-ITEM) TO CHARD(WS-ITEM)
END-PERFORM.
8. Reference Modification
Reference Modification
This allows you to reference a specified part of a data
item. An example follows:
01 TEXT-MESSAGE PIC X(7) VALUE "ABCDEFG".
01 NUM PIC 9 VALUE 4.
DISPLAY TEXT-MESSAGE(1:NUM).
/ |
position to start |-> number of characters
This displays "abcd".
DISPLAY TEXT-MESSAGE(1:) will display the whole string.
2.4.4.2 Vax-11 Cobol Differences -
Vax-11 Cobol Differences
1. The length of Comp data items is different.
The length of Comp data items is different.
PIC S9(1) COMP <--> PIC S9(4) COMP --> 2 BYTES=WORD
PIC S9(1) COMP <--> PIC S9(4) COMP --> 2 BYTES=WORD
PIC S9(5) COMP <--> PIC S9(9) COMP --> 4 BYTES=LONGWORD
PIC S9(5) COMP <--> PIC S9(9) COMP --> 4 BYTES=LONGWORD
PIC S9(10) COMP <--> PIC S9(18) COMP --> 8 BYTES=QUADWORD
PIC S9(10) COMP <--> PIC S9(18) COMP --> 8 BYTES=QUADWORD
2. Accept treats everything as alphanumeric.
Accept treats everything as alphanumeric.
This means that if you Accept a PIC 9 data-item you can
not do arithmetic with it. If you want to do this, the
following is suggested:
WORKING-STORAGE SECTION.
01 WS-ACCEPT PIC X(6).
01 WS-NUM PIC 9(6).
PROCEDURE DIVISION.
START-PROGRAM.
Accept Ws-Accept at end,
display "This is typed upon a control-z".
Unstring Ws-Accept delimited by spaces into Ws-Num.
3. You must start Procedure Division with paragraph.
You must start Procedure Division with paragraph.
4. If you use sections, must section whole program.
If you use sections, must section whole program.
DOCUMENTATION AND TRAINING Page 2-37
DOCUMENTATION AND TRAINING
5. Copy statement is more powerfull
Copy statement is more powerfull
COPY MP-RECORD IN "[RICK.LIBRARY]MIS"
COPY MP-RECORD IN "[RICK.LIBRARY]MIS"
COPY "CDD$TOP.TYMSHR.RICK.CDD-MP-RECORD" FROM DICTIONARY
COPY "CDD$TOP.TYMSHR.RICK.CDD-MP-RECORD" FROM DICTIONARY
6. Select statement is more powerfull
Select statement is more powerfull
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEE-FILE
ASSIGN TO ".MST"
ORGANIZATION IS INDEXED.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-FILE
RECORD CONTAINS 26 CHARACTERS
LABEL RECORDS ARE STANDARD
VALUE OF ID IS EMPLOYEE-FILE-ID
DATA RECORD IS EMPLOYEE-RECORD
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMPLOYEE-BADGE-NUMBER.
01 EMPLOYEE-RECORD.
02 EMPLOYEE-BADGE-NUMBER PIC X(6).
02 EMPLOYEE-NAME.
03 EMPLOYEE-NAME-FIRST PIC X(10).
03 EMPLOYEE-NAME-LAST PIC X(10).
WORKING-STORAGE SECTION.
01 EMPLOYEE-FILE-ID.
02 EMPLOYEE-FILE-NAME PIC X(9).
02 EMPLOYEE-FILE-EXT PIC X(3).
PROCEDURE DIVISION.
INITIAL-PARAGRAPH.
Display "Starting PROG3 v1.0".
OPEN-FILE.
DISPLAY "Enter file-name: " with no advancing.
Accept Employee-File-Name.
Display "Enter file-ext: " with no advancing.
Accept Employee-File-Ext.
Open I-O EMPLOYEE-FILE.
7. Cannot SET data-items that are not indexed
Cannot SET data-items that are not indexed
WORKING-STORAGE SECTION.
01 WS-FAMILY.
02 WS-CHILDREN OCCURS 4 TIMES INDEXED BY WS-INDEX.
03 WS-CHILD-NAME PIC X(20).
03 WS-CHILD-AGE PIC 99.
01 WS-COUNTER PIC 99.
01 WS-COUNTER PIC 99.
PROCEDURE DIVISION.
START-PROGRAM.
SET WS-INDEX TO 1. (this is legal)
move 1 to ws-index (this is illegal)
MOVE 1 TO WS-COUNTER (this is legal)
ADD 1 TO WS-COUNTER (this is legal)
ADD 1 TO WS-COUNTER (this is legal)
DOCUMENTATION AND TRAINING Page 2-38
DOCUMENTATION AND TRAINING
set ws-counter up by 1 (this is illegal)
set ws-counter up by 1 (this is illegal)
set 1 to ws-counter (this is illegal)
8. "Today" no longer exists
"Today" no longer exists
ACCEPT WS-DATA-ITEM FROM DATE
--> YYMMDD (DD is day of week)
ACCEPT WS-DATA-ITEM FROM DAY
--> YYDDD (DDD is day of year)
ACCEPT WS-DATA-ITEM FROM TIME
--> HHMMSSZZ (ZZ is hundreth of second)
ACCEPT WS-DATA-ITEM FROM DAY-OF-WEEK
--> D (D is day of week 1(Mon) to 7(Sun)
9. Channel numbers are not used on the Vax
Channel numbers are not used on the Vax
Instead of CHANNEL(1) is TOP-OF-PAGE use the following:
ENVIRONMENT DIVISION.
SPECIAL-NAMES.
C01 IS TOP-OF-PAGE.
PROCEDURE DIVISION.
WRITE REPORT-FILE-RECORD AFTER TOP-OF-PAGE.
10. Watch out for SD record size
Watch out for SD record size
11. "Memory Size" is only documentary
"Memory Size" is only documentary
12. Data-items should be initialized (not necessarily spaces)
Data-items should be initialized (not necessarily spaces)
13. Before Reading a record, Initialize it
Before Reading a record, Initialize it
SELECT EMPLOYEE-FILE
ASSIGN TO "PROG2.DAT"
ORGANIZATION IS INDEXED.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-FILE
RECORD CONTAINS 26 CHARACTERS
LABEL RECORDS ARE STANDARD
VALUE OF ID IS EMPLOYEE-FILE-ID
DATA RECORD IS EMPLOYEE-RECORD
ACCESS MODE IS DYNAMIC
RECORD KEY IS EMPLOYEE-BADGE-NUMBER.
01 EMPLOYEE-RECORD.
02 EMPLOYEE-BADGE-NUMBER PIC X(6).
02 EMPLOYEE-NAME.
03 EMPLOYEE-NAME-FIRST PIC X(10).
03 EMPLOYEE-NAME-LAST PIC X(10).
PROCEDURE DIVISION.
INITIAL-PARAGRAPH.
Display "Starting PROG3 v1.0".
DUPL-NAME-LOOP.
Initialize Employee-Record.
Read Employee-File next record at end,
DOCUMENTATION AND TRAINING Page 2-39
DOCUMENTATION AND TRAINING
display "reached end-of-file"
go to end-of-program.
Display Employee-badge-number," ",Employee-Name.
Go to Dupl-Name-Loop.
14. Display-6 and Display-7 are not needed
Display-6 and Display-7 are not needed
The default for Vax-11 Cobol data-items is USAGE IS
DISPLAY. There is no such thing as display-6 or display-7.
15. Watch value of id...filenames can be 9 characters long
Watch value of id...filenames can be 9 characters long
2.4.4.3 Suggested Conversion Strategy -
Suggested Conversion Strategy
The following is a general strategy for converting a Dec-10 Cobol
program to a Vax-11 Cobol program. The conversion team feels that the
order of this process is important so that a organized flow of
conversion will occur.
1. Decide of Structure of Data Files
Decide of Structure of Data Files
The first step we feel is to analyze the current data
files being accessed and decide on the organization you wish
to produce on the Vax. We recommend using indexed files in
all cases for major master files. If you decide to use
alternate keys to access the file, you should carefully
consider how many are really needed (anything more than 4 can
begin to seriously downgrade performance). In this step you
should produce finalized file descriptions and put them into
a Cobol text library or the Data Dicionary.
2. Comment out Dentry, Macros, 1022
Comment out Dentry, Macros, 1022
We feel that the first step should be to convert the
native Cobol code from Ansii-68 to Vax-11 Ansii-81 Cobol.
Therefore, forget about Dentry, Macros, and 1022 calls for
now. These problems should be solved at later steps. First,
make the program compile with no fatal errors.
3. Access Data Files
Access Data Files
After the Cobol code has been converted, go back and
look at the 1022 calls and find out what types of access were
being done. Reproduce this access through RMS. One must
remember that we are not using an inverted file structure
like we had with 1022. One can do complicated 'finds'
through callable Datatrieve but unless you know the beginning
of an indexed key, the program will basically end up doing a
sequential read of the file. Therefore, one should weigh the
necessity of doing such inquiries. If they are needed, then
one has the option of using Callable Datatrieve.
4. Convert Dentry to FMS
Convert Dentry to FMS
DOCUMENTATION AND TRAINING Page 2-40
DOCUMENTATION AND TRAINING
The next step should be to replace the commented out
Dentry calls with real FMS calls. This of course entails
building an FMS screen to your required specifications and
then putting in the Cobol calls to access the screen.
5. Replace Macros
Replace Macros
We have acquired from Internal Software Support macros
that run on the Vax. These macros are very similar to the
ones we had on the Dec-10. We have not exercized them all
but they seem to work well. Thus, any functionality you need
from these macros should be easily implemented.
6. Test Program Input and Output
Test Program Input and Output
Before you retire to the Pub, we feel you should
thoroughly test the program on the Dec-10 and the Vax to see
that accurate results from the program are still obtainable.
This is not to say that you shouldn't be testing the accuracy
of your conversion as you go along.
CHAPTER 3
MASTER FILES
MASTER FILES
As was mentioned earlier, we identified three main master files
that we had to implement on the Vax. The following is a detailed
description of what was done for each Master-file.
3.1 MASTER-PARTS FILE
MASTER-PARTS FILE
The Master-Parts File is the fundamental manufacturing file most
systems are driven off. It is a random-access sixbit file keyed via
part-number through a randomizing routine. Its format on the Dec-10
is sixbit,block 2 with 378 characters per record. It contains basic
information about each part such as description, major-supplier, and
standard-cost.
Our desire was to reproduce this file on the Vax in the best
possible structure with as little conversion effort as possible. This
basically became a decision of making the file's organization relative
(random-access) or indexed. We decided to utilize an indexed
organization for several reasons.
3.1.1 Format Of File On Vax
Format Of File On Vax
1. Randomizing Routine
The Randomizing Routine was an un-supported piece of
software that served its purpose but was still clumsy to use.
By restructuring the Master-Parts file into an indexed file,
we were able to do away with this routine and access the file
directly.
2. File Maintenance
We were able to do away with manual file maintenece
programs.
3. Datatrieve
Datatrieve is a software package that allows very easy
access and formatting of data on a Vax. However it does not
function on a relative file. Thus by using an indexed file
MASTER FILES Page 3-2
MASTER FILES
structure, we obtain the ability to utilize this product.
4. Keys
An indexed-file structure allowed us the capability for
multi-key access. In other words, we were no longer
restricted to using the part-no as the only way to directly
retrieve information about parts.
3.1.2 Steps Required To Convert File
Steps Required To Convert File
The first step in converting the Master-Parts File was to
overcome the problem of Comp fields which are used. A field in a
Computational format could not be directly brought from the Dec-10 to
the Vax because of the difference in word-length between the two
machines. Therefore, as a first step a program was written
(PDCF::PUR8:MPFCVT.CBL[4040,20273] to read the file sequentially
building a 0-blocked Ascii file converting all Comp fields to
numeric-display format. The new Master-Parts file will only be
"chained" to a Bill-Of-Material file. Thus all other chains are
zeroed out. The chain to the Bom file, known as 'MP-BOM-CHAIN' was
kept intact as is discussed below.
Our next problem was to move our newly created data file from the
Dec-10 to the Vax. This was difficult because the Dec-10 does not
write tapes in a standard ANSI labelled format, instead writing
unlabeled Ascii tapes in a strange format. We thus used a utility
called Tenvax which runs on the Dec-10 and writes Vax ANSI labelled
magtapes.
This resulted in a sequential Ascii file on the Vax. We wrote a
conversion program on the Vax (MPFBUILD.COB) to replace the Comp
fields in the file. We then used the RMS FDL utilities (File
Definition Language) to convert this sequential Ascii file to an
indexed Ascii file with one key and all necessary optimization
criteria.
The following shows the detail of the above process.
1. RUN PUR8:MPFCVT[4040,20273]
RUN PUR8:MPFCVT[4040,20273]
This program runs on the Decsystem-10 and takes as input
MPF.MFG and outputs a file called MPF.VAX.
2. R TENVAX
R TENVAX
This step copies MPF.VAX onto a Vax-readable tape.
3. $COPY
$COPY
This step copies MPF.VAX from the tape to a user-area on
the VAX.
4. $RUN [RICK.COBOL]MPFBUILD
$RUN [RICK.COBOL]MPFBUILD
MASTER FILES Page 3-3
MASTER FILES
This step takes as input MPF.VAX and builds a sequential
file MPF.MFG.
5. $CONVERT/FDL=[RICK.LIBRARY]MPF.FDL MPF.MFG MASTPART.DAT
$CONVERT/FDL=[RICK.LIBRARY]MPF.FDL MPF.MFG MASTPART.DAT
This step builds an indexed file called MASTPART.DAT
according to the specifications in the MPF.FDL file and
containing the data that was in MPF.MFG
3.2 BILL OF MATERIAL FILE
BILL OF MATERIAL FILE
The Bill-Of-Material file is parts list of components needed to
build a manufactured or assembled part. It is a random-access sixbit
file on the Dec-10 and is linked to the Master-Parts file through the
Bom-chain. This Bom-chain always points to the 'header' record of the
latest eco for the parent part. In this 'header' record is a bom-code
(which is 1 to signify the 'header' record), the latest eco number,
and the parent part-number. After this 'header' record is the list of
'detail' records which itemize how the particular parent part is
built. On each 'detail' record is a bom-code (which is 2 to signify a
'detail' record), a component part-number, a quantity field revealing
how much of that component it takes to build the parent part, and a
'chain' linking this component part back to the Master-Parts file.
This is used in order to quickly find out detailed information about
the detail part such as its cost.
3.2.1 Format Of File On Vax
Format Of File On Vax
Because of the way this file is structured, we decided to
implement this file as a relative structured file. This is primarily
because of the need to preserve the order of the records within the
file (header-record,detail-record, detail-record,...). If we tried to
implement this file as indexed, we would have had to determined a
unique way to identify a bom record given a part number. This could
have been done by keeping the latest Eco on the Master-Parts File.
Nevertheless indexing this file woult have re-organized the order of
the file and presented us with additional problems we felt were not
desirable.
3.2.2 Steps Required To Convert File
Steps Required To Convert File
In order to reproduce this file on the Vax, another conversion
program was written (PDCF::PUR8:BOMCVT.CBL[4040,20273]). As is
discussed above, the Master-Parts File and Bill-Of-Material file are
connected via a chain. The chain on the Master-Parts File always
points to the latest ECO on the BOM file. Previous ECO's are found by
using another chain on the header-record called 'BOM-HEADER-CHAIN'
which points to another header-record in the BOM file representing an
older bill-of-material for the same part. When these files are
brought over to the Vax, they become sequential files and thererfore
must be relinked. Since it was impossible to distinguish a current
eco from a previous eco except for the way the files are chained, it
MASTER FILES Page 3-4
MASTER FILES
was necesary to create a BOM file containing only the latest eco's.
Thus this program reads the Master-Parts file sequentially, looking
for the latest eco Boms for all parts. It builds a new Bom file of
only the latest eco Boms, gets rid of all c-filled and d-filled
records, and zeros out the forward and backward chains. Also the
'BOM-COMPONENT-MPF-CHAIN' which links a detail part to the MPF will no
longer contain a cell-address of a random Master-Parts file. Instead
it will contain a part-number which will be the same as a component
part-number and will be used as a key to the indexed Master-Parts
file.
We the brought this file over to the Vax using the Tenvax utility
which resulted in a sequential Ascii file. This left us now with an
indexed Master-Parts File keyed via part-number, and a sequential
Bom-file. In order to create a link betwen the two files, we had to
write another program 'BOMBUILD' which does the following. The BOM
file is read sequentially looking for header-records (BOM-CODE of 1).
As this is done the program is writing the Bom-records in the
sequential files to a new relative file. When a header record is
found, the address (or cell-number) of that record is written to the
'MP-BOM-CHAIN' of the Master-Parts Files, thus establishing the
necessary link. At the same time, this program replaces any Comp
fields that were taken out in order to transport the file.
The following shows the detail of the above process.
1. RUN PUR8:BOMCVT[4040,20273]
RUN PUR8:BOMCVT[4040,20273]
This program runs on the Decsystem-10 and takes as input
BOM.MFG and outputs a file called BOM.VAX
2. R TENVAX
R TENVAX
This step copies BOM.VAX onto a Vax-readable tape.
3. $COPY
$COPY
This step copies BOM.VAX from the tape to a user-area on
the VAX.
4. $RUN [RICK.COBOL]BOMBUILD
$RUN [RICK.COBOL]BOMBUILD
This step takes as input BOM.VAX and builds a relative
file BILLMATL.DAT appropriately linked to the Master-Parts
File.
Thus our end result was to have the Master-Parts File exist as an
index file with one key (part-number) and the Bill-Of-Material files
exist as a relative file keyed by a chain that exists on the
Master-Parts File.
CHAPTER 4
VAX-11/780 SOFTWARE
VAX-11/780 SOFTWARE
The only software that comes with the purchase of a Vax-11/780 is
the VAX/VMS Operating System. All other software must be ordered
seperately. Below is the before-mentioned list of all the software we
feel may be applicable for our environment along with the respective
ordering option numbers and distribution media.
1. VAX-11 Cobol --> Opt# QE099-AY --> Floppy disk
VAX-11 Cobol
A high-performance, interactive language processor based
on on the ANSI X3.23-1974 standard.
2. VAX-11 Datatrieve --> Opt# QE074-AM --> 9-Track Magtape
VAX-11 Datatrieve
A comprehensive data management tool that provides both
interactive and program-callable access to data in sequential
and indexed file organizations. It consists of query and
report-writing facilities, a business graphics capability,and
has local and distributed high-level data access facilities
to retrive data stored by RMS and VAX-11 DBMS files on
VAX/VMS.
3. VAX-11 Database Management System --> Comes with QE074-AM
VAX-11 Database Management System
Vax-11 DBMS is a full scale CODASYL-compliant database
management system.
4. VAX-11 Common Data Dictionary --> Comes with QE074-AM
VAX-11 Common Data Dictionary
A central repository for data about data. It integrates
VAX information management products using a single set of
data descriptions as a common resource.
5. DECnet-VAX --> Opt# QED03-AY --> Floppy Disk
DECnet-VAX
DECnet-VAX allows a suitably configured VAX/VMS system
to participate as a Phase III DECnet node in computer
newtorks.
6. VAX-11 FMS --> Opt# QE701-AY --> Floppy Disk
VAX-11 FMS
VAX-11 Forms Management System is a set of utilities and
subroutines that provide sophisticated screen formatting
capabilities for application programs written in a variety of
standard programming languages.
VAX-11/780 SOFTWARE Page 4-2
VAX-11/780 SOFTWARE
7. VAX-11 DECMAIL --> Opt#
VAX-11 DECMAIL
A stand-alone single node mail and filing system which
can create, edit, send, and process messages on a single VAX
computer system.
8. DX/VMS Facility --> Opt# QE707-YY --> Floppy Disk
DX/VMS Facility
This is a DX/VMS WPS-8 to host utility which is A
Fortran IV-PLUS software package that executes on a VAX/VMS
operating system. It enables a WPS-8 word processing system
to communicate with the VAX/VMS host over an asynchronous
terminal interface.
9. VAX-11 Basic --> Opt# QE095-AY --> Floppy Disk
VAX-11 Basic
A superset of BASIC-PLUS-2
10. VAX-11 FORTRAN --> Opt# QE100-AY --> Floppy Disk
VAX-11 FORTRAN
An implementaion of FORTRAN-77.
11. Code Management --> Opt# QE007-AY --> Floppy Disk
Code Management
A set of commands to help software developers manage the
files of an on-going project.
12. VAX-11 DECalc --> Opt# QE310-AY --> Floppy Disk
VAX-11 DECalc
An interactive applications package for creating,
editing, and manipulating the electronic equivalent of an
accountant's spreadsheeet. General applications categories
include loans and investments, advertising and sales, general
business, and engineering.
13. VAX-11 ReGIS Graphics --> Opt# QE118-Ay --> Floppy Disk
VAX-11 ReGIS Graphics
A collection of subroutines conforming to the standard
VAX/VMS calling interface and designed to support the
graphics capabilities of the VT125.
14. ALL-IN-1
ALL-IN-1
Digital's ALL-IN-1 system is a comprehensive software
package that operates on a VAX computer. ALL-IN-1 combines
many smaller software packages under one menu to create a
total office automation system. These packages include
document processing, electronic mail, desk management (phone
directory and calendar management), information management,
tailored business applications, and program development.
CHAPTER 5
EVALUATION OF 1032 VS DATATRIEVE
EVALUATION OF 1032 VS DATATRIEVE
1022 is a database managenment system for Decsystem-10 and
Decsystem-20 operating systems. 1022 allows complete flexibility in
terms of managing data with extensive reporting capabilities. It
allows a user to interactiveley query a database without any previous
thought about the structure of the data. It also give the programmer
some very elegant data manipulation techniques with which to work. It
is a system that is not replacable in the Dec-10/20 environment since
there is no other software available that has its power.
Software House, the developers of 1022, has developed a similar
product for the Vax/Vms operating system. This product, called 1032,
emulates 1022 in terms of its basic concepts and user interface. Like
1022, 1032 is a very powerfull tool which is easy to use and yet has
extreme power. 1032 has almost identical commands and functionality
as 1022. Unlike the situation with 1022 however, there is another
product which performs very similar functions of 1032. This product
is called Datatrieve and is Digital developed.
Datatrieve develops an immediate advantage because of the above
statement. Because it is Digital developed, we would obviously save
money by using Datatrieve instead of 1032 (Software House quoted a
price of 40,000 dollars for 1032). The question that then arises is
if Datatrieve truly can satisfy the basic needs that 1022 satisfied
and 1032 could potentially satify; if so, what are the advantages and
disadvantages of each?
As I see it, 1032 has three main advantages. First and foremost,
I think one can safely say that 1022 applications could be converted
much easier to 1032 that Datatrieve. This is obviously because 1022
and 1032 are very similar products. Although Software House admitted
that 1022 and 1032 were not completely upward compatible, one cannot
deny that 1022 to 1032 migration would be the easier route. Secondly,
I feel that the user-interface of 1032 is better than that of
Datatrieve. The commands are more English-like and data manipulation
is more 'natural'. One must keep im mind however that I was a long
time user of 1022 and therefore would naturally find 1032 easier to
understand. Nevertheless, our users are pretty much in the same
situation and thus would find 1032 more attractive. Lastly,
Datatrieve does not have the power of 'keying' data-elements in a file
like 1032 does. This feature can often be valuable especially for
online applications. If a user suddenly becomes interested in a
particular data-element, that data-element can 'instantly' be 'keyed'
and thus allow quick access via that data-element. Although
Datatrieve allows inquiry via any data-element in a file, information
EVALUATION OF 1032 VS DATATRIEVE Page 5-2
EVALUATION OF 1032 VS DATATRIEVE
retrieval is dramatically slowed down if that data-elemant is not
'keyed'. 'Keying' a data-element in Datatrieve is more difficult and
time-consuming than 1032 and also more costly to maintain.
Nevertheless, I feel that the advantages of Datatrieve far
outweigh those of 1032. The basic functionality is the same in both
products. Both can retrieve data interactively through any
data-element in a file and can consequently update or delete that
data. Both allow high-level program interface for sophisticated
programmer applications. 1032 however has some serious shortcomings.
Datatrieve accesses RMS files directly whereas 1032 utilized its own
'bundled' file structure. This would mean that certain data files
would either be exclusively 'owned' by 1032 or else would have to be
duplicated. Also Datatrieve currently supports forms interface,
graphics, and distributed data processing over a network. 1032
currently does none of this.
Finally and in summary, I feel that purchsing 1032 would 'lock'
us into a dependence on Software House that I think would be
un-healthy. Since both products perform similar functions, we do not
'need' 1032. Both products are in their infancy and will gradually
improve. Digital is making a commitment to Vax Information
Architecure of which Datatrieve seems to be an integral part. By
staying within this architecture, we will benefit from advances
Digital will make and at the same time keep in tune with forthcoming
products.
CHAPTER 6
MENU-DRIVEN FRONT-END SYSTEM
MENU-DRIVEN FRONT-END SYSTEM
6.1 SYSTEM OVERVIEW
SYSTEM OVERVIEW
Our front-end system for the Vax will be modeled after some of
the concepts of the current front-end system that exists for Corporate
Purchasing on the Decsystem-10. It will be a menu-driven system that
will provide easy interface to application systems as well as a high
degree of security. When a user logs onto our Vax, he will be
immediately greeted by a menu which will show any systems he has
access to. He may then select a system and make further decisions on
the specific program or programs he wishes to exercise.
6.2 DATA FILES
DATA FILES
The front-end system will utilize two files to determine valid
users and their corresponding valid systems. The first will be the
USER-FILE or 'FEUSER.DAT'. The second will be the PROGRAM-FILE or
'FEPROGRAM.DAT".
6.2.1 USER-FILE
USER-FILE
This file will be indexed with one primary key, badge-number, and
no secondary keys. The following describes the data elements within
the file.
1. BADGE NUMBER
BADGE NUMBER
This field will correspond to the badge-number of the
user desiring access to a system. It will be the primary key
of the file and will be 6 numeric characters in length or PIC
9(6). This field must be unique.
2. PASSWORD
PASSWORD
This field will correspond to the user's password. It
should be know only to the user as it the most fundamental
piece of information to ensure the security of the systems
that are run from the front-end system. Each user will
always have the ability to change their password for security
purposes. It will be a maximum of six alphanumeric
characters in length or PIC X(6).
MENU-DRIVEN FRONT-END SYSTEM Page 6-2
MENU-DRIVEN FRONT-END SYSTEM
3. FIRST NAME
FIRST NAME
This field will correspond to the user's first name and
will be fifteen alphanumeric characters in length or PIC
X(15).
4. LAST NAME
LAST NAME
This field will correspond to the user's last name and
will be fifteen alphanumeric characters in length or PIC
X(15).
5. MAIL STOP
MAIL STOP
This field will correspond to the user's mail-stop and
will be fifteen alphanumeric characters in length or PIC
X(15).
6. PHONE NUMBER
PHONE NUMBER
This field will correspond to the user's phone-number
and will be seven numeric characters in length or PIC 9(7).
7. COST CENTER
COST CENTER
This field will correspond to the user's cost-center and
will be four alphanumeric characters in length or PIC X(4).
8. MANAGER'S FIRST NAME
MANAGER'S FIRST NAME
This field will correspond to the first name of the
user's cost-center manager and will be fifteen alphanumeric
characters in length or PIC X(15).
9. MANAGER'S LAST NAME
MANAGER'S LAST NAME
This field will correspond to the last name of the
user's cost-center manager and will be fifteen alphanumeric
characters in length or PIC X(15).
10. MANAGER'S MAIL STOP
MANAGER'S MAIL STOP
This field will correspond to the mail-stop of the
user's cost-center manager and will be fifteen alphanumeric
characters in length or PIC X(15).
11. DATE ADDED
DATE ADDED
This field will correspond to the date upon which the
user was first added to the front-end system as a valid user.
It will be six numeric characters in length or PIC 9(6) and
will be in the format YY/MM/DD.
12. SYSTEM
SYSTEM
This field will correspond to a particular system that
the user is able to access. It will occur 20 times within
the file thus allowing up to 20 possible systems a user can
access. It will be four alphanumeric characters in length or
MENU-DRIVEN FRONT-END SYSTEM Page 6-3
MENU-DRIVEN FRONT-END SYSTEM
PIC X(4).
13. SECURITY
SECURITY
This field will correspond to the security that is
associated with a particular system for that user. It will
be used to distinguish the types of things a user can do
within a given system. For a user to gain access to
particular programs within a system, his security must be the
same or greater than the security which will exist on the
program file for programs within that system. It will occur
20 times corresponding to the 20 possible different systems
and will be one numeric character in length or PIC 9. Its
possible values are as follows.
1. 0 = No access
2. 3 = Inquiry access
3. 5 = Update mode for adds and changes
4. 7 = Update mode for adds, changes, and deletes
14. USER ACCESS FLAG
USER ACCESS FLAG
This field will correspond to a flag used to quickly and
easily remove a user's access from getting past the front-end
system. It will be one alphanumeric character in length or
PIC X. Valid users would always have an access flag of 'Y'.
Invalid users would have an access flag of 'N'.
6.2.2 PROGRAM FILE
PROGRAM FILE
This file will be indexed with one primary key. This key will
consist of two seperate data-elements. One will be the system-name
which corresponds to the same system-name data-element found in the
user-file. The other part of the key will be an option-number which
will differentiate systems and their corresponding programs. This
file will contain information about all possible systems and the
respective programs that users in the user-file could access. The
following describes each data element found in the program-file.
1. SYSTEM
SYSTEM
This field will correspond to a system name that is
currently available for the Corporate Purchasing community to
use. It will be a partial key of the program-file and will
be four alphanumeric characters in length or PIC X(4).
2. OPTION NUMBER
OPTION NUMBER
This field will correspond to an option number that a
user will select from his menu. There will be two types of
records in the program file. The first will be a system
record, which for a particular system will be unique. The
MENU-DRIVEN FRONT-END SYSTEM Page 6-4
MENU-DRIVEN FRONT-END SYSTEM
system record will be identified by an option-number of 50 or
greater. The other type of record will be a program record
which will be identified by an option-number of less than 50.
For a particular system there can be up to twenty programs,
thus up to twenty program records. This field will be three
numeric characters in length or PIC 9(3).
3. TITLE
TITLE
This field will correspond to the title of a system or
the title of a program depending on the type of record. It
will be thirty alphanumeric characters in length or PIC
X(30).
4. DEVICE
DEVICE
This field will correspond to a physical device. For a
system record, it will identify the device that the major
data-file for the system redides on. For a program record,
it will identify the device that the program resides on. It
will be six characters in length or PIC X(6).
5. USERNAME
USERNAME
This field will correspond to the account or area where
either the major data file resides for a system or where a
program resides for a program record. It will be twelve
alphanumeric characters in length or PIC X(12).
6. FILENAME
FILENAME
This field will correspond to the filename of the major
data file for a system or the filename of a program for a
program record. It will be nine alphanumeric characters in
length or PIC X(9).
7. FILE TYPE
FILE TYPE
This field will correspond to the file extension for the
file. If the record pertains to a system, this data element
will contain 'DAT'. For a program record, this data element
will contain 'EXE' to refer to a Cobol program or 'DTR' to
refer to a Datatrieve procedure. It will be three
alphanumeric characters in length or PIC X(3).
8. SECURITY
SECURITY
This field will be used to screen out unauthorized users
from whole systems or from particular programs within
systems. If the security value for a system record is
greater than the security value for this system in the
user-file, then the user is denied access to the entire
system. If the security value for a program record is
greater than the security value for the corresponding system
in the user-file, then the user is denied access to that
particular program within that system. This feature can be
used to allow users to run programs to retrieve data for a
particular system but not to update the data. This field
will be one numeric character in length or PIC 9.
MENU-DRIVEN FRONT-END SYSTEM Page 6-5
MENU-DRIVEN FRONT-END SYSTEM
9. PROGRAM ACCESS-FLAG
PROGRAM ACCESS-FLAG
This field will be used to turn off the availability of
a particular program or a whole system for the entire user
commmunity. It could be used if a particular program
develops a serious problem for example. It will be one
alphanumeric character in length or PIC X. It will normally
be set to 'Y'. It will be set to 'N' if the particular
program or system is to be shut down.
--------