• Please review our updated Terms and Rules here

What language is used for code examples in VAX VMS manuals?

vldmrrr

Experienced Member
Joined
Aug 20, 2016
Messages
169
Location
IA, USA
So I've got these VMS programming manuals for free from this thread (thanks @thephysicist) and started emerging myself into time warp reading paper manual that requires sizable desk space for comfortable paging. I started from the roots: "Guide to VMS Programming Resources" (AA-LA57A-TE). Very soon I realized I can not make much sense from code examples given in the volume because I can not completely figure out the syntax and there seem to be no explicit statement of what language is used for examples. It is definitely not pseudo code. It does not seem to be macro (I've not yet dive into VAX macro, but there are really constructs there that seem to be not appropriate for any assembler). I noted that some examples have bold titles in the shape of supposedly file name like REPEAT.FOR, that may be followed by the first line like `PROGRAM REPEAT` which makes me think it is fortran, but the code in general does not look anything like fortran I know (admittedly all I knew was fortran iv, after which I switched straight to pascal). And yeah, the examples code looks more like mutilated pascal, rather than mutilated fortran. But what really baffles me, why it seems nowhere is stated explicitly what language is used for examples in manuals. Or did I miss it? And what is it?
 
Can you post a picture of a page or two of this code? That would help alot.
 
Can you post a picture of a page or two of this code? That would help alot.
Well, I posted the link to the manual in pdf file on bitsavers site in above message. The example I referenced with 'REPEAT.FOR' in the title is on page 83 of that pdf file.
 
The example 3-1 REPEAT.FOR starting on page 3-4 is DEC (VAX) FORTRAN. It is part of a demo for inter-process communication and is designed to run with the earlier CALC.FOR. Apparently it's using Logical names for communication between the two programs.

CALC.FOR uses the CRELNM system service to create a logical name which has the information and then does a LIB$SPAWN to run the REPEAT program which reads the logical name and does the calculation.

It probably doesn't look like any other FORTRAN program because it's mostly VAX/VMS system calls.

This manual is intended to show how to use VAX/VMS programming resources so it's going to be heavy on VAX/VMS specific examples and not so much on general programming.

The Guide to VMS Programming Resources is designed to help programmers
understand and use the features offered by the VMS operating system. This
guide is not intended to be a complete description of any one programming
language (see the Associated Documents section for related documentation);
instead, it focuses on the tasks that typically confront programmers and
suggests ways to use the VMS operating system features to accomplish those
tasks.
An overview of all programming resources is provided in the first
chapter. The rest of the document is organized according to the following
programming tasks:
• Using processes
• Communicating with the system, with other programs, and with other
program components
• Synchronizing program execution
• Sharing program code and data
• Using system security features
• Completing 1/0 tasks
• Condition handling
• Allocating and deallocating memory
 
Yep, it's DEC's 'flavour' of FORTRAN.

There is going to be a learning curve if you haven't done anything like this before - but stick at it and it will start to make sense!

Dave
 
It probably doesn't look like any other FORTRAN program because it's mostly VAX/VMS system calls.
To me it did not look like fortran because the code was liberally indented and not starting at position 7, and all those weird STRUCTURE, UNION, MAP declarations, DO loop blocks. Really looks more like pascal or algol. But yeah, after checking checking evolution of fortran on wikipedia I see it. Still I wonder why the authors of manual were assuming familiarity of reader with modern flavor of fortran so that it did not even occur to them to mention it somewhere in introduction.
 
To me it did not look like fortran because the code was liberally indented and not starting at position 7, and all those weird STRUCTURE, UNION, MAP declarations, DO loop blocks. Really looks more like pascal or algol. But yeah, after checking checking evolution of fortran on wikipedia I see it. Still I wonder why the authors of manual were assuming familiarity of reader with modern flavor of fortran so that it did not even occur to them to mention it somewhere in introduction.
I could be wrong of course, but I believe that those examples are in DCL (Digital command language). I remember having to type in a few and I thought WoW, there is a lot of stuff in here as compared to the batch files in MSDOS that I was used to.
 
I could be wrong of course, but I believe that those examples are in DCL (Digital command language). I remember having to type in a few and I thought WoW, there is a lot of stuff in here as compared to the batch files in MSDOS that I was used to.
You can immediately recognize DCL command file by lots of lines starting with $ sign (as can be seen in this manual, for example). The examples referenced above do not have such lines.
 
Yep, it's DEC's 'flavour' of FORTRAN.
Exactly. Not F77, but rather something between F77 and F90. ANSI X3J3 reworked the language quite substantially--the original target was supposed to be F88, but the internal committee fighting delayed the deployment a couple of years. DEC, as I recall, was a particular thorn in the side of the committee, as more than once, it stated that it would withdraw from the committee if their version was not implemented.
A similar thing happened with IBM, insisting that its vector extensions (IBM VECTRAN) be adopted without substantive changes.
That we got an ANSI standard from the effort was remarkable.
(I was there)
 
It looks like the issue is resolved, but lots of things interest me and I am curious...

Using a few lines from the PROGRAM REPEAT example, I searched for INTEGER*2 and CHARACTER* in AA-00188-TE. That reference has examples of things, like data types, in all of the support languages at the time. Out of the 12 listed, only FORTRAN had that syntax.

A.2 VAX ADA IMPLEMENTATION A-13
A.3 VAX APL IMPLEMENTATION A-15
A.4 VAX BASIC IMPLEMENTATION A-18
A.5 VAX BLISS IMPLEMENTATION A-22
A.6 VAX C IMPLEMENTATION A-25
A.7 VAX COBOL IMPLEMENTATION A-28
A.8 VAX FORTRAN IMPLEMENTATION A-31
A.9 VAX MACRO IMPLEMENTATION A-36
A.10 VAX PASCAL IMPLEMENTATION A-38
A.11 VAX PL/1 IMPLEMENTATION A-42
A.12 VAX RPG II IMPLEMENTATION A-48
A.13 VAX SCAN IMPLEMENTATION A-51

I suppose I should get back to doing something more suitable :)
 
What I remember is having to lock doors to prevent the DEC "preventive maintenance" personnel access. Not my idea, I was told to do that. The PDP-8's were very touchy (at least for us) and they were on the way out as I was on the way in. The replacements were 11/73's and they were *much* more reliable. I do remember it being a pita to get contiguous blocks of HD space - we had certain custom software that required that. I could get by with massive file copy, paste, delete, sessions - essentiall rebuilding and then deleting - which resulted in large contiguous spaces, but if you really wanted a clean platter you had to go to a tape restore...that was always a "go out to lunch" and pray you still had a machine to work with when you came back.

One time, I was given a complete 11/73 system (a transfer from another institute, not a personal gift). The problem was that nobody could remember a password to any account. None of the IT people could help. I exhibited dogged determination (e.g., mild OCD). I was NOT going to be beaten by a machine!

Eventually, I found a hack wherein you could interrupt the booting process at a certain point and be presented with a question, "Reason for shutdown?" and if you knew the answer you would be into a "monitor" where you had a few minutes to create a new account with admin privs - something like 200,200 from memory. So, you never broke a PW but you had a new account and you went on with your work. I was quite the "hero" and refused to tell anyone, but my supervisor, how I had done it - he got a kick out of it. Had to be like 1986/7.

Good times.
 
Last edited:
I remember having to do "crunches" of my file area on some Sperry equipment to get contiguous files. That is likely not the correct word, but I can't think of what it was called. It moved your files around to get them into contiguous space. Had to do this every so often and it took quite a bit of time.
 
I remember having to do "crunches" of my file area on some Sperry equipment to get contiguous files. That is likely not the correct word, but I can't think of what it was called. It moved your files around to get them into contiguous space. Had to do this every so often and it took quite a bit of time.
I believe it was SQUEEZE on RT-11 and KRUNCH on UCSD PASCAL so it was a common command with the early file systems.
 
I remember having to do "crunches" of my file area on some Sperry equipment to get contiguous files. That is likely not the correct word, but I can't think of what it was called. It moved your files around to get them into contiguous space. Had to do this every so often and it took quite a bit of time.
I had a brief period of contact with a UNIVAC 11/80. It wasn't all that unusual to be doing something and get a message displayed about a DISK REPACK.
And you go to cool your jets while the machine did just exactly that: it repacked the disk to recover the holes between files..
 
Back
Top