- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - OpenVMS
- >
- Re: F$GETQUI problem
Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Discussions
Discussions
Forums
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-08-2009 02:21 PM
тАО07-08-2009 02:21 PM
Re: F$GETQUI problem
You can look up jobs by job name with F$GETQUI, rather than walking through a queue. This will also support wildcards in the job name.
$ jname=p1
$ Loop:
$ e=F$GETQUI("DISPLAY_ENTRY","ENTRY_NUMBER",jname,"WILDCARD")
$ IF e.NES.""
$ THEN
$ q=F$GETQUI("DISPLAY_ENTRY","QUEUE_NAME",e,"FREEZE_CONTEXT")
$ j=F$GETQUI("DISPLAY_ENTRY","JOB_NAME",e,"FREEZE_CONTEXT")
$ WRITE SYS$OUTPUT "Entry ''e' ''j' ''q'"
$ found="TRUE"
$ GOTO Loop
$ ENDIF
$ IF .NOT."''found'" THEN WRITE SYS$OUTPUT "No such entry ''jname'"
To gather more information about the entries, add more "DISPLAY_ENTRY" calls with "FREEZE_CONTEXT". There are some DCL commands, like SHOW ENTRY which can interfere with your context. If you need to execute one, use SPAWN to run it in a subprocess.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-08-2009 09:40 PM
тАО07-08-2009 09:40 PM
Re: F$GETQUI problem
John Gillings' suggestion to use DISPLAY_ENTRY is more efficient than DISPLAY_JOB, and if you are only interested in jobs running under the current username, it is probably the best way to go.
However, it is limited to listing entries for the current username regardless of your privilege.
It is a similar to the SHOW ENTRY DCL command, where the others are more like a SHOW QUEUE command with the output being filtered. And unlike SHOW ENTRY, there is no way to specify the /USER you are interested in. (If there is a way, it doesn't appear to be documented.)
If you want something that will see batch jobs for all users, and you have access to the queues via privilege or ACL, then the DISPLAY_JOB method is more general, but with the added cost of having to sift through possibly many jobs that you are not interested in.
Jon
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-08-2009 10:34 PM
тАО07-08-2009 10:34 PM
Re: F$GETQUI problem
Dave answered that he had looked at the F$GETQUI examples, but couldn't make things work.
I took example #3 and made small modifications to hint Dave how he could use it as a template (for his own needs.......)
I could have written it more efficient, but that wasn't my goal.
There are a million ways to skin a cat....efficient or not.
Hakan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-08-2009 10:55 PM
тАО07-08-2009 10:55 PM
Re: F$GETQUI problem
I got the original version of this from a note left by Jim Becker on DECUServe (Note VMS 3121.1)
I have made some local nodifications, the primary one being that it will now return a comma seperated list of entry numbers instead of just the first one it finds that matches. Also change the "help" displayed if no parameters were passed. You will need to edit the location where you keep your copy of find_batch_job.com.
I have included both versions in the attached find_batch_job.zip file. This was created on VMS without the "-V" zip
$ unzip -v find_batch_job
Get RMS defaults. getjpi sts = %x00000001.
Default: deq = 0, mbc = 0, mbf = 0.
Open callback. ID = 1, deq = 16384, mbc = 127, mbf = 2.
Archive: ROOT$USERS:[JON.SCRATCH]FIND_BATCH_JOB.ZIP;1
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
2883 Defl:N 1201 58% 11-01-00 23:45 3d68d93b find_batch_job.com
1678 Defl:N 745 56% 07-08-09 15:21 14b5e717 find_batch_job.com_original
-------- ------- --- -------
4561 1946 57% 2 files
$
The original version was copied and renamed to find_batch_job.com_original
If you want the files to have standard text type and using the vms unzip program, use the following to unpack:
$ unzip -a find_batch_job
This hasn't been modified since 2000; if you are running 8.3, the job name matching could be modified to use f$match_wild to be a bit more general. As is, it matches substrings so using a string like "T4" will match any job name containing T4. If you don't like that behavior, change it.
Some useful commands to use the find_entry symbol created by find_batch_job:
$ @find_batch_job substring queue_wildcard
$ show queue 'find_entry' ! this displays the entries that matched
$ delete entry=('find_entry') ! this lets you delete multiple entries that match your criteria (I recomend using show entry 'find_entry' first)
Example usage:
$ @mgr:find_batch_job
Usage : @MGR:FIND_BATCH_JOB JOB_NAME [QUEUE]
P1 must give the string to find in the job name (case-insensitive).
P2 optional Queue(s) to search (any queue spec that's valid with f$getqui)
This will set the global SYMBOL FIND_ENTRY with list of entry numbers
$
$ @mgr:find_batch_job t4 ! when there are matching entries, the resulting find_entry symbol is displayed
FIND_ENTRY == "1004705,83,1004706,74"
$
$ sho sym $status
$STATUS == "%X00030001"
$
$ sho entry 'find_entry'
Entry Jobname Username Blocks Status
----- ------- -------- ------ ------
1004705 T4$COLLECT SYSTEM Executing
On available batch queue T4_BATCH$OMEGA
83 T4$COLLECT SYSTEM Holding until 8-JUL-2009 23:58:00.00
On available batch queue T4_BATCH$OMEGA
1004706 T4$COLLECT SYSTEM Executing
On available batch queue T4_BATCH$SIGMA
74 T4$COLLECT SYSTEM Holding until 8-JUL-2009 23:58:00.00
On available batch queue T4_BATCH$SIGMA
$
$ @mgr:find_batch_job asjfkl ! this won't find anything, just to show what happens
$
$ sho sym $status
$STATUS == "%X00000003"
$
$ sho sym find_entry
FIND_ENTRY == ""
$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-08-2009 11:58 PM
тАО07-08-2009 11:58 PM
Re: F$GETQUI problem
$ delete/entry=('find_entry')
not $ delete entry=('find_entry')
that my previous comment had.
Jon
- « Previous
-
- 1
- 2
- Next »