VMS -- List of YAB's (Yet Another Bug)

This document is neither a manual nor a tutorial for VMS, more a summary on local usage, problems and peculiarities. See also the FAQ (Frequently Asked Question) list. Bugs fixed by now:

VMSmail: Wrong DECnet node names
System
OpenVMS V7.1 AXP
Problem
DECnet mails send with VMSmail get a wrong From: address on some nodes. For example, an email send from node AXP612 gets the From: address:
	AXP612.gsi.de::MUELLER
instead of AXP612::MUELLER or just MUELLER. The mail is delivered properly, but a reply will bounce.

Note, that this behaviour is node specific, some nodes produce proper From: addresses and some don't.

This effect was caused by a fix introduced to allow Xterms to work with sessions initiated from VMS. VMS obviously sends the contents of the logical SYS$NODE_FULLNAME as node name to the Xterm. This is clearly wrong, the logical holds an DECnet node name, the Xterm needs an IP node name (at least non-DEC ones). The wrong node name leads to problems if host based access control is enabled (which should be the default). To allow the usage of Xterms with access control enabled, the logical SYS$NODE_FULLNAME was changed to hold the IP node name. The final setup, e.g.

	AXP607 $ sho log *node_f*
	(LNM$SYSTEM_TABLE)
	  "SYS$NODE_FULLNAME" [super] = "LOCAL:.AXP607::"
	  "SYS$NODE_FULLNAME" [exec] = "AXP607.gsi.de"
now allows the Xterms to work, but leads to the VMSmail problems. It's unclear why that happens only on some nodes.
Workaround
None know to get the correct From: address.
When replying to an email with such an address, correct the node name portion of the To: field manually.
History
Found: 17-Oct-1997

UCX FTP: Syntax check of foreign filenames
System
OpenVMS V6.2 AXP - TCP/IP Services Version 3.3 ECO 2
Problem
The handling of the syntax check for the remote file name in get and put commands changed when UCXECO2 was installed for UCX V3.3. A filename with more than one dot (e.g. for UNIX or MVS) must now be enclosed in tripple quotes on get, but must not on put. Examples:
      FTP command	    V3.2 or V3.3    V3.3-UCXECO2

put test.dat     x.x.x		works	    works
put test.dat    "x.x.x"		works	    works
put test.dat  """x.x.x"""	works	    fail - Invalid data set name
get    x.x.x     test.dat	works	    fail - file specification syntax error
get   "x.x.x"    test.dat	works	    fail - file specification syntax error
get """x.x.x"""  test.dat	works	    works
It is hard to understand that on get a tripple quote is required to bypass a misplaced VMS filename syntax check but that on a put the additional quotes are passed to the FTP server, causing an error there.
Workaround
Use tripple quotes for the remote filename on get, but not on put. This works for UCX V3.2 and UCX V3.3-ECO2.
History
Found: 18-Oct-1995, after UCXECO2 was installed.
Fixed: 23-Oct-1995, after UCXECO4 was installed.
Note: After UCXECO4 one can use no or single quotes. A tripplequote leads to a filename with a quote, and with MVS systems, to an "Invalid data set name" error. This behaviour though is consistent with what one would expect.

DCL: Wrong syntax not detected prior V6.2
System
OpenVMS V6.2
Problem
Some DCL syntax errors were not detected prior to VMS V6.2, for example an extra parenthesis after an IF statement. Example
$ if (1))
$ then
$   out "1"
$ else
$   out "not 1"
$ endif
executes fine under V6.1 despite the extra ")" in the if statement. Under V6.2 one gets (correctly) an error:
%DCL-E-INVIFNEST, invalid IF-THEN-ELSE nesting structure or data inconsistency
Workaround
Well, was a bug in V6.1 ....
History
Found: 6-Sep-1996

DECC: Output into process permanent files lost
System
OpenVMS V6.1 AXP - DEC C V4.0-000
Problem
Output into process permanent files gets lost under certain circumstances. Example: execute the following DCL procedure decc_io_problem.com
$ cre decc_io_problem.c

#include <stdio.h>
main() {
  printf("Hello world\n");
}

$ cc decc_io_problem
$ link decc_io_problem
$!
$ define/user sys$output decc_io_problem_1.log
$ run decc_io_problem
$!
$ open/write decc_io_problem_log decc_io_problem_2.log
$ call doit /out=decc_io_problem_log
$ close decc_io_problem_log
$!
$ type decc_io_problem*.log
$!
$ exit
$ doit: subroutine
$ run decc_io_problem
$ exit
$ endsubroutine
The file decc_io_problem_1.log contains Brian's credo, the second file decc_io_problem_2.log however is empty !!
Note, that this behaviour is seen for the DECC compiler and RTL but not for the VAXC compiler (V3.2-044) and RTL.
Workaround
Avoid output into process permanent files explicitely opened from DCL.
History
Found: 20-May-1995
Fixed: 12-Sep-1995 with VMS V6.2 and DEC C V5.0-003 on AXP

UCX FTP: Output of ls, dir, DIR and dir/full
System
OpenVMS V6.1 on VAX or AXP - TCP/IP Services Version 3.1 ECO ?
Problem
The output of directory type commands is now different on VAX and AXP platforms. One expects that lowercase commands are UNIX style and uppercase are conformant to VMS (or DCL) style and
  • ls - to give a short listing
  • dir - to give a long listing
Older UCX versions allowed DIR/FULL to get a long listing, but this disappeared from the online help. The ill-fated ECO 5 FTP client worked as expected. After going back to ECO 4 for the FTP clients one gets a different behaviour on VAX and AXP:
   on VAX (VSBZ):

	FTP> ls LMDV.S117.RAW0012
	LMDV.S117.RAW0012
	
	FTP> dir LMDV.S117.RAW0012
	Volume Unit     Date  Ext Used Recfm Lrecl BlkSz Dsorg Dsname
	DATA23 3390   11/16/94  1 2443  FB   16384 16384  PS  LMDV.S117.RAW0012
	
	FTP> DIR LMDV.S117.RAW0012
	LMDV.S117.RAW0012
	
	FTP> DIR/FULL LMDV.S117.RAW0012
	Volume Unit     Date  Ext Used Recfm Lrecl BlkSz Dsorg Dsname
	DATA23 3390   11/16/94  1 2443  FB   16384 16384  PS  LMDV.S117.RAW0012

   on AXP (AXP612):

	FTP> ls LMDV.S117.RAW0012
	LMDV.S117.RAW0012
	
   -->	FTP> dir LMDV.S117.RAW0012
   -->	LMDV.S117.RAW0012
	
	FTP> DIR LMDV.S117.RAW0012
	LMDV.S117.RAW0012
	
	FTP> DIR/FULL LMDV.S117.RAW0012
	Volume Unit     Date  Ext Used Recfm Lrecl BlkSz Dsorg Dsname
	DATA23 3390   11/16/94  1 2443  FB   16384 16384  PS  LMDV.S117.RAW0012

So the dir command shows a long output as expected on the VAX, but a short like for ls on AXP's.
Workaround
Do different things on VAX and AXP. Or use DIR/FULL, but this might fail with the next version.
History
Found: 17-Nov-1994, after FTP client was rolled back to ECO 5.

UCX FTP: get command ignores device/directory specification
This bug was found November 10th, 1994. As a consequence, the FTP client image was restored to the previous version (V3.1 ECO4) in November 14th, 1994. That should fix this problem on all GSI VAX and AXP systems.
System
OpenVMS V6.1 on VAX or AXP - TCP/IP Services Version 3.1 ECO 5
Problem
With the patch ECO 5 the get command ignores the device and directory specification given for the output file. The file is always put in the current working directory. Example:
   $ ftp axp601
   FTP> get sys$login:login.com al_temp0:[mueller]x.xxx
   local: x.xxx  remote: sys$login:login.com

   $ dir al_temp0:[mueller]x.xxx
   %DIRECT-W-NOFILES, no files found

   $ dir x.xxx
   Directory KP3$AROOT:[MUELLER.SYS.TEST]
   X.XXX;1                   
The file x.xxx ended up in the current working directory and not in al_temp0:[mueller] as specified in the get command.
Workaround
Do one of the following:
  • use "set default dev:[dir]" before you start ftp
  • use "lcd dev:[dir]" after you start ftp
  • use "SET DEFAULT dev:[dir] /LOCAL" after you start ftp
History
Found: 10-Nov-1994, after Patch ECO 5 was installed.
Response: 21-Nov-84 : DEC argues, that specifying device/directory in get was never documented, the online help states
      local_file
         Optional. Default: Same name (without any device or directory names).
DEC's statement is obvious nonsense because the `without any device or directory names' phrase clearly relates to what happens if it is defaulted. Other UNIX FTP implementations allow the specification of a full filename, so why not UCX...

UCX FTP: mget fails with "disk quota exceeded"
System
OpenVMS V6.1 on VAX - TCP/IP Services VAX Version 3.1
Problem
The mget command in FTP tries to opens a temporary file on sys$scratch but fails with
   %UCX-E-FTP_OPNOUT, Error opening for output :
                      SYS$SCRATCH:UCX$FTP_TEMP.FILE$1452
   -RMS-E-CRE, ACP file create failed
   -SYSTEM-F-EXDISKQUOTA, disk quota exceeded
The ALADiN group login sets logical sys$scratch to a directory on a scratch disk. The directory is owned by a resource identifier, with a security profile like
   user-name.DIR;1           ALADIN (RWE,RWE,RE,RE)
      (IDENTIFIER=[user-name],OPTIONS=NOPROPAGATE,ACCESS=R+W+E+C)
      (IDENTIFIER=ALADIN,ACCESS=R+W+E+C)
      (IDENTIFIER=ALADIN,OPTIONS=DEFAULT+PROTECTED,ACCESS=R+W+E+D+C)
Many other programs, notably NCSA MOSAIC and DEC LSEDIT, create temporary files on sys$scratch and succeed to do so. It's also no problem to get a file with FTP onto the scratch disk. Only the temporary file created during the mget seems to be a problem.
Workaround
Direct sys$scratch to a your home directory before you start, e.g. with
   $ define /nolog sys$scratch sys$login
DEC's Reaction
sys$scratch has to be reassigned with def/exe in order to work with UCX. The logic behind this is unclear. This behaviour is accepted as a bug. (21-OCT-1994).
History
Found: 20-Oct-1994

Rdb: SELECT DISTINCT ... ORDER fails
System
OpenVMS V6.1 on VAX - DEC Rdb 6.0
Problem
An interactive SQL query involving the combination of DISTINCT and ORDER gives the wrong result, the returned columns are not ordered as requested.

Example: For the table CROSSREF:

	Columns for table CROSSREF:
	Column Name                     Data Type        Domain
	-----------                     ---------        ------
	REFERENCE                       CHAR(32)         D_REFERENCE
	 Foreign Key constraint CROSSREF_FOREIGN1
	RANK                            INTEGER
	REFERSTO                        CHAR(32)         D_REFERENCE
with sorted indices on REFERENCE and REFERSTO and the query
	select distinct cast (refersto as char(20)),
		cast ((select count(*) from crossref c1
	                where(c1.refersto=c.refersto)) as smallint)
	        from crossref c
	        where (not exists(select reference from main m
	                   where(m.reference=c.refersto)))
	        order by 2 desc limit to 10 rows;
one gets the response
	 ARNPS 37(1987)493           8
	 PR C16(1977)629            13
	 ZP A324(1986)97             8
	 PR C31(1985)1730            9
	 PRL 32(1974)741             9
	 PRL 37(1976)1202            9
	 PRL 53(1984)763             7
	 PRL 52(1984)1590           13
	 NP A474(1987)173            9
	 PRL 57(1986)302             7
	10 rows selected
This are indeed the ten columns with the largest value in column 2, but they are returned unsorted. The same query without distinct works as expected, so the problem seems to be the combination of distinct and order.
Workaround
none
History
Found: 5-Oct-1994

AXP: DEC Fortran doesn't catch infinite Format loop
System
OpenVMS V6.1 on AXP - DEC Fortran V6.2-508
Problem
If a FORMAT statement contains no conversion specifier but is used in a WRITE with an I/O list the AXP Fortran runtime systems ends in an endless loop. Example:
        program test
	i = 1
	write(6,1001) i
	stop
1001	format(' Only text but no conversion specifier given....')
	end
The same code produces on a VAX the runtime error
	%FOR-F-INFFORLOO, infinite format loop
Workaround
none
History
Found: 9-Feb-1995

AXP: DEC Fortran gives bad `No Path' warning
System
OpenVMS V6.1 on AXP - DEC Fortran V6.2-508
Problem
A %FORT-I-NOPATH, No path to this statement warning is generated if a main program consists of an endless loop. Example
        program test
	do while(.true.)
	  call lib$wait(1.)
	enddo
	end
The same code compiles fine under DEC Fortran V6.2-108 on VAX.
Workaround
none
History
Found: 9-Feb-1995

DEC Fortran on VAX and AXP give different warnings
System
OpenVMS V6.1 on AXP - DEC Fortran V6.2-508
OpenVMS V6.1 on VAX - DEC Fortran V6.2-108
Problem
The DEC Fortran Compilers on VAX and AXP are unfortunately all but compatible:
  1. The /WARN=UNUSED option (default) is ignored on AXP's but causes informal "%FORT-I-VARUNUSED" messages on VAX's.
  2. The VAX compiler is now more effective in finding questionable coding than the AXP compiler. One gets
         %FORT-I-USEBEFDEF, Use of variable before definition
         %FORT-I-BRNCHINTOBLK, Questionable branch into loop or block
    
    errors on a VAX for obviously bad code, but not on an AXP.
  3. The AXP compiler supports the /INCLUDE qualifier, the VAX compiler only allows to set the include search path with the FORT$INCLUDE logical.
The following little program produces
     %FORT-I-BRNCHINTOBLK, Questionable branch into loop or block
     %FORT-I-VARUNUSED, Variable was declared but not used
on a VAX but no message on an AXP (compiled with /warn=all)
                program test1
                implicit none
                integer  i,j
                real     x,y,z
                do i=1,10
                  x = 0.5 * i
                  y = sin(x)
                  if (y .gt. 0.) then
                    if (abs(y) .lt. 0.5) goto 100
                    j = 1
                  else
        100         continue
                    j = 0
                  endif
                  write(6,*) i,j,x,y
                enddo
                stop
                end
Beyond that: The /SYNCHRONOUS qualifier isn't mentioned in the HELP on Fortran on AXP's.
Workaround
none
History
Found: 30-Sep-1994

AXP: FORTAN OPEN ignores BLOCKSIZE
System
OpenVMS V6.1 on AXP - DEC Fortran V6.2-508
Problem
It seems that the FORTAN OPEN attribute BLOCKSIZE is ignored on AXP systems. This parameter is supposed to determine the RMS buffer count. However, in certain (or all) cases this attribute is ignored and the RMS default is taken. Example:
        program test
        integer   buf(2048)
        open( unit = 1, form = 'unformatted',
        1       readonly, status='old',
        1       buffercount=3,blocksize=49152)
        do i=1,100
          read(1) buf
        enddo
        pause
        stop
        end
Now define FOR001 to point to a file with 8kbyte fixed length records. Also do a "set rms/buf=2/blo=16". Start the program and check with SDA what the RMS buffers look like. I got
    SDA> set rms=bdbsum
    SDA> sho proc /rms
        Address USERS SIZE  NUMB    VBN    BLB_PTR   ADDR    VAL   ID  FLGS
        ------- ----- ----  ----    ---    -------   ----    ---   --  ----
        7F9DE200   0  8192  8192 00000631 00000000 00104000   0    BDB  VAL
        7F9DD378   0  8192  8192 00000621 00000000 7F9D8000   0    BDB  VAL
        7F9DE180   0  8192  8192 00000611 00000000 7F9DA000   0    BDB  VAL
The same exercise on a VAX system produced
        Address USERS SIZE  NUMB    VBN    BLB_PTR   ADDR    VAL   ID  FLGS
        ------- ----- ----  ----    ---    -------   ----    ---   --  ----
        7FED2110   0 49152 49152 00000601 00000000 00041800   0    BDB  VAL
        7FED1378   0 49152 49152 00000661 00000000 00035800   0    BDB  VAL
        7FED2170   0 49152 49152 000005A1 00000000 0004D800   0    BDB  VAL
This means that the BUFFERCOUNT attribute is used, but the BLOCKSIZE is ignored. It seems to be an AXP specific problem, not a DEC Fortran problem, because the buffers are o.k. with DEC Fortran V6.2-108 under VAX/VMS V6.1 VAX FORTRAN V5.8-155 under VAX/VMS V5.5-2H4
Workaround
none
History
Found: 15-Sep-1994

AXP: SHOW RMS shows wrong extend size
System
OpenVMS V6.1 on AXP
Problem
The SHOW RMS command doesn't correctly display the extend size. Extend sizes larger than 255 are displayed as 0. This is only a display problem, the values set with SET RMS /EXT= are correctly used.
Workaround
none
History
Found: 9-Jul-1994

Back to KP3 Computing home page
Last updated: February 9th, 1995
Walter F.J. Müller

Imprint ---- Data privacy protection ---- Haftungsausschluss