Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

Submit in batch fails

 
Willem Grooters
Honored Contributor

Submit in batch fails

This is part of a procedure :[].COM:

$ if f$mode() .eqs. "BATCH" .and. f$environment("DEPTH") .eq. 0 .and. action .eqs. "REQUEUE"
$ then
$ submit/hold/log='CmdLogdir'/keep/noprint/queue='quenam' -
/param=("''prcnam'", "''quenam'", "''action'") -
/name="START_''prcnam'" -
'here'Proc.COM
$ endif

All symbols are properly set and correct. The file does exists;

When this code is executed from the batch procedure, SUBMIT is unexpectedly failing:

$ if f$mode() .eqs. "BATCH" .and. f$environment("DEPTH") .eq. 0 .and. action .eqs. "REQUEUE"
$ then
$ submit/hold/log=:[]/keep/noprint/queue=SYS$BATCH -
/param=("WG", "SYS$BATCH", "REQUEUE") -
/name="START_WG" -
:[].COM
%SUBMIT-E-INVFILSPE, invalid file specification :[].COM;36
%SUBMIT-F-CREJOB, error creating job
-SYSTEM-S-NORMAL, normal successful completion

and the job is not submitted.

However, entering the exact statement in an interactive session, submits the job. But when released, the same error occurrs.

The file mentioned (including version) does exist on the specified location.

I used the same construct in other procedures on the same system without a problem, so why is this one failing?

Willem Grooters
OpenVMS Developer & System Manager
26 REPLIES 26
Hoff
Honored Contributor

Re: Submit in batch fails

Occam's Razor says that the DCL symbols are not as expected, or the file does not exist, or the RMS syntax is unsupported by the version, or that there are a mix of local and global symbols, or the device is not mounted from the host dealing with the queue.

Insert some diagnostics into the DCL code, and verify that the file is present and accessible.

And in general, I usually trim the file version number off of any SUBMIT-related file processing specification as it tends to lead to problems when somebody edits the DCL procedure; the file is either missing (if a PURGE was directly or indirectly invoked) or an older version is activated.
Jess Goodman
Esteemed Contributor

Re: Submit in batch fails

Is SUBMIT redefined (either as a DCL command symbol or as a logical name) for batch processes to run something other than SYS$SYSTEM:SUBMIT.EXE ?

The error messages displayed do not appear to be from VMS's SUBMIT. SUBMIT.EXE would display the CREJOB message first, and the final NORMAL message shouldn't be there. I'm not even sure how to get SUBMIT.EXE to output INVFILSPE.

My theory might seem like a long shot, but I redefine SUBMIT for batch processes at my site to run a replacement submit program I wrote. Among other designed differences, my program checks for /USER=username and then ignores it if the process is running under that username. For us this cuts way down on SYSUAF contention and it prevents bogus errors for users without CMKRNL.
I have one, but it's personal.
Jess Goodman
Esteemed Contributor

Re: Submit in batch fails

Ok, forget my last theory. I was just able to reproduce the error messages your post shows by attempting to submit a process permanant file:

$ open/read junk login.com
$ submit junk/queue=junkq
%SUBMIT-E-INVFILSPE, invalid file specification JUNK:.;
%SUBMIT-F-CREJOB, error creating job
-SYSTEM-S-NORMAL, normal successful completion

The INFILSPE message from my example displays the logical name from the OPEN, instead of the full file specification shown in your post, so your problem can't be exactly what I did. But it might be worth checking if there is a CLOSE command needed before the SUBMIT.
I have one, but it's personal.
Jess Goodman
Esteemed Contributor

Re: Submit in batch fails

Here's a way I just found to get the a full file specification to show up in the error message:

$ OPEN/WRITE DSKC JUNK.COM
$ SUBMIT DSKC:[GOODMAN]LOGIN.COM;36
%SUBMIT-E-INVFILSPE, invalid file specification DSKC:[GOODMAN]LOGIN.COM;36
%SUBMIT-F-CREJOB, error creating job
-SYSTEM-S-NORMAL, normal successful completion
I have one, but it's personal.
Hoff
Honored Contributor

Re: Submit in batch fails

Which is a file that doesn't exist. In this case, triggered by a logical name redirection. (The OPEN /WRITE is one path around creating a logical name, and a DEFINE can get there, too.)

These cases of misdirection can usually be identified with an f$search or an f$file or other such DCL just prior to the SUBMIT to verify the input.

I tend to display the result of the f$file NOCONCEAL knob for these cases, just before the SUBMIT command.
John Gillings
Honored Contributor

Re: Submit in batch fails

Willem,

It looks to me like there's something wrong with the symbol. It would help if you included the exact text of the error message. Preceding the failing command with $ SHOW SYMBOL HERE would also assist in debugging.
If that is the exact text of the message then why is symbol "here" set to ":[]"?

For self resubmission, I use:

$ self=F$PARSE(";",F$ENVIRONMENT("PROCEDURE"))

...
$ SUBMIT/whatever 'self'

this will continue to work regardless of name changes to the procedure, and will always select the latest version of the procedure.

If your code is working in interactive mode, but failing in batch mode, the most likely reason is bad back links on the disk. Use DFU to check and/or fix. Is this a system disk? Try:

$ DUMP/HEAD/BLOCK=COUNT:0 SYS$SYSDEVICE:[000000]VMS$COMMON.DIR

Confirm that the filename is "VMS$COMMON.DIR" and the "Back link file identification" is (4,4,0).
A crucible of informative mistakes
Willem Grooters
Honored Contributor

Re: Submit in batch fails

Company rules prescibes removal of any identifying information; but I checked, and doublechecked, that symbols and logicals are correct.

I added some extra information to show the submitted file does actualluy exist and has the right attributes, and shows SUBMIT has not been re-defined in some way:

$ if f$mode() .eqs. "BATCH" .and. f$environment("DEPTH") .eq. 0 .and. action .eqs. "REQUEUE"
$ then
$ if f$search("''here'.COM") .nes. ""
$ then
$ show symbol/local/global submit
$ show log/full submit
$ dir /full 'here'.COM
$ submit/hold/log='logdir'/keep/noprint/queue='quenam' -
/param=("''prcnam'", "''quenam'", "''action'") -
/name="START_''prcnam'" -
'here'.COM
$ else
$ write sys$output "File NOT FOUND????????"
$ goto eoj
$ endif
$ endif

and the result is similar:

$ if f$mode() .eqs. "BATCH" .and. f$environment("DEPTH") .eq. 0 .and. action .eqs. "REQUEUE"
$ then
$ if f$search(":[].COM") .nes. ""
$ then
$ show symbol/local/global SUBMIT
%DCL-W-UNDSYM, undefined symbol - check validity and spelling
$ show log/full SUBMIT
%SHOW-S-NOTRAN, no translation for logical name SUBMIT
$ dir /full :[].COM;0

Directory :[]

.COM;38 File ID: (104528,8,0)
Size: 7/101 Owner: [,]
Created: 9-JUL-2009 11:20:11.09
Revised: 9-JUL-2009 11:20:11.10 (1)
Expires:
Backup:
Effective:
Recording:
Accessed:
Attributes:
Modified:
Linkcount: 1
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 101, Extend: 0, Global buffer count: 0, No version limit
Record format: Variable length, maximum 0 bytes, longest 98 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWE, Group:, World:
Access Cntrl List: (IDENTIFIER=,ACCESS=READ+WRITE+EXECUTE+DELETE+CONTROL)
Client attributes: None

Total of 1 file, 7/101 blocks.
$ submit/hold/log=:[.V2008B.GKB.LOG]/keep/noprint/queue=SYS$BATCH -
/param=("GKB_WG", "SYS$BATCH", "REQUEUE") -
/name="_WG" -
:[].COM
%SUBMIT-E-INVFILSPE, invalid file specification :[].COM;38
%SUBMIT-F-CREJOB, error creating job
-SYSTEM-S-NORMAL, normal successful completion
$ErrExit:

Willem Grooters
OpenVMS Developer & System Manager
Willem Grooters
Honored Contributor

Re: Submit in batch fails

John,

DUMP/HEADER shows backlink is (4,4,0) and filename is VMS$COMMON.DIR.
So that looks Ok to me.

DFU is not allowed in this environment :(
Willem Grooters
OpenVMS Developer & System Manager
Willem Grooters
Honored Contributor

Re: Submit in batch fails

@John:

Just noticed you mentioning the system disk. No, the procedure runs from another disk (in other words: is not SYS$SSYDEVICE:).
I cannot imagine that it would matter that this disk is shadowed, or would it?
Willem Grooters
OpenVMS Developer & System Manager
Robert Gezelter
Honored Contributor

Re: Submit in batch fails

Willem,

Perhaps cloning the procedure into a test version and making the small change to fix the filename to something innocuous (e.g., SYS$LOGIN:LOGIN.COM).

The differences might be illuminating.

- Bob Gezelter, http://www.rlgsc.com
Willem Grooters
Honored Contributor

Re: Submit in batch fails

SET WATCH also shows the file exists:

$ if f$mode() .eqs. "BATCH" .and. f$environment("DEPTH") .eq. 0 .and. action .eqs. "REQUEUE"
$ then
$ if f$search(":[].COM") .nes. ""
$ then
$ set watch/class=all file
$ submit/hold/log=:[]/keep/noprint/queue=SYS$BATCH -
/param=("WG", "SYS$BATCH", "REQUEUE") -
/name="RESTART_WG" -
:[].COM
%XQP, Thread #0, FIB contents:
00000000 00000000 CBA70000 00000021 00000000 00000183 00000000 00000000
00000000 00000000 00000000 00030000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000000 00000000 CBA70000 00000021 00000000 00000183 00000000 00000000
00000000 00000000 00000000 00030000 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Volume protection: Access requested: 00000001, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, File protection (52135,33,0): Access requested: 00000004, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, Read only directory access (52135,33,0)
%XQP, Thread #0, Directory scan for: .COM;0, Status: 00000001
%XQP, Thread #0, Lookup (84694,8,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (104578,3,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (104578,3,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (104578,3,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000141 00039882 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (104578,3,0) Status: 00000001
%SUBMIT-E-INVFILSPE, invalid file specification :[].COM;40
%SUBMIT-F-CREJOB, error creating job
-SYSTEM-S-NORMAL, normal successful completion
$ErrExit:

File with id (84694,8,0) is the file to be submitted (.COM). I couldn't locate (104578,3,0), might be the logfile? This is not created.)
Willem Grooters
OpenVMS Developer & System Manager
Hoff
Honored Contributor

Re: Submit in batch fails

$ if f$mode() .eqs. "BATCH" .and. f$environment("DEPTH") .eq. 0 .and. action .eqs. "REQUEUE"
$ then

Build your filename symbol once, in its entirety. Sans version.
Then use f$parse and build the LOG name, if that's derived from the filename.
I'd build the process name and such here, too.

$ if f$search("''here'.COM") .nes. ""
$ then
$ show symbol/local/global submit
$ show log/full submit
$ dir /full 'here'.COM

SHOW LOGICAL
SHOW SYMBOL/ALL
SHOW SYMBOL /ALL /GLOBAL

And use the previously-built symbols. And SHOW SYMBOL the built symbols.

$ submit/hold /log='logdir'/keep/noprint/queue='quenam' -
/param=("''prcnam'", "''quenam'", "''action'") -
/name="START_''prcnam'" -
'here'.COM
$ else
$ write sys$output "File NOT FOUND????????"


BTW: EOJ is a valid DCL command.

$ goto eoj
$ endif
$ endif

How deep is the directory structure here?

ODS-2 v. ODS-5 parsing differences?

How does the .COM file instantiate itself?

And as others have stated, get a "decontaminated" system or procedure, and test over there.

If you can't show names and don't have a decontaminated server, then swap in actual strings for strings. Don't swap in and similar bogus strings as that can mask critical details NOT related to the name strings.

I'd also toss a SET WATCH here, if that's permissible within this environment, just before the SUBMIT command.
EdgarZamora
Trusted Contributor

Re: Submit in batch fails

My WAG is that there is something wrong with your "". Maybe add a SHOW LOG dev (whatever dev is) right before your submit command.
Willem Grooters
Honored Contributor

Re: Submit in batch fails

Hoff's and John's suggestions combined:

me = f$parse(";",f$environment("Procedure"),,,"NO_CONCEAL") - ";"

gives me:

:[].COM

= 'physical' device: a shadowset(DSnn:)

Use 'me' to submit, but no difference - same problem.

Submitting SYS$LOGIN:LOGIN.COM instead of this filespec, keeping the rest as it is, did submit the job:

$ submit/hold/log=:[]/keep/noprint/queue=SYS$BATCH -
/param=("WG", "SYS$BATCH", "REQUEUE") -
/name="WG" -
sys$login:login.com
%XQP, Thread #0, FIB contents:
00000000 00000000 58500000 00000D10 00000000 00000183 00000000 00000000
00000000 00000000 00000000 00030000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000000 00000000 58500000 00000D10 00000000 00000183 00000000 00000000
00000000 00000000 00000000 00030000 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Volume protection: Access requested: 00000001, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, File protection (22608,3344,0): Access requested: 00000004, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, Read only directory access (22608,3344,0)
%XQP, Thread #0, Directory scan for: LOGIN.COM;0, Status: 00000001
%XQP, Thread #0, Lookup (47019,23,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000141 00059874 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000141 00059874 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (104564,5,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000001 0017B7AB 00000000 00000000 00000000 00000003 00000000 00000000
00000000 00000000 00000000 01030000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000001 0017B7AB 00000000 00000000 00000000 00000003 00000000 00000000
00000000 00000000 00000000 01030000 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Volume protection: Access requested: 00000001, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, File protection (47019,23,0): Access requested: 00000001, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, Read attributes: Access mode LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: Access mode LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: Journal flags LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: RU active LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: Statistics block LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: Find ACE by type LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: Record attributes LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: User file characteristics LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: File length hint field LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Access LOGIN.COM;17 (47019,23,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000001 0017B7AB 58500000 00000D10 00000000 00220003 00000120 00000000
00000000 00000000 00000000 01030000 0000FFFF 000009D8 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000001 0017B7AB 58500000 00000D10 00000000 00220003 00000120 00000000
00000000 00000000 00000000 01030000 0000FFFF 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (47019,23,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00030000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000000 0017B7AB 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00030000 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Deaccess (47019,23,0) Reads: 0, Writes: 0, Status: 00000001
%XQP, Thread #0, FIB contents:
00000000 0017B7AB 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000000 0017B7AB 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Volume protection: Access requested: 00000001, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, File protection (47019,23,0): Access requested: 00000001, Status: 00000001, PrvUsd: 00000000
%XQP, Thread #0, Read attributes: Record attributes LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: File spec LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Read attributes: User file characteristics LOGIN.COM;17 (47019,23,0)
%XQP, Thread #0, Lookup LOGIN.COM;17 (47019,23,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000141 00059874 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000141 00059874 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (104564,5,0) Status: 00000001
%XQP, Thread #0, FIB contents:
00000141 00059874 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000120 00000000 00000000 00000000
%XQP, Thread #0, FIB contents:
00000141 00059874 D2F10100 00000005 00000000 00224403 00000120 00000000
00000000 00000000 00000000 00017FFF 00000000 00000001 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
%XQP, Thread #0, Control function (104564,5,0) Status: 00000001
Job _WG (queue SYS$BATCH, entry 491) holding

It seems SUBMIT will not access the procedure to retrieve its attributes??




Willem Grooters
OpenVMS Developer & System Manager
Willem Grooters
Honored Contributor

Re: Submit in batch fails

device spec? possible.

System manegement found the same problem. Submitting from the login directory (on disk DISK002 works, from the application directory fails.

What is used in the filespec is actually the drive label, but somewhere, it translates differently, given the message

DISK007 (label of DSA7) ==> "DISK007"

DISK002 (label of DSA2) ==> "DISK$DISK002"

I even tried "DSA7",the physical drive, but the same problem occurs.

The message help shows the submitted file must be a disk file - perhaops, DISK007 cannot be located as a disk, in batch?
Willem Grooters
OpenVMS Developer & System Manager
AEFAEF
Advisor

Re: Submit in batch fails

Could it be that you have different symbols defined in batch mode than in interactive mode? Check your login scripts for this type of dependence.

$ IF (F$MODE().EQS."INTERACTIVE")
$ THEN
interactive symbols and logical names
$ ENDIF
$ IF (F$MODE().EQS."BATCH")
$ THEN
batch symbols and logical names
$ ENDIF

as a quick and dirty example.

AEF
GuentherF
Trusted Contributor

Re: Submit in batch fails

I don't see any single quotes around the device name in the submit command (if that is correct). That excludes a symbol translation. RMS uses everything up to the first colon to do a logical name translation. Does a "SHOW LOGICAL" of that device name string work before the submit?
If that works, what about a "SHOW DEVICE/FULL "?

/Guenther
Jess Goodman
Esteemed Contributor

Re: Submit in batch fails

Your directory command shows a big clue:

Directory :[]

.COM;38 File ID: (104528,8,0)
Size: 7/101 Owner: [,]

Linkcount: 1

I know little about symbolic links since I am running VMS 7.3-2, but I bet it has something to do with your problem.
I have one, but it's personal.
Hoff
Honored Contributor

Re: Submit in batch fails

The only way I know to troubleshoot this stuff is inside the DCL context in the target environment.

DCL symbols are completely context-dependent, and logical names are context- and process- and group-dependent.

The output (diagnostics) I'm asking for are only valid from inside the DCL procedure in the target context; whether or not this stuff works interactively isn't nearly as relevant as the DCL and symbol and logical name context immediately before the SUBMIT failure.

And FWIW, the log file or any other file doesn't get issued a FID until the file has been created. To see what file has that FID (if the file is still around), use DUMP /FILE=fid ddcu: on the target device.
John Gillings
Honored Contributor

Re: Submit in batch fails

Willem,

OK, so the filespec looks OK from this node.

Is this a cluster? Perhaps the queue manager is running on another node, and has a different view of devices or logical names?
A crucible of informative mistakes
Willem Grooters
Honored Contributor

Re: Submit in batch fails

All symbols used in the filespec used in the SUBMIT command are set within the procedure itself. Actually, it's just one: "here", derived from:

$ me=f$environment("procedure")
$ here=f$parse(me,,,"DEVICE")+f$parse(me,,,"DIRECTORY")

so a difference in f$mode() is not the problem here. As stated before, using the immediate output of f$environment has been used, both with, and without, "NO_CONCEAL" option in f$parse, without result.

And as the logfile output shows - with VERIFY enabled - all symbol translations are done - and properly.

LinkCount=1 holds for all files - even in SYS$LOGIN, which is another disk. Second, this is a 7.3-2 system.
So that isn't the cause either.

This is, indeed, a cluster. The queue used in the SUBMIT command is a logical, referring to a local queue, set autostart on that node only, not on both nodes:

Node1> sho log sys$batch
"SYS$BATCH" = "SYS$BATCH_NODE1" (LNM$SYSTEM_TABLE)

and

Node2> sho log sys$batch
"SYS$BATCH" = "SYS$BATCH_NODE2" (LNM$SYSTEM_TABLE)

Apart from the node name, the queue definitions are equal:

Nodex> sho queue/full sys$batch
Batch queue SYS$BATCH_NODEx, idle, on NODEx::
/AUTOSTART_ON=(NODEx::) /BASE_PRIORITY=4 /JOB_LIMIT=4 /OWNER=DEV
/PROTECTION=(S:M,O:D,G:R,W:S)
...

so if I submit the procedure to SYS$BATCH on node1, it will execute on node1 - and not on node2. That would, I think, rule out a difference in logicals and disks.
Nevertheless, I checked logicals on both systems; The device in the SUBMIT command refers the same device on both systems; this is a shadowed disk, that resides on a SAN; WWID's are the same on both systems (as it should be)
Willem Grooters
OpenVMS Developer & System Manager
Willem Grooters
Honored Contributor

Re: Submit in batch fails

BTW: the queue mamager runs on this node only; not on the other node in the cluster.
Willem Grooters
OpenVMS Developer & System Manager
Willem Grooters
Honored Contributor

Re: Submit in batch fails

node, nor queue matters. I tried the same SUBMIT command on the other system, and on another queue. Not any problem submitting it interactively, but in batch, it fails.
Willem Grooters
OpenVMS Developer & System Manager
Willem Grooters
Honored Contributor

Re: Submit in batch fails

Got it:
somewhere in the login sequence, the definition of SYS$OUTPUT is reversed - which, of course, causes a loop:

> sho log sys$output
"SYS$OUTPUT" = "_NODE11$TNA972:" (LNM$PROCESS_TABLE)
> show log _NODE1$TNA972
"_NODE1$TNA972" = "SYS$OUTPUT" (LNM$PROCESS_TABLE)
1 "SYS$OUTPUT" = "_NODE1$TNA972:" (LNM$PROCESS_TABLE)

In batch, this leads to:

> sho log sys$output
"SYS$OUTPUT" = "_DSA7:" (LNM$PROCESS_TABLE)
> show log _DSA7
"_DSA7" = "SYS$OUTPUT" (LNM$PROCESS_TABLE)

Quite possible that SUBMIT doesn't like the circular reference (though SYS$INPUT and SY$OUTPUT refer to this device as well).

We're still investigating where this definition comes from. In the mean time, the workaround is:

$ oops=F$parse(";",me,,,"NO_CONCEAL") - ";"
$ if oops .nes. ""
$ then
$ oopsdev="_"+f$element(0,":",oops)
$ deass/process 'oopsdev'
...

Now submit succeeds.
Willem Grooters
OpenVMS Developer & System Manager