INFO-VAX Mon, 15 Oct 2007 Volume 2007 : Issue 564 Contents: Re: Article of Interest. Re: Article of Interest. Re: Bigger isn't always better! Re: Bigger isn't always better! Re: Bigger isn't always better! Re: Bigger isn't always better! Re: Canadians flee Canadian socialized Hillary type healthcare for U.S. Re: Canadians flee Canadian socialized Hillary type healthcare for U.S. CHECKSUM oddity? Re: CHECKSUM oddity? Re: Execute a command procedure from a detached process Hardware components PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: PROCESS_SCAN.COM (or an example of what DCL can do) Re: SAMBA/CIFS (Was:Re: Bigger isn't always better!) Re: SAMBA/CIFS (Was:Re: Bigger isn't always better!) Re: SRVMISMATCH error fix available Re: SRVMISMATCH error fix available Re: SRVMISMATCH error fix available Re: SRVMISMATCH error fix available Re: SRVMISMATCH error fix available Re: SRVMISMATCH error fix available Re: SRVMISMATCH error fix available Re: SRVMISMATCH error fix available RE: still not convinced global warming a hoax? Re: still not convinced global warming a hoax? Re: still not convinced global warming a hoax? Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Re: Translating $Status Re: Translating $Status Worlds top meteorologist calls Gores views ridiculous! Re: Worlds top meteorologist calls Gores views ridiculous! Re: Worlds top meteorologist calls Gores views ridiculous! www.hp.com/go/openvms is still toast Re: www.hp.com/go/openvms is still toast Re: [Q]Execute a command procedure from a detached process ---------------------------------------------------------------------- Date: 15 Oct 2007 08:20:14 -0500 From: koehler@eisner.nospam.encompasserve.org (Bob Koehler) Subject: Re: Article of Interest. Message-ID: In article <3d539$470faad4$cef89e3d$6739@TEKSAVVY.COM-Free>, "John Smith" writes: > > The cashier is forced by company policy to scan each can individually vs. > doing Qty=8 on the keyboard and then scanning one can. People are waiting in > line for many minutes while the cashier does this. > Once upoon a time a new "big" Safeway was about 1/3 the size of most grocery stores today. There is a much bigger variety of products and a lot of almost the same products look the same. The chain needs an accurate count not only for price, but also for inventory as they want to restock what was sold, not pay folks to go down the isles and count cans. Paying them to scan all those cans is faster and cheaper. Like most businesses, labor is thier highest cost. If they charge you enough to do things the old fashioned way, you'll buy your food somewhere else. Meanwhile a good cashier scanning one at a time can process your order fast than the self-checkouts any day. The human interface designed to talk to the customer and to prevent cheating slows down the system. ------------------------------ Date: Mon, 15 Oct 2007 12:34:18 -0500 From: Ron Johnson Subject: Re: Article of Interest. Message-ID: On 10/12/07 14:24, JF Mezei wrote: [snip] > > Loblaws' worse flaw is listening to its been counters instead of Bean there, done that? > focusing on its core product (food store). Been counters announced that > there is a higher margin of profit on "general merchandise" than on > food. As a result they have renovated many stores where they stick > "general merchandise" right smack in the middle of the store. So they > have 5-7 aisles of junk and totally unrelated stuff (even lounge chairs) > in the middle of the store forcing people to walk past those aisles and > thus walk far more than necessary. This was also done because of fears > that Wallmart would kill Loblaws so Loblaws wanted to emulate Wallmart. > > Low and behold, even since they implemented this, Loblaws has had > dwindling sales. They have now become mediocre at food and of course > mediocre at general merchandise. Half their soaps ate in the general > merchandise aisles in the middle of the store, and the other half is at > the other end of the store. This is probably not the product of an Accountant's brain, but of the morass that is an MBA's grey matter. -- Ron Johnson, Jr. Jefferson LA USA Give a man a fish, and he eats for a day. Hit him with a fish, and he goes away for good! ------------------------------ Date: Mon, 15 Oct 2007 04:46:00 -0700 From: FrankS Subject: Re: Bigger isn't always better! Message-ID: <1192448760.134960.40320@q5g2000prf.googlegroups.com> On Oct 14, 6:31 pm, Neil Rieck wrote: > Perhaps HP has got > another router problem in their server room. It seems to me that HP has router issues every Sunday. I regularly and consistently have problems getting to any of their web sites on Sundays. Either someone is turning the lights out and not realizing the routers are plugged in to the same socket, or it's just their maintenance window. ------------------------------ Date: 15 Oct 2007 14:35:41 GMT From: bill@cs.uofs.edu (Bill Gunshannon) Subject: Re: Bigger isn't always better! Message-ID: <5nhc5tFicbvoU1@mid.individual.net> In article , VAXman- @SendSpamHere.ORG writes: > > We scheduled one Saturday afternoon each month. > The machine would go down, ..... > A reboot is scheduled for this evening. Ummm.... I thought VMS systems never need to be shutdown or rebooted? bill -- Bill Gunshannon | de-moc-ra-cy (di mok' ra see) n. Three wolves bill@cs.scranton.edu | and a sheep voting on what's for dinner. University of Scranton | Scranton, Pennsylvania | #include ------------------------------ Date: 15 Oct 2007 14:43:31 GMT From: bill@cs.uofs.edu (Bill Gunshannon) Subject: Re: Bigger isn't always better! Message-ID: <5nhckjFicbvoU2@mid.individual.net> In article , VAXman- @SendSpamHere.ORG writes: > > One of the people at this customer's site opened a text document on a > Weendoze PeeCee with whatever app that they had used before and SAMBA > presented a gobbledegook of run-on lines devoid of record breaks. I > would check out SAMBA carefully before putting it into production. SAMBA doesn't convert files between incompatable formats, it serves you whatever you put int he file. What do you think would happen if you opened a MS Word document with LSE on VMS? > I > have it installed here and try to use it with OS X. I can read files > from a SAMBA served disk but trying to store a file on the SAMBA disk > is impossible. Then youyr SAMBA is not setup correctly. We have been using to share files between our Unix based fileservers and Windows boxes since the days when we ran NT 3.51 one here. I have even used SAMBA with VMS (when we still had it) without any really problems. > I have NFS to fall back upon so it is not of any real > concern to me but IMHO SAMBA is not ready for prime-time yet. YMMV. Unless your willing to manually map every user (OK with one or two, but try keeping up with it when the number tops a couple hundred) NFS between Unix and VMS is a pretty poor alternative. SAMBA has worked quite well at least a decade now. bill -- Bill Gunshannon | de-moc-ra-cy (di mok' ra see) n. Three wolves bill@cs.scranton.edu | and a sheep voting on what's for dinner. University of Scranton | Scranton, Pennsylvania | #include ------------------------------ Date: Mon, 15 Oct 2007 16:36:19 GMT From: VAXman- @SendSpamHere.ORG Subject: Re: Bigger isn't always better! Message-ID: <7GMQi.9$l%4.7@newsfe12.lga> In article <5nhc5tFicbvoU1@mid.individual.net>, bill@cs.uofs.edu (Bill Gunshannon) writes: > > >In article , > VAXman- @SendSpamHere.ORG writes: >> >> We scheduled one Saturday afternoon each month. >> The machine would go down, >...... >> A reboot is scheduled for this evening. > >Ummm.... I thought VMS systems never need to be shutdown or rebooted? If the SYSGEN parameter is not dynamic, it must be. I could have "patched" more than just the TNA0:'s UCB$W_UNIT_SEED value but I decided to "patch" only enough to allow them to lumber along until a reboot could be scheduled. When the time comes to need to update the OS on a running system, VMS is poised, with the loadable executive, to be modified to do so better than any of the other mainstream OSs. -- VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)COM "Well my son, life is like a beanstalk, isn't it?" http://tmesis.com/drat.html ------------------------------ Date: Mon, 15 Oct 2007 04:58:04 -0700 From: ultradwc@gmail.com Subject: Re: Canadians flee Canadian socialized Hillary type healthcare for U.S. Message-ID: <1192449484.286101.30260@i38g2000prf.googlegroups.com> On Oct 14, 6:53 pm, Neil Rieck wrote: > On Oct 14, 6:39 pm, ultra...@gmail.com wrote: > > > > > > > On Oct 14, 6:22 pm, Neil Rieck wrote: > > > > On Oct 14, 9:42 am, ultra...@gmail.com wrote: > > > > > On Oct 13, 12:30 pm, Neil Rieck wrote: > > > > > of course you do not like Fox because liberals do not > > > > like debate or be challenged ... they are right and everyone > > > > else is wrong ... > > > > Debate on Fox? You've got to be kidding me... > > > > Now since you brought up the "liberal" label I can only assume you are > > > "conservative". I am neither. Like most people in North America, I am > > > a centrist. > > > > And since you brought up debate I'd like to mention that most people > > > on the "far left" or "far right" (like you) are the people who do not > > > like debate while thinking they have the only correct postion. So why > > > don't you sign off of here and go listen to Rush Limbaugh. > > > > NSR > > > there is no such thing as the center ... > > > you are either for or againset something ... to try > > to say otherwise makes you look like a confused idiot ...- Hide quoted text - > > > - Show quoted text - > > You, sir, are the idiot. And anyone who adopts a left/right point of > view before they know the issues and/or candidates are the ones who > are confused. Only someone in the middle can borrow ideas from each > side. BTW, I am more or less quoting Thomas Jefferson here. > > NSR- Hide quoted text - > > - Show quoted text - Jefferson is the fool that messed up the constitution! Allowing lawyers to select supreme court and federal judges instead of the people was a HUGE mistake! Jefferson was just another liberal ... the people are too dum to pick judges so us brilliant lawyers must do it for them ... now we have judges legislating from the bench ... real smart that Jefferson ... ------------------------------ Date: Mon, 15 Oct 2007 14:03:48 GMT From: VAXman- @SendSpamHere.ORG Subject: Re: Canadians flee Canadian socialized Hillary type healthcare for U.S. Message-ID: <8rKQi.21$G71.19@newsfe12.lga> In article <1192449484.286101.30260@i38g2000prf.googlegroups.com>, ultradwc@gmail.com writes: {...snip...} >Jefferson is the fool that messed up the constitution! > >Allowing lawyers to select supreme court and federal >judges instead of the people was a HUGE mistake! > >Jefferson was just another liberal ... the people are >too dum to pick judges so us brilliant lawyers must >do it for them ... > >now we have judges legislating from the bench ... > >real smart that Jefferson ... Jefferson was a smart fellow but I would have to side with you on the judiciary branch of the US government. I'd love to see the US govern- ment go back to honoring that document called the US Constitution and, specifically, the first three words of its preamble. The idea was that the 3 branches would balance and police themselves, but when you fill the 3 branches with criminals the policing argument is moot. -- VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)COM "Well my son, life is like a beanstalk, isn't it?" http://tmesis.com/drat.html ------------------------------ Date: Mon, 15 Oct 2007 16:54:41 +0000 (UTC) From: helbig@astro.multiCLOTHESvax.de (Phillip Helbig---remove CLOTHES to reply) Subject: CHECKSUM oddity? Message-ID: Create a backup saveset. Create an "identical" saveset (i.e. issue the command again). Get the checksums of the savesets. They are the same. $ DIFFERENCES and $ BACKUP/COMPARE say they are different. There is an obvious difference: the Date: field shown by BACKUP/LIST. However, this is a date internal to the backup saveset, not the creation or modifcation date of the saveset. Thus, I don't think it is a date in the file header (which CHECKSUM should and does ignore, since a primary use is to make sure that files were transferred properly). Who can explain this puzzle? In other words, here is a case where CHECKSUM reports no difference, but a) there is an obvious difference which b) other utilities report. (A different issue, of course, is that BACKUP/COMPARE might react to stuff after the EOF. But that's not the issue here.) ------------------------------ Date: 15 Oct 2007 12:30:39 -0500 From: briggs@encompasserve.org Subject: Re: CHECKSUM oddity? Message-ID: In article , helbig@astro.multiCLOTHESvax.de (Phillip Helbig---remove CLOTHES to reply) writes: > Create a backup saveset. Create an "identical" saveset (i.e. issue the > command again). Get the checksums of the savesets. They are the same. > $ DIFFERENCES and $ BACKUP/COMPARE say they are different. > > There is an obvious difference: the Date: field shown by BACKUP/LIST. > However, this is a date internal to the backup saveset, not the creation > or modifcation date of the saveset. Thus, I don't think it is a date in > the file header (which CHECKSUM should and does ignore, since a primary > use is to make sure that files were transferred properly). > > Who can explain this puzzle? Repeat your test with $ BACKUP /GROUP=0 VMS CHECKSUM is not a cryptographically secure hash function. In particular, you're pretty well guaranteed to get a collision when the application creating your data file is actively trying to make the XOR of a batch of records equal to zero. ------------------------------ Date: Mon, 15 Oct 2007 14:22:10 -0000 From: Hein RMS van den Heuvel Subject: Re: Execute a command procedure from a detached process Message-ID: <1192458130.917489.18830@i38g2000prf.googlegroups.com> On Oct 14, 5:24 am, stuie_nor...@yahoo.com.au wrote: > Dear Group, : > Is sys$creprc the correct system service to use? Does anyone have an > example is C or Fortran that uses sys$creprc to execute and wait for > the completion of a command procedure from a detached process. Stuart, The main question has been answerred. But what abour the undelying question... what are you really trying to do... in the command procedure to be launched ? You wouldn't be the firrst one to use such mechanism for a 'submit' or 'mail' where a direct call to SYS$SNDJC or MAIL$mublefratz would be so much more elgant and more efficient without being much more difficult than the (apparently too difficult) call to sys$creprc. Cheers, Hein. ------------------------------ Date: Mon, 15 Oct 2007 10:29:07 -0700 From: draganw Subject: Hardware components Message-ID: <1192469347.630617.276390@i38g2000prf.googlegroups.com> Hardware components http://comp-components.blogspot.com/ ------------------------------ Date: Mon, 15 Oct 2007 07:35:03 -0700 From: Keith Cayemberg Subject: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: <1192458903.556860.231970@k35g2000prh.googlegroups.com> This "DCL Program" (1867 lines) provides powerful process scanning capabilities giving detailed JPI process context variable information of any processes on the same node or cluster. The processes to be displayed can be specified using multiple selection criteria. A VT220 compatible terminal is assumed. The procedure adapts the number of columns displayed automatically when the screen is in 80 column or 132 column mode. Single pass and continuous display modes are supported. The continuous display mode can be exited only using Control-C, and will change the page length of the screen automatically if your terminal emulation supports the function correctly. Using the DECwindow's DECterm supports this functionality the best. For a more complete HELP description of many more capabilities, start the procedure with a question mark "?" as the first command line parameter. Some of the useful things you can do with this procedure: - find all processes running a specific image, or any image in a specific directory tree. - find all processes with a specific quota exhausted to a specified percentage. - count the number of times processes with a specific set of attributes exist during a period of time. - call this procedure from your own and use the global variables PROCESS_SCAN.COM creates giving the identifying attributes of the first or last process that was selected. - watch the processes of another cluster node and their changing attributes as that node boots, BEFORE the System Manager can log-on to the booting node, and BEFORE TCP/IP or DECnet has been loaded on that node. You can find PROCESS_SCAN.COM at DCL.OpenVMS.Org here... http://dcl.openvms.org/stories.php?story=07/10/09/1667996 Happy 30th OpenVMS Anniversary to the OpenVMS Community! Cheers! Keith Cayemberg ------------------------------ Date: Mon, 15 Oct 2007 10:57:07 -0400 From: norm.raphael@metso.com Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: This is a multipart message in MIME format. --=_alternative 005223BC85257375_= Content-Type: text/plain; charset="US-ASCII" Is it all there? It seems to end abruptly. Keith Cayemberg 10/15/2007 10:35 AM To Info-VAX@Mvb.Saic.Com cc Subject PROCESS_SCAN.COM (or an example of what DCL can do) This "DCL Program" (1867 lines) provides powerful process scanning capabilities giving detailed JPI process context variable information of any processes on the same node or cluster. The processes to be displayed can be specified using multiple selection criteria. A VT220 compatible terminal is assumed. The procedure adapts the number of columns displayed automatically when the screen is in 80 column or 132 column mode. Single pass and continuous display modes are supported. The continuous display mode can be exited only using Control-C, and will change the page length of the screen automatically if your terminal emulation supports the function correctly. Using the DECwindow's DECterm supports this functionality the best. For a more complete HELP description of many more capabilities, start the procedure with a question mark "?" as the first command line parameter. Some of the useful things you can do with this procedure: - find all processes running a specific image, or any image in a specific directory tree. - find all processes with a specific quota exhausted to a specified percentage. - count the number of times processes with a specific set of attributes exist during a period of time. - call this procedure from your own and use the global variables PROCESS_SCAN.COM creates giving the identifying attributes of the first or last process that was selected. - watch the processes of another cluster node and their changing attributes as that node boots, BEFORE the System Manager can log-on to the booting node, and BEFORE TCP/IP or DECnet has been loaded on that node. You can find PROCESS_SCAN.COM at DCL.OpenVMS.Org here... http://dcl.openvms.org/stories.php?story=07/10/09/1667996 Happy 30th OpenVMS Anniversary to the OpenVMS Community! Cheers! Keith Cayemberg --=_alternative 005223BC85257375_= Content-Type: text/html; charset="US-ASCII"
Is it all there?
It seems to end abruptly.

Keith Cayemberg <keith.cayemberg@arcor.de>

10/15/2007 10:35 AM

To
Info-VAX@Mvb.Saic.Com
cc
Subject
PROCESS_SCAN.COM (or an example of what DCL can do)





This "DCL Program" (1867 lines) provides powerful process scanning
capabilities giving detailed JPI process context variable information
of any processes on the same node or cluster. The processes to be
displayed can be specified using multiple selection criteria. A VT220
compatible terminal is assumed. The procedure adapts the number of
columns displayed automatically when the screen is in 80 column or 132
column mode. Single pass and continuous display modes are supported.
The continuous display mode can be exited only using Control-C, and
will change the page length of the screen automatically if your
terminal emulation supports the function correctly. Using the
DECwindow's DECterm supports this functionality the best. For a more
complete HELP description of many more capabilities, start the
procedure with a question mark "?" as the first command line
parameter.

Some of the useful things you can do with this procedure:

   - find all processes running a specific image, or any image in a
specific directory tree.
   - find all processes with a specific quota exhausted to a
specified percentage.
   - count the number of times processes with a specific set of
attributes exist during
     a period of time.
   - call this procedure from your own and use the global variables
PROCESS_SCAN.COM
     creates giving the identifying attributes of the first or last
process that was selected.
   - watch the processes of another cluster node and their changing
attributes as that node
     boots, BEFORE the System Manager can log-on to the booting node,
and BEFORE
     TCP/IP or DECnet has been loaded on that node.


You can find PROCESS_SCAN.COM at DCL.OpenVMS.Org here...
http://dcl.openvms.org/stories.php?story=07/10/09/1667996

Happy 30th OpenVMS Anniversary to the OpenVMS Community!

Cheers!

Keith Cayemberg

--=_alternative 005223BC85257375_=-- ------------------------------ Date: Mon, 15 Oct 2007 17:04:49 +0200 From: Joseph Huber Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: Keith Cayemberg wrote: > > You can find PROCESS_SCAN.COM at DCL.OpenVMS.Org here... > http://dcl.openvms.org/stories.php?story=07/10/09/1667996 > > Happy 30th OpenVMS Anniversary to the OpenVMS Community! Unfortunately, as with most of such simple text-widgets web sites, uploading apparently did not succeed: the DCL code is truncated. It looks quite interesting! If You have no other place, then send it by mail, I could put it into http://wwwvms.mppmu.mpg.de/util_root/com/ . Cheers, -- Joseph Huber - http://www.huber-joseph.de ------------------------------ Date: Mon, 15 Oct 2007 08:59:57 -0700 From: Keith Cayemberg Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: <1192463997.731594.141450@e9g2000prf.googlegroups.com> Here one more try... $ proc_ver =3D F$ENVIRONMENT("VERIFY_PROCEDURE") $ image_ver =3D F$ENVIRONMENT("VERIFY_IMAGE") $! set noverify $ goto INFOEND $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ info: $ ERASE $ Type Sys$Input PROCEDURE: PROCESS_SCAN.COM AUTHOR: Keith Cayemberg DATE: original version written sometime in the mid 1980's DESCRIPTION: This procedure provides a means to scan the JPI process context variables of other user's processes on the same node or cluster. Depending on the identity of the other processes, you will need the GROUP or WORLD privilege to see the other user's context. Global Symbols with the key attributes of the last process found are created for use in DCL command procedures. PROCESS_SCAN accepts selection criteria as either "positional parameters", whereby meaning is determined by its sequence P1 to P6 on the command line, or as "named parameters" inwhich the meaning and an operator are given explicitly. Positional and Named Parameters can be mixed, but the Named parameters mask their corresponding parameter position as unused. A Positional and Named parameter cannot use the same Process Context Variable as a selection criteria. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Positional Parameters: P U N J I S P1 =3D Processname find only processes with this process name or PID number or list of process names (use * in name as a wildcard) ALL, *, "" processes with any process name (default) "=3D", . processes having the same first 2 chars in Processname <> processes not having the same first 2 chars in Processname ? displays this help documentation. P2 =3D Username only processes owned by this user or list of users (use * only at end of name as a wildcard for matches) ALL, *, "" processes belonging to any user (default) =3D, . processes belonging to the current user <> processes not belonging to the current user P3 =3D Nodename only processes on the indicated node or node list (use * in name as a wildcard for matches) "", =3D, . processes only on current node (default) <> only processes not on current node * processes on any node in current cluster $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Positional Parameters: (continued) P U N J I S P4 =3D Jobtype only processes with the specified job type Keywords: DETACHED (or 0), NETWORK (or 1), BATCH (or 2), LOCAL (or 3), DIALUP (or 4), REMOTE (or 5) *, "" matches all jobtypes =3D, . processes with JOBTYPE =3D DETACHED <> processes with JOBTYPE <> DETACHED P5 =3D Imagename only processes running this image (name always used as wildcard match to full path/ filename) IDLE only idle processes at DCL level BUSY only processes running an image *, "" processes running any image or idle =3D, . processes running image in current default directory <> processes running image not in current default directory P6 =3D State only processes having this state will match *, "" matches all states =3D, . processes with STATE =3D HIB <> processes with STATE <> HIB $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Positional Parameters: (continued) P U N J I S P7, P8 =3D Process Context Variables to be displayed (see list). Use "*" as a wildcard (or "ALL") to indicate all variables are to be displayed. If none of these parameters are entered, then no variables are displayed. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Qualifiers affecting scan behavior: /CONTINUE This qualifier (P2 to P8) causes continuous scanning /CONT=3D until stopped with a Control-C. The DSTOP variant will /CONT=3D00:00:05 stop scanning after first finding at least one process /DSTOP with the selection criteria, and then finding none. /DSTOP=3D The default pause time between updates is 3 seconds. /DSTOP=3D::1 A "=3D" without a time value will set a time of 0 seconds. /BELL After finding at least one process in a continuous display, this qualifier (P2 to P8) causes a warning bell to ring 4 times if no process is found, and 2 times if found again. /FIRST This qualifier (P2 to P8) stops with the first process matching the search criteria. /PAGE This qualifier (P2 to P8) causes the output to be paged. /QUIET This qualifier (P2 to P8) disables output. This qualifier also turns continuous display mode off. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Named Parameters: This format can be used in place of any parameter P1 to P8 PARAMETER-FORMAT MEANING item=3Dvalue equals item>value greater than item=3Dvalue greater than or equal to item<=3Dvalue less than or equal to item<>value not equal to item>=3D value. The PRCLM quota checks whether JOBPRCCNT or PRCCNT is a >=3D value. All other "LM" quotas check if the corresponding "CNT" quota equals zero by default. With the PERCENT=3Dnn Qualifier, the processes which have <=3D this percentage (0 to 100%) of the specified resource available are selected. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Process Context Variables: ACCOUNT account name of the process DIOLM direct I/O quota limit APTCNT active page table count DIRIO direct I/O operations ASTACT access modes with active ASTs EFCS LEF state, flags 0-31 ASTCNT remaining AST quota EFCU LEF state, flags 32-63 ASTEN access modes with ASTs enabled EFWM event flag wait mask ASTLM AST limit quota ENQCNT remaining lock req. quota AUTHPRI authorized base priority ENQLM lock request quota AUTHPRIV authorized priviledges FILCNT remaining open file quota BIOCNT remaining buffered I/O quota FILLM open file limit quota BIOLM buffered I/O limit quota FREP0VA 1st free page address (P0) BUFIO buffered I/O operations FREP1VA 1st free page address (P1) BYTCNT remaining buff. I/O byte count FREPTECNT # of free pages for VM exp. BYTLM buffered I/O byte limit quota GPGCNT global page count in WS CLINAME command language interpreter GRP group number from UIC CPULIM CPU time limit IMAGE active image file name CPUTIM accumulated CPU Time IMAGECOUNT # of images run by process CURPRIV current priviledges IMAGNAME dir. & image file name DFPFC def. page fault cluster size IMAGPRIV installed image priviledges DFWSCNT def. working set cluster size JOBPRCCNT # of subprocesses this job DIOCNT remaining direct I/O quota JOBTYPE execution mode of root proc $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Process Context Variables:(continued) LAST_LOGIN_I last interactive login PID process ID number LAST_LOGIN_N last noninter. login PPGCNT # pages in WS LOGIN_FAILURES # of login failures PRCCNT # subprocs of this proc LOGIN_FLAGS login seq. LOGINOUT flgs PRCLM job subprocess quota LOGINTIM login time PRCNAM process name MASTER_PID master process ID # PRI current priority MAXDETACH max # detached processes PRIB base priority MAXJOBS max # active processes PROC_INDEX process index number MEM member number from UIC PROCESS_RIGHTS process rights MODE process mode PROCPRIV default priviledges MSGMASK default message mask RIGHTSLIST avail proc & sys rights NODE_CSID VAXcluster node ID # SHRFILLM max # open shared files NODE_VERSION VMS version number SITESPEC per-process site-spec # NODENAME Vaxcluster node name STATE current process state OWNER PID of creator process STS current status flags 1 PAGEFLTS total # of page faults STS2 current status flags 2 PAGFILCNT remain. page file quota SWPFILLOC swap file location PAGFILLOC current page file assign SYSTEM_RIGHTS system rights PGFLQUOTA paging file quota TABLENAME file spec of CLI PHDFLAGS process header flags $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Process Context Variables:(continued) TERMINAL login terminal name (virtual terminal if enabled) TMBU termination mailbox unit number TQCNT remaining timer queue entry quota TQLM process's limit on timer queue entries TT_ACCPORNAM access port name - (termserver/port) or (src.node/usr- name) TT_PHYDEVNAM physical terminal name - if 0 then virt. term. is disconnected UAF_FLAGS UAF flags from user/owner of process UIC user identification code USERNAME user name of process's owner VIRTPEAK virtual peak address size of process VOLUMES number of volumes currently mounted by process WSAUTH maximum authorized working set size WSAUTHEXT maximum authorized working set extent WSEXTENT current working set extent WSPEAK peak working set size WSQUOTA working set size quota WSSIZE current working set size ALLIO Direct IO + Bufferred IO (this is used for I/O Heading values) $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Global Symbols: The following global symbols are updated at completion of the process scan giving the job/process information of the last process found matching the selection criteria. The /FIRST switch can be used to assign the attributes of the first process which is found to the symbols. PS_COUNT The number of processes matching the search criteria. If PS is aborted, then the count is given as a negative value. PS_ALLIO ALL I/O in pagelets (both direct and buffered) PS_CPUTIM accumulated CPU TIMe PS_IMAGE full IMAGE filename or "IDLE" PS_JOB JOB type PS_NODE NODE name on which the process exists PS_PAGEFLTS total number of PAGEFauLTS PS_PID Process IDentification number (cluster unique) PS_PRCNAM PRoCess NAMe (node unique) PS_PRI current process PRIority PS_STATE process STATE PS_USER USERname $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Examples: $ @PROCESS_SCAN CS*,LA* STATE<>HIB /CONT This example gives continuous information about non-HIBernating processes having a process name beginning with 'CS' or 'LA' for the local node only. Screen updates occur every 3 seconds. $ @PROCESS_SCAN "" LAGOSMAN * BATCH "" HIB *WS* This example scans the entire cluster for processes in batch mode with the username LAGOSMAN and displays all working storage values for each process in the HIBernate state. $ @PROCESS_SCAN * LAG* CH07 3 LAGOS.EXE * PGFLQUOTA VIRT* This example scans the Page File Quota and Virtual Peak values for all LOCAL processes that are on node CH07, having a username starting with 'LAG', and running LAGOS.EXE $ TEMP =3D F$VERIFY(PROC_VER, IMAGE_VER) $ exit $ INFOEND: $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ TRUE =3D 1 $ FALSE =3D 0 $! $ c_abort =3D FALSE $ on error then goto abort_c $ on control_y then goto abort_c $! $ JPILIST1 =3D - "ACCOUNT,ALLIO,APTCNT,ASTACT,ASTCNT,ASTEN,ASTLM,AUTHPRI," + - "AUTHPRIV,BIOCNT,BIOLM,BUFIO,BYTCNT,BYTLM,CLINAME,CPULIM,CPUTIM," + - =20 "CURPRIV,DFPFC,DFWSCNT,DIOCNT,DIOLM,DIRIO,EFCS,EFCU,EFWM,ENQCNT,ENQLM," + - =20 "FILCNT,FILLM,FREP0VA,FREP1VA,FREPTECNT,GPGCNT,GRP,IMAGE,IMAGECOUNT," + - "IMAGNAME,IMAGPRIV,JOBPRCCNT,JOBTYPE,LAST_LOGIN_I,LAST_LOGIN_N," + - "LOGIN_FAILURES,LOGIN_FLAGS,LOGINTIM,MASTER_PID,MAXDETACH,MAXJOBS," + - "MEM,MODE,MSGMASK,NODE_CSID,NODE_VERSION,NODENAME,OWNER," $ JPILIST2 =3D - "PAGEFLTS,PAGFILCNT,PAGFILLOC,PGFLQUOTA,PHDFLAGS,PID,PPGCNT," + - "PRCCNT,PRCLM,PRCNAM,PRI,PRIB,PROC_INDEX,PROCESS_RIGHTS," + - "PROCPRIV,RIGHTSLIST,SHRFILLM,SITESPEC,STATE,STS,STS2," + - "SWPFILLOC,SYSTEM_RIGHTS,TABLENAME,TERMINAL,TIME,TMBU,TQCNT,TQLM," + - =20 "TT_ACCPORNAM,TT_PHYDEVNAM,UAF_FLAGS,UIC,USERNAME,VIRTPEAK,VOLUMES," + - "WSAUTH,WSAUTHEXT,WSEXTENT,WSPEAK,WSQUOTA,WSSIZE" $!find current image name $ proc =3D f$parse(f$getjpi ("","imagname"),,,"NAME") $! $ SAY =3D "WRITE SYS$OUTPUT" $! $!initialize terminal screen control symbols $ ESC =3D "" $ ENQ =3D "" $ LF =3D "" $ CR =3D "" $ DCS =3D "" $ ES =3D "" $ EStoEND =3D "" $ EStoHERE =3D "" $ ESline =3D "" $ ESlinetoend =3D "" $ ESlinetohere =3D "" $ BELL =3D "" $ TOP =3D "" $ SWSH =3D "" $ DW*SH =3D "" $ DHT =3D "" $ DHB =3D "" $ NORM =3D "" $ BOLD =3D "" $ UNDER =3D "" $ BLINK =3D "" $ INVERSE =3D "" $ BOLDOFF =3D "" $ UNDEROFF =3D "" $ BLINKOFF =3D "" $ INVERSEOFF =3D "" $ ONEUP =3D "" $ NEXTLINE =3D "" $ CURSORON =3D "" $ CURSOROFF =3D "" $ ER*ASE =3D "" $ if f$mode() .eqs. "BATCH" then goto skip_term_codes $! $!define terminal screen control symbols $ ESC[0,8]=3D27 $ ENQ[0,8]=3D5 $ LF[0,8]=3D10 $ CR[0,8]=3D13 $ CSI :=3D "''ESC'[" $ DCS :=3D "''ESC'P" $ ES :=3D "''ESC'[2J" $ EStoEND :=3D "''ESC'[0J" $ EStoHERE :=3D "''ESC'[1J" $ ESline :=3D "''ESC'[2K" $ ESlinetoend :=3D "''ESC'[0K" $ ESlinetohere :=3D "''ESC'[1K" $ TOP :=3D "''ESC'[H" $ SWSH :=3D "''ESC'#5" $ DW*SH :=3D "''ESC'#6" $ DHT :=3D "''ESC'#3" $ DHB :=3D "''ESC'#4" $ NORM :=3D "''ESC'[m" $ BOLD :=3D "''ESC'[1m" $ UNDER :=3D "''ESC'[4m" $ BLINK :=3D "''ESC'[5m" $ INVERSE :=3D "''ESC'[7m" $ BOLDOFF :=3D "''ESC'[22m" $ UNDEROFF :=3D "''ESC'[24m" $ BLINKOFF :=3D "''ESC'[25m" $ INVERSEOFF :=3D "''ESC'[27m" $ ONEUP :=3D "''ESC'[1A" $ NEXTLINE :=3D "''LF'''CR'" $ CURSORON:=3D "''CSI'?25h" !shows cursor $ CURSOROFF:=3D "''CSI'?25l" !hides cursor $! $ skip_term_codes: $! $! initialize variables $ ER*ASE :=3D WRITE SYS$OUTPUT ES,TOP $ ERRMSG =3D "" $ TERM_DEVICE =3D f$getdvi("TT","TT_PHYDEVNAM") $ TERM_TYPE =3D f$extract(0,4,TERM_DEVICE) $ TERM_WIDTH =3D F$getdvi("TT","DEVBUFSIZ") $ TERM_HEIGHT =3D f$getdvi("TT","TT_PAGE") $ CURRENT_TERM_HEIGHT =3D TERM_HEIGHT $ JUMP =3D TERM_HEIGHT / 3 $ HEADER =3D 2 $ FOOTER =3D 1 $ JUMP_BUFFER =3D JUMP + (JUMP/2) + HEADER + FOOTER $ MAX_LINECOUNT =3D 42 $ MIN_LINECOUNT =3D 6 $ LINECOUNT =3D 0 $ PSCOUNT =3D 0 $ PERCENT =3D 0 $! $ PS_COUNT =3D=3D 0 $ PS_PID =3D=3D "" $ PS_PRCNAM =3D=3D "" $ PS_USER =3D=3D "" $ PS_NODE =3D=3D "" $ PS_JOB =3D=3D "" $ PS_IMAGE =3D=3D "" $ PS_STATE =3D=3D "" $ PS_PRI =3D=3D "" $ PS_CPUTIM =3D=3D "" $ PS_ALLIO =3D=3D "" $ PS_PAGEFLTS =3D=3D "" $ PS_PGFLQUOTA =3D=3D "INVALID!" $ PS_VIRTPEAK =3D=3D "INVALID!" $ PS_TIME=3D"NOT_FOUND" $ JPI_TIME=3D"NOT_FOUND" $! $ SYMBOLCNT =3D 0 $ DEFAULT_WAIT_TIME =3D "00:00:03.00" $ DISPLAY_HEAD_ONLY =3D FALSE $ img =3D "" $! $ COMMAND_LINE =3D P1+"=A7"+P2+"=A7"+P3+"=A7"+P4+"=A7"+P5+"=A7"+P6+"=A7"+P7+"=A7"+P8+"=A7" $ PARSED_LINE =3D f$edit(COMMAND_LINE,"UPCASE,COLLAPSE,TRIM") $! $ P1 =3D "" $ P2 =3D "" $ P3 =3D "" $ P4 =3D "" $ P5 =3D "" $ P6 =3D "" $ P7 =3D "" $ P8 =3D "" $ P9 =3D "" $ P10 =3D "" $! $!--------------------------------------------------------- $! $ SUBSTLOOP: $ if f$locate("/",PARSED_LINE) .ne. f$length(PARSED_LINE) $ then $ PARSED_LINE =3D f$extract(0,f$locate("/",PARSED_LINE),PARSED_LINE) + "=A7" + - f$extract(f$locate("/",PARSED_LINE)+1,f $length(PARSED_LINE),PARSED_LINE) $ else $ goto SUBSTEND $ endif $ goto SUBSTLOOP $! $ SUBSTEND: $! $!--------------------------------------------------------- $! $ PCOUNT =3D 0 $ PARSE_LINE: $ PARAM =3D f$extract(0,f$locate("=A7",PARSED_LINE)+1,PARSED_LINE) $ PCOUNT =3D PCOUNT + 1 $ P'PCOUNT' =3D PARAM - "=A7" $ if PARAM .eqs. "" then PARAM =3D PARSED_LINE $ PARSED_LINE =3D PARSED_LINE - PARAM $ if f$length(PARSED_LINE) .gt. 0 then goto PARSE_LINE $! $!--------------------------------------------------------- $! $ if f$locate(":",P3) .eq. f$length(P3)-1 then - P3 =3D f$extract(0,f$locate(":",P3),P3) $ if f$locate(":",P3) .eq. f$length(P3)-1 then - P3 =3D f$extract(0,f$locate(":",P3),P3) $ if P3 .eqs. "0" then P3 =3D "''f$trnlnm("SYS$NODE")'" - "::" $! $ if P1 .eqs. "." then P1 =3D f$extract(0,2,f$process()) + "*" $ if P2 .eqs. "." then P2 =3D f$getjpi("","USERNAME") $ if P3 .eqs. "." then P3 =3D "''f$trnlnm("SYS$NODE")'" - "::" $ if P4 .eqs. "." then P4 =3D "JOB=3DDETACHED" $ if P6 .eqs. "." then P6 =3D "STATE=3DHIB" $! $ if P1 .eqs. "=3D" then P1 =3D f$extract(0,2,f$process()) + "*" $ if P2 .eqs. "=3D" then P2 =3D f$getjpi("","USERNAME") $ if P3 .eqs. "=3D" then P3 =3D "''f$trnlnm("SYS$NODE")'" - "::" $ if P4 .eqs. "=3D" then P4 =3D "JOB=3DDETACHED" $ if P6 .eqs. "=3D" then P6 =3D "STATE=3DHIB" $! $ if P1 .eqs. "<>" then P1 =3D "PROC<>''f$extract(0,2,f$process())'" + "*" $ if P2 .eqs. "<>" then P2 =3D "USER<>''f$getjpi("","USERNAME")'" $ if P3 .eqs. "<>" then P3 =3D "NODE<>''f$trnlnm("SYS$NODE")'" - "::" $ if P4 .eqs. "<>" then P4 =3D "JOB<>DETACHED" $ if P6 .eqs. "<>" then P6 =3D "STATE<>HIB" $! $ if (P5 .eqs. ".") .or. (P5 .eqs. "=3D") $ then $ P5 =3D f$parse(f$trnlnm("SYS$DISK"),,,,"NO_CONCEAL") $ P5 =3D P5 - ".;" - "][" - "][" - "><" - "><" $ if f$locate("<",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate("<",P5),P5) + "[" + - f$extract(f$locate("<",P5)+1,f$length(P5),P5) $ endif $ if f$locate(">",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate(">",P5),P5) + "]" + - f$extract(f$locate(">",P5)+1,f$length(P5),P5) $ endif $ P5 =3D P5 - "][" - "][" - "><" - "><" $ P5 =3D "IMAGE=3D''P5'" $ endif $ if P5 .eqs. "<>" $ then $ P5 =3D f$parse(f$trnlnm("SYS$DISK"),,,,"NO_CONCEAL") $ P5 =3D P5 - ".;" - "][" - "][" - "><" - "><" $ if f$locate("<",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate("<",P5),P5) + "[" + - f$extract(f$locate("<",P5)+1,f$length(P5),P5) $ endif $ if f$locate(">",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate(">",P5),P5) + "]" + - f$extract(f$locate(">",P5)+1,f$length(P5),P5) $ endif $ P5 =3D P5 - "][" - "][" - "><" - "><" $ P5 =3D "IMAGE<>''P5'" $ endif $! $! initialize qualifier flags affecting scanning behavior $ check_quotas =3D FALSE ! if TRUE means CHECK parameter is being used $ display_symbols =3D FALSE ! if TRUE then JPI_* symbol values are displayed $ first_display =3D FALSE ! if TRUE means to search only for first match $ quiet_display =3D FALSE ! if TRUE means do not display processes found $ reloop_OK =3D TRUE ! if TRUE then continuous reloop thru JPI context $ continuous_display =3D FALSE ! if TRUE then display loops through JPI context $ wait_display =3D FALSE ! if TRUE then looping must pause at full screen $ down_stop =3D FALSE ! if TRUE then continuous display stops when $! up/down status changes $! $!check if a continuos display and wait time is desired $ if (f$extract(0,4,P1) .eqs. "CONT") .OR. (f$extract(0,5,P1) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P1) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P1)+1,f$length(P1),P1) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P1) .ne. f$length(P1)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P1 =3D "" $ endif $ if (f$extract(0,4,P2) .eqs. "CONT") .OR. (f$extract(0,5,P2) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P2) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P2)+1,f$length(P2),P2) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P2) .ne. f$length(P2)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P2 =3D "" $ endif $ if (f$extract(0,4,P3) .eqs. "CONT") .OR. (f$extract(0,5,P3) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P3) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P3)+1,f$length(P3),P3) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P3) .ne. f$length(P3)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P3 =3D "" $ endif $ if (f$extract(0,4,P4) .eqs. "CONT") .OR. (f$extract(0,5,P4) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P4) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P4)+1,f$length(P4),P4) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P4) .ne. f$length(P4)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P4 =3D "" $ endif $ if (f$extract(0,4,P5) .eqs. "CONT") .OR. (f$extract(0,5,P5) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P5) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P5)+1,f$length(P5),P5) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P5) .ne. f$length(P5)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P5 =3D "" $ endif $ if (f$extract(0,4,P6) .eqs. "CONT") .OR. (f$extract(0,5,P6) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P6) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P6)+1,f$length(P6),P6) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P6) .ne. f$length(P6)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P6 =3D "" $ endif $ if (f$extract(0,4,P7) .eqs. "CONT") .OR. (f$extract(0,5,P7) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P7) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P7)+1,f$length(P7),P7) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P7) .ne. f$length(P7)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P7 =3D "" $ endif $ if (f$extract(0,4,P8) .eqs. "CONT") .OR. (f$extract(0,5,P8) .eqs. "DSTOP") $ then $ continuous_display =3D TRUE $ if (f$extract(0,5,P8) .eqs. "DSTOP") then down_stop =3D TRUE $ wait_display =3D TRUE $ wait_time =3D f$extract(f$locate("=3D",P8)+1,f$length(P8),P8) $ if wait_time .eqs. "" $ then $ if (f$locate("=3D",P8) .ne. f$length(P8)) $ then $ wait_time =3D "00:00:00.00" $ else $ wait_time =3D default_wait_time $ endif $ endif $ P8 =3D "" $ endif $ if wait_display $ then $ wait_time =3D f$cvtime(wait_time,"DELTA") $ if .not. $status then goto quitit $ endif $! $! $!check for explicit search qualifiers $! $!initialize variables $ OP1 =3D "" $ OP2 =3D "" $ OP3 =3D "" $ OP4 =3D "" $ OP5 =3D "" $ OP6 =3D "" $ OP7 =3D "" $ OP8 =3D "" $ OP9 =3D "" $ ITEM1 =3D "" $ ITEM2 =3D "" $ ITEM3 =3D "" $ ITEM4 =3D "" $ ITEM5 =3D "" $ ITEM6 =3D "" $ ITEM7 =3D "" $ ITEM8 =3D "" $ ITEM9 =3D "" $ VAL1 =3D "" $ VAL2 =3D "" $ VAL3 =3D "" $ VAL4 =3D "" $ VAL5 =3D "" $ VAL6 =3D "" $ VAL7 =3D "" $ VAL8 =3D "" $ VAL9 =3D "" $ Pdex =3D 0 $! $ PdexLOOP1: $ Pdex =3D Pdex + 1 $! $ if Pdex .gt. 9 then goto PdexEND1 $! $ if P'Pdex' .eqs. "CHECK" then P'Pdex' =3D "CHECK=3D" $ if P'Pdex' .eqs. "PERCENT" then P'Pdex' =3D "PERCENT=3D" $! $ if (f$locate("><",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "ANY" $ ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("<",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("<>",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "NEQ" $ ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate(">",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("<=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "LEQ" $ ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate(">=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "GEQ" $ ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("<",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "LSS" $ ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("<",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate(">",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "GTR" $ ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate(">",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("=3D=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "ALL" $ ITEM'Pdex' =3D f$extract(0,f$locate("=3D",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+2,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "EQL" $ ITEM'Pdex' =3D f$extract(0,f$locate("=3D",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if ITEM'Pdex' .eqs. "CHECK" $ then $ check_quotas =3D TRUE $ display_symbols =3D TRUE $ if VAL'Pdex' .eqs. "" then VAL'Pdex' =3D "PGFLQUOTA" $ check_item =3D VAL'Pdex' $ check_item =3D check_item - "LM" - "CNT" $ endif $! $ if ITEM'Pdex' .eqs. "PERCENT" $ then $ if VAL'Pdex' .eqs. "" then VAL'Pdex' =3D 0 $ percent =3D VAL'Pdex' $ if f$type(percent) .ne. "INTEGER" then goto percenterr $ if percent .gt. 100 then goto percenterr $ if percent .lt. 0 then goto percenterr $ endif $! $ if ITEM'Pdex' .eqs. "PROC" then ITEM'Pdex' =3D "PRCNAM" $ if ITEM'Pdex' .eqs. "PROCESS" then ITEM'Pdex' =3D "PRCNAM" $ if ITEM'Pdex' .eqs. "PROCNAM" then ITEM'Pdex' =3D "PRCNAM" $ if ITEM'Pdex' .eqs. "PRCNAM" then P1 =3D "*" $! $ if ITEM'Pdex' .eqs. "USER" then ITEM'Pdex' =3D "USERNAME" $ if ITEM'Pdex' .eqs. "USERNAME" then P2 =3D "*" $! $ if ITEM'Pdex' .eqs. "NODE" then ITEM'Pdex' =3D "NODENAME" $ if (ITEM'Pdex' .eqs. "NODENAME") .and. (OP'Pdex' .eqs. "EQL") $ then $ if (Pdex .ne. 3) $ then $ P3 =3D VAL'Pdex'+",''P3'" $ else $ P3 =3D VAL'Pdex' $ endif $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ else $ if ITEM'Pdex' .eqs. "NODENAME" then P3 =3D "CANCELLED" $ endif $! $ if ITEM'Pdex' .eqs. "JOB" then ITEM'Pdex' =3D "JOBTYPE" $ if ITEM'Pdex' .eqs. "JOBTYP" then ITEM'Pdex' =3D "JOBTYPE" $ if ITEM'Pdex' .eqs. "JOBTYPE" then P4 =3D "*" $! $ if ITEM'Pdex' .eqs. "STATE" then P6 =3D "*" $! $ if ITEM'Pdex' .eqs. "ACCNT" then ITEM'Pdex' =3D "ACCOUNT" $ if ITEM'Pdex' .eqs. "AUTH" then ITEM'Pdex' =3D "AUTHPRI" $ if ITEM'Pdex' .eqs. "CUR" then ITEM'Pdex' =3D "CURPRIV" $ if ITEM'Pdex' .eqs. "GROUP" then ITEM'Pdex' =3D "GRP" $ if ITEM'Pdex' .eqs. "HWMODEL" then ITEM'Pdex' =3D "HW_MODEL" $ if ITEM'Pdex' .eqs. "MODEL" then ITEM'Pdex' =3D "HW_MODEL" $ if ITEM'Pdex' .eqs. "MOD" then ITEM'Pdex' =3D "HW_MODEL" $ if ITEM'Pdex' .eqs. "HW" then ITEM'Pdex' =3D "HW_NAME" $ if ITEM'Pdex' .eqs. "HWNAME" then ITEM'Pdex' =3D "HW_NAME" $ if ITEM'Pdex' .eqs. "JOBCNT" then ITEM'Pdex' =3D "JOBPRCCNT" $ if ITEM'Pdex' .eqs. "MASTER" then ITEM'Pdex' =3D "MASTER_PID" $ if ITEM'Pdex' .eqs. "MBR" then ITEM'Pdex' =3D "MEM" $ if ITEM'Pdex' .eqs. "MEMB" then ITEM'Pdex' =3D "MEM" $ if ITEM'Pdex' .eqs. "MEMBER" then ITEM'Pdex' =3D "MEM" $ if ITEM'Pdex' .eqs. "MOD" then ITEM'Pdex' =3D "MODE" $ if ITEM'Pdex' .eqs. "CSID" then ITEM'Pdex' =3D "NODE_CSID" $ if ITEM'Pdex' .eqs. "OWN" then ITEM'Pdex' =3D "OWNER" $ if ITEM'Pdex' .eqs. "PROCCNT" then ITEM'Pdex' =3D "PRCCNT" $ if ITEM'Pdex' .eqs. "COUNT" then ITEM'Pdex' =3D "PRCCNT" $ if ITEM'Pdex' .eqs. "PRIO" then ITEM'Pdex' =3D "PRI" $ if ITEM'Pdex' .eqs. "PRIORITY" then ITEM'Pdex' =3D "PRI" $ if ITEM'Pdex' .eqs. "BASE" then ITEM'Pdex' =3D "PRIB" $ if ITEM'Pdex' .eqs. "STATUS" then ITEM'Pdex' =3D "STS" $ if ITEM'Pdex' .eqs. "TERM" then ITEM'Pdex' =3D "TERMINAL" $ if ITEM'Pdex' .eqs. "UIC" then ITEM'Pdex' =3D "UIC" $ if ITEM'Pdex' .eqs. "PID" $ then $ P1 =3D VAL'Pdex' $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ endif $ if ITEM'Pdex' .eqs. "IMAG" then ITEM'Pdex' =3D "IMAGE" $ if ITEM'Pdex' .eqs. "IMAGNAM" then ITEM'Pdex' =3D "IMAGE" $ if ITEM'Pdex' .eqs. "IMAGNAME" then ITEM'Pdex' =3D "IMAGE" $ if (ITEM'Pdex' .eqs. "IMAGE") $ then $ if (OP'Pdex' .nes. "NEQ") $ then $ P5 =3D "ISDEF" + VAL'Pdex' $ img =3D VAL'Pdex' $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ else $ P5 =3D "NOTDEF" + VAL'Pdex' $ img =3D VAL'Pdex' $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ endif $ endif $! $ goto PdexLOOP1 $ PdexEND1: $! $!check if a quiet display is desired $ if (f$extract(0,5,P1) .eqs. "QUIET") $ then $ P1 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $ if (f$extract(0,5,P2) .eqs. "QUIET") $ then $ P2 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $ if (f$extract(0,5,P3) .eqs. "QUIET") $ then $ P3 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $ if (f$extract(0,5,P4) .eqs. "QUIET") $ then $ P4 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $ if (f$extract(0,5,P5) .eqs. "QUIET") $ then $ P5 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $ if (f$extract(0,5,P6) .eqs. "QUIET") $ then $ P6 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $ if (f$extract(0,5,P7) .eqs. "QUIET") $ then $ P7 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $ if (f$extract(0,5,P8) .eqs. "QUIET") $ then $ P8 =3D "" $ quiet_display =3D TRUE $ continuous_display =3D FALSE $ endif $! $ if quiet_display .eq. 1 then ASSIGN/SUPERVISOR_MODE NL: SYS$OUTPUT $! $!check if paging is desired $ page_display =3D FALSE $ if (f$extract(0,4,P1) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P1 =3D "" $ endif $ if (f$extract(0,4,P2) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P2 =3D "" $ endif $ if (f$extract(0,4,P3) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P3 =3D "" $ endif $ if (f$extract(0,4,P4) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P4 =3D "" $ endif $ if (f$extract(0,4,P5) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P5 =3D "" $ endif $ if (f$extract(0,4,P6) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P6 =3D "" $ endif $ if (f$extract(0,4,P7) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P7 =3D "" $ endif $ if (f$extract(0,4,P8) .eqs. "PAGE") $ then $ page_display =3D TRUE $ P8 =3D "" $ endif $! $!check if warning BELL is desired $ if ((f$extract(0,4,P1) .eqs. "BELL") .AND. (f$mode() .nes. "BATCH")) $ then $ P1 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P2) .eqs. "BELL") $ then $ P2 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P3) .eqs. "BELL") $ then $ P3 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P4) .eqs. "BELL") $ then $ P4 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P5) .eqs. "BELL") $ then $ P5 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P6) .eqs. "BELL") $ then $ P6 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P7) .eqs. "BELL") $ then $ P7 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P8) .eqs. "BELL") $ then $ P8 =3D "" $ BELL[0,8] =3D 7 $ endif $! $!check if only first process is desired $ if (f$extract(0,5,P1) .eqs. "FIRST") $ then $ P1 =3D "" $ first_display =3D TRUE $ endif $ if (f$extract(0,5,P2) .eqs. "FIRST") $ then $ P2 =3D "" $ first_display =3D TRUE $ endif $ if (f$extract(0,5,P3) .eqs. "FIRST") $ then $ P3 =3D "" $ first_display =3D TRUE $ endif $ if (f$extract(0,5,P4) .eqs. "FIRST") $ then $ P4 =3D "" $ first_display =3D TRUE $ endif $ if (f$extract(0,5,P5) .eqs. "FIRST") $ then $ P5 =3D "" $ first_display =3D TRUE $ endif $ if (f$extract(0,5,P6) .eqs. "FIRST") $ then $ P6 =3D "" $ first_display =3D TRUE $ endif $ if (f$extract(0,5,P7) .eqs. "FIRST") $ then $ P7 =3D "" $ first_display =3D TRUE $ endif $ if (f$extract(0,5,P8) .eqs. "FIRST") $ then $ P8 =3D "" $ first_display =3D TRUE $ endif $! $! go to help $ if P1 .eqs. "?" then GOTO INFO $! $! set flag for extended JPI_ Symbol output $ if (P7 + P8 .nes. "") then display_symbols =3D TRUE $! $! assign parameters to variables $ procname =3D f$extract(0,1,P1) $ if f$type(procname) .eqs. "INTEGER" $ then $ procname =3D f$edit(f$getjpi(P1,"prcnam"),"TRIM") $ else $ procname =3D P1 $ endif $ user =3D P2 $ node =3D P3 $ jobtyp =3D P4 $! $ image =3D P5 $ if img .eqs. "" $ then $ img =3D image $ endif $ if img .eqs. "" then img =3D "*" $ imgprt =3D "i=3D''img'" $! $ state =3D P6 $ if P6 .eqs. "" then state =3D "*" $ down_count =3D 0 $ up_count =3D 0 $! $ if procname .eqs. "" then procname =3D "*" $ if procname .eqs. "all" then procname =3D "*" $ if procname .eqs. "ALL" then procname =3D "*" $ if user .eqs. "all" then user =3D "*" $ if user .eqs. "ALL" then user =3D "*" $ if user .eqs. "" then user =3D "*" $ if .not. (F$PRIVILEGE("WORLD") .or. F$PRIVILEGE("GROUP")) $ then $ user =3D "''f$getjpi("","USERNAME")'" $ endif $ if (F$PRIVILEGE("GROUP") .and. - (.not. F$PRIVILEGE("WORLD")) .and. (user .eqs. "*")) $ then $ usr =3D "''f$user()'" $ if f$locate(",",usr) .ne. f$length(usr) then - usr =3D "''f$extract(0,f$locate(",",usr)+1,usr)'" + "*]" $ else $ usr =3D user $ endif $! $! if node parameter is empty, then find current node $ if node .eqs. "" then node =3D f$trnlnm("SYS$NODE") $ pos =3D f$locate(":",node) $ node =3D f$extract(0,pos,node) $! $ isIDLE =3D FALSE $ isNOTIDLE =3D FALSE $ if (f$extract(0,4,image) .eqs. "IDLE") .or. - (f$extract(0,4,image) .eqs. "idle") $ then $ image =3D "" $ isIDLE =3D TRUE $ imgprt =3D "i=3DIDLE" $ endif $ if (f$extract(0,4,image) .eqs. "BUSY") .or. - (f$extract(0,4,image) .eqs. "busy") $ then $ image =3D "" $ isNOTIDLE =3D TRUE $ imgprt =3D "i=3DBUSY" $ endif $! $ isDEFAULT =3D FALSE $ isNOTDEFAULT =3D FALSE $ if (f$extract(0,5,image) .eqs. "ISDEF") .or. - (f$extract(0,5,image) .eqs. "isdef") $ then $ image =3D f$extract(5,f$length(image),image) $ isNOTIDLE =3D TRUE $ isDEFAULT =3D TRUE $ imgprt =3D "i=3DDEFAULT" $ endif $ if (f$extract(0,6,image) .eqs. "NOTDEF") .or. - (f$extract(0,6,image) .eqs. "notdef") $ then $ image =3D f$extract(6,f$length(image),image) $ isNOTIDLE =3D TRUE $ isNOTDEFAULT =3D TRUE $ imgprt =3D "i<>DEFAULT" $ endif $ if image .eqs. "*" then imgprt =3D "i=3D*" $ if image .eqs. "*" then image =3D "" $! $!convert jobtype parameter to full jobtype name $ if jobtyp .eqs. "" then jobtyp =3D "*" $ if jobtyp .eqs. "0" then jobtyp =3D "DETACHED" $ if jobtyp .eqs. "1" then jobtyp =3D "NETWORK" $ if jobtyp .eqs. "2" then jobtyp =3D "BATCH" $ if jobtyp .eqs. "3" then jobtyp =3D "LOCAL" $ if jobtyp .eqs. "4" then jobtyp =3D "DIALUP" $ if jobtyp .eqs. "5" then jobtyp =3D "REMOTE" $! $ LINE_PARAMETERS :=3D - "p=3D''procname' u=3D''usr' n=3D''node' j=3D''jobtyp' ''imgprt' s=3D''st= ate' " - "''P7' ''P8' ''P9'" $! $ LPdex =3D 1 $ LPLOOP: $ LPITEM =3D ITEM'LPdex' $ REDUCE =3D "USERNAME,AUTHPRI,TERMINAL" $ if f$locate(LPITEM,REDUCE) .nes. f$length(REDUCE) then - LPITEM =3D f$extract(0,4,LPITEM) $ if LPITEM .eqs. "MASTER_PID" then LPITEM =3D "MASTER" $ if LPITEM .eqs. "ACCOUNT" then LPITEM =3D "ACCNT" $ IF OP'LPdex' .eqs. "ANY" then LPOP =3D "><" $ IF OP'LPdex' .eqs. "NEQ" then LPOP =3D "<>" $ IF OP'LPdex' .eqs. "LEQ" then LPOP =3D "<=3D" $ IF OP'LPdex' .eqs. "GEQ" then LPOP =3D ">=3D" $ IF OP'LPdex' .eqs. "LSS" then LPOP =3D "<" $ IF OP'LPdex' .eqs. "GTR" then LPOP =3D ">" $ IF OP'LPdex' .eqs. "ALL" then LPOP =3D "=3D=3D" $ IF OP'LPdex' .eqs. "EQL" then LPOP =3D "=3D" $ IF OP'LPdex' .eqs. "" then LPOP =3D "" $ LPVAR =3D LPITEM + LPOP + VAL'LPdex' $ if LPVAR .nes. "" then LINE_PARAMETERS :=3D "''LINE_PARAMETERS' ''LPVAR'" $ LPdex =3D LPdex + 1 $ if LPdex .lt. 9 then goto LPLOOP $ LINE_PARAMETERS :=3D "''f$edit(LINE_PARAMETERS,"COMPRESS,TRIM")'" $! $ write sys$output ESline," " $ if continuous_display then SAY ES $ if .not. continuous_display then TOP =3D NEXTLINE $! $ if P7 .nes. "" $ then $ param =3D P7 $ gosub paramcount $ endif $! $ if P8 .nes. "" $ then $ param =3D P8 $ gosub paramcount $ endif $! $ if check_quotas $ then $ if (check_item .eqs. "PRC") $ then $ symbolcnt =3D symbolcnt + 3 $ goto ifcheck1 $ endif $ if (check_item .eqs. "PGFLQUOTA") $ then $ symbolcnt =3D symbolcnt + 2 $ goto ifcheck1 $ endif $ param =3D check_item+"CNT" $ gosub paramcount $ param =3D check_item+"LM" $ gosub paramcount $ endif $ ifcheck1: $! $ if display_symbols .and. page_display $ then $ TOP =3D NEXTLINE $ current_term_height =3D max_linecount $ if f$mode() .nes. "BATCH" then set term / page=3D'current_term_height' $ er $ endif $! $ STARTIT: $!define process search context $! $ Pdex =3D 0 $ PdexLOOP2: $ Pdex =3D Pdex + 1 $ if Pdex .gt. 9 then goto PdexEND2 $ if ITEM'Pdex' .eqs. "CHECK" then goto PdexLOOP2 $ if ITEM'Pdex' .eqs. "PERCENT" then goto PdexLOOP2 $ if OP'Pdex' .nes. "" then - a =3D f$context("process",proc_context,ITEM'Pdex',VAL'Pdex',OP'Pdex') $ if .not. $STATUS then goto abortit $ goto PdexLOOP2 $ PdexEND2: $! $ if node .nes. "CANCELLED" then - a =3D f$context("process",proc_context,"nodename",node,"eql") $ if jobtyp .nes. "*" then - a =3D f$context("process",proc_context,"jobtype",jobtyp,"eql") $ if state .nes. "*" then - a =3D f$context("process",proc_context,"state",state,"eql") $ if user .nes. "*" then - a =3D f$context("process",proc_context,"username",user,"eql") $ if procname .nes. "*" then - a =3D f$context("process",proc_context,"prcnam",procname,"eql") $! $!take first step into process search context $ pid =3D f$pid(proc_context) $ if pid .eqs. "" $ then $ if up_count .gt. down_count $ then $ SAY ONEUP,BELL,BELL,BELL,BELL $ down_count =3D down_count + 1 $ if down_stop then goto abortit $ endif $ goto notfound $ else $ if up_count .eq. down_count $ then $ IF up_count .gt. 0 then SAY ONEUP,BELL,BELL $ up_count =3D up_count + 1 $ endif $ endif $! $ gosub displayheader $! $ context_loop: $! get process information... $ on error then goto param_err $! $! data for the /continuous default output $ JPI_PID =3D pid $ JPI_TIME=3Df$time() $ JPI_NODENAME=3Df$edit(f$getjpi(pid,"nodename"),"TRIM") $ JPI_PRCNAM=3Df$edit(f$getjpi(pid,"prcnam"),"TRIM") $ NODE_PROC =3D F$FAO("!(#AS) !(#AS)",6,JPI_NODENAME,15,JPI_PRCNAM) $ JPI_USERNAME=3Df$edit(f$getjpi(pid,"username"),"TRIM") $ JPI_STATE=3Df$getjpi(pid,"STATE") $ JPI_PRI=3Df$string(f$getjpi(pid,"PRI")) $ JPI_JOBTYPE=3Df$getjpi(pid,"JOBTYPE") $ JPI_IMAGNAME=3Df$getjpi(pid,"imagname") $ JPI_IMAGNAME=3DJPI_IMAGNAME - "][" - "][" $ JPI_DIRIO=3Df$string(f$getjpi(pid,"DIRIO")) $ JPI_BUFIO=3Df$string(f$getjpi(pid,"BUFIO")) $ JPI_ALLIO=3D F$INTEGER(JPI_DIRIO) + F$INTEGER(JPI_BUFIO) $ JPI_ALLIO=3D "''JPI_ALLIO'" $ JPI_PAGEFLTS=3Df$string(f$getjpi(pid,"PAGEFLTS")) $ JPI_CPUTIM=3Df$string(f$getjpi(pid,"CPUTIM")) $ CPUHRS =3D JPI_CPUTIM / 360000 $ CPUMIN =3D (JPI_CPUTIM - (CPUHRS * 360000)) / 6000 $ CPUSEC =3D (JPI_CPUTIM - (CPUHRS * 360000) - (CPUMIN * 6000)) /100 $ CPUMILL =3D (JPI_CPUTIM - (CPUHRS * 360000) - (CPUMIN * 6000) - - (CPUSEC * 100)) $ if f$length(CPUHRS) .lt. 2 then CPUHRS =3D " " + "''CPUHRS'" $ if f$length(CPUMIN) .lt. 2 then CPUMIN =3D "0" + "''CPUMIN'" $ if f$length(CPUSEC) .lt. 2 then CPUSEC =3D "0" + "''CPUSEC'" $ if f$length(CPUMILL) .lt. 2 then CPUMILL =3D "0" + "''CPUMILL'" $ JPI_CPUTIM =3D "''CPUHRS'" + ":" + "" + "''CPUMIN'" + ":" - + "''CPUSEC'" + "." + "''CPUMILL'" $ JPI_IMAGE=3D - "''f$parse(f$getjpi (pid,"imagname"),,,"NAME")'" + - "''f$parse(f$getjpi (pid,"imagname"),,,"TYPE")'" $ JPI_IMAGE =3D JPI_IMAGE - "][" - "][" - "><" - "><" $ if f$locate("<",JPI_IMAGE) .ne. f$length(JPI_IMAGE) $ then $ JPI_IMAGE =3D f$extract(0,f$locate("<",JPI_IMAGE),JPI_IMAGE) + "[" + - f$extract(f$locate("<",JPI_IMAGE)+1,f $length(JPI_IMAGE),JPI_IMAGE) $ endif $ if f$locate(">",JPI_IMAGE) .ne. f$length(JPI_IMAGE) $ then $ JPI_IMAGE =3D f$extract(0,f$locate(">",JPI_IMAGE),JPI_IMAGE) + "]" + - f$extract(f$locate(">",JPI_IMAGE)+1,f $length(JPI_IMAGE),JPI_IMAGE) $ endif $ JPI_IMAGE =3D JPI_IMAGE - "][" - "][" - "><" - "><" $ if jpi_imagname .eqs. "" then jpi_image =3D "---idle---" $ if ((isIDLE) .and. (JPI_IMAGE .nes. "---idle---")) then goto skipit $ if ((isNOTIDLE) .and. (JPI_IMAGE .eqs. "---idle---")) then goto skipit $ if (image .nes. "") $ then $ if (isNOTDEFAULT) $ then $ if F$LOCATE(image,JPI_IMAGNAME) .ne. - F$LENGTH(JPI_IMAGNAME) then goto skipit $ else $ if F$LOCATE(image,JPI_IMAGNAME) .eq. - F$LENGTH(JPI_IMAGNAME) then goto skipit $ endif $ endif $ NODE_USER_PROC =3D F$FAO("!(#AS) !(#AS) !(#AS)",6,JPI_NODENAME, - 12,JPI_USERNAME,15,JPI_PRCNAM) $! $ if JPI_JOBTYPE .eqs. "0" then JPI_JOBTYPE =3D "DETACHED" $ if JPI_JOBTYPE .eqs. "1" then JPI_JOBTYPE =3D "NETWORK" $ if JPI_JOBTYPE .eqs. "2" then JPI_JOBTYPE =3D "BATCH" $ if JPI_JOBTYPE .eqs. "3" then JPI_JOBTYPE =3D "LOCAL" $ if JPI_JOBTYPE .eqs. "4" then JPI_JOBTYPE =3D "DIALUP" $ if JPI_JOBTYPE .eqs. "5" then JPI_JOBTYPE =3D "REMOTE" $! $ if (.not. display_symbols) .and. continuous_display then goto showit $! $! additional variables which can be checked if requested $ if display_symbols $ then $ JPI_ACCOUNT=3Df$getjpi(pid,"ACCOUNT") $ JPI_APTCNT=3Df$getjpi(pid,"APTCNT") $ JPI_ASTACT=3Df$getjpi(pid,"ASTACT") $ JPI_ASTCNT=3Df$getjpi(pid,"ASTCNT") $ JPI_ASTEN=3Df$getjpi(pid,"ASTEN") $ JPI_ASTLM=3Df$getjpi(pid,"ASTLM") $ JPI_AUTHPRI=3Df$getjpi(pid,"AUTHPRI") $ JPI_AUTHPRIV=3Df$getjpi(pid,"AUTHPRIV") $ JPI_BIOCNT=3Df$getjpi(pid,"BIOCNT") $ JPI_BIOLM=3Df$getjpi(pid,"BIOLM") $ JPI_BYTCNT=3Df$getjpi(pid,"BYTCNT") $ JPI_BYTLM=3Df$getjpi(pid,"BYTLM") $ JPI_CLINAME=3Df$getjpi(pid,"CLINAME") $ JPI_CPULIM=3Df$getjpi(pid,"CPULIM") $ JPI_CURPRIV=3Df$getjpi(pid,"CURPRIV") $ JPI_DFPFC=3Df$getjpi(pid,"DFPFC") $ JPI_DFWSCNT=3Df$getjpi(pid,"DFWSCNT") $ JPI_DIOCNT=3Df$getjpi(pid,"DIOCNT") $ JPI_DIOLM=3Df$getjpi(pid,"DIOLM") $ JPI_EFCS=3Df$getjpi(pid,"EFCS") $ JPI_EFCU=3Df$getjpi(pid,"EFCU") $ JPI_EFWM=3Df$getjpi(pid,"EFWM") $ JPI_ENQCNT=3Df$getjpi(pid,"ENQCNT") $ JPI_ENQLM=3Df$getjpi(pid,"ENQLM") $ JPI_FILCNT=3Df$getjpi(pid,"FILCNT") $ JPI_FILLM=3Df$getjpi(pid,"FILLM") $ JPI_FREP0VA=3Df$getjpi(pid,"FREP0VA") $ JPI_FREP1VA=3Df$getjpi(pid,"FREP1VA") $ JPI_FREPTECNT=3Df$getjpi(pid,"FREPTECNT") $ JPI_GPGCNT=3Df$getjpi(pid,"GPGCNT") $ JPI_GRP=3Df$getjpi(pid,"GRP") $ JPI_IMAGECOUNT=3Df$getjpi(pid,"IMAGECOUNT") $ JPI_IMAGPRIV=3Df$getjpi(pid,"IMAGPRIV") $ JPI_JOBPRCCNT=3Df$getjpi(pid,"JOBPRCCNT") $ JPI_LAST_LOGIN_I=3Df$getjpi(pid,"LAST_LOGIN_I") $ JPI_LAST_LOGIN_N=3Df$getjpi(pid,"LAST_LOGIN_N") $ JPI_LOGIN_FAILURES=3Df$getjpi(pid,"LOGIN_FAILURES") $ JPI_LOGIN_FLAGS=3Df$getjpi(pid,"LOGIN_FLAGS") $ JPI_LOGINTIM=3Df$getjpi(pid,"LOGINTIM") $ JPI_MASTER_PID=3Df$getjpi(pid,"MASTER_PID") $ JPI_MAXDETACH=3Df$getjpi(pid,"MAXDETACH") $ JPI_MAXJOBS=3Df$getjpi(pid,"MAXJOBS") $ JPI_MEM=3Df$getjpi(pid,"MEM") $ JPI_MODE=3Df$getjpi(pid,"MODE") $ JPI_MSGMASK=3Df$getjpi(pid,"MSGMASK") $ JPI_NODE_CSID=3Df$edit(f$getjpi(pid,"NODE_CSID"),"TRIM") $ JPI_NODE_VERSION=3Df$edit(f$getjpi(pid,"NODE_VERSION"),"TRIM") $ JPI_OWNER=3Df$edit(f$getjpi(pid,"OWNER"),"TRIM") $ JPI_PAGFILCNT=3Df$getjpi(pid,"PAGFILCNT") $ JPI_PAGFILLOC=3Df$getjpi(pid,"PAGFILLOC") $ JPI_PGFLQUOTA=3Df$getjpi(pid,"PGFLQUOTA") $ JPI_PHDFLAGS=3Df$getjpi(pid,"PHDFLAGS") $ JPI_PPGCNT=3Df$getjpi(pid,"PPGCNT") $ JPI_PRCCNT=3Df$getjpi(pid,"PRCCNT") $ JPI_PRCLM=3Df$getjpi(pid,"PRCLM") $ JPI_PRIB=3Df$getjpi(pid,"PRIB") $ JPI_PROC_INDEX=3Df$getjpi(pid,"PROC_INDEX") $ JPI_PROCPRIV=3Df$getjpi(pid,"PROCPRIV") $ JPI_SHRFILLM=3Df$getjpi(pid,"SHRFILLM") $ JPI_SITESPEC=3Df$getjpi(pid,"SITESPEC") $ JPI_STS=3Df$getjpi(pid,"STS") $ JPI_STS2=3Df$getjpi(pid,"STS2") $ JPI_SWPFILLOC=3Df$getjpi(pid,"SWPFILLOC") $ JPI_TABLENAME=3Df$getjpi(pid,"TABLENAME") $ JPI_TERMINAL=3Df$getjpi(pid,"TERMINAL") $ JPI_TMBU=3Df$getjpi(pid,"TMBU") $ JPI_TQCNT=3Df$getjpi(pid,"TQCNT") $ JPI_TQLM=3Df$getjpi(pid,"TQLM") $ JPI_TT_ACCPORNAM=3Df$getjpi(pid,"TT_ACCPORNAM") $ JPI_TT_PHYDEVNAM=3Df$getjpi(pid,"TT_PHYDEVNAM") $ JPI_UAF_FLAGS=3Df$getjpi(pid,"UAF_FLAGS") $ JPI_UIC=3Df$getjpi(pid,"UIC") $ JPI_VIRTPEAK=3Df$getjpi(pid,"VIRTPEAK") $ JPI_VOLUMES=3Df$getjpi(pid,"VOLUMES") $ JPI_WSAUTH=3Df$getjpi(pid,"WSAUTH") $ JPI_WSAUTHEXT=3Df$getjpi(pid,"WSAUTHEXT") $ JPI_WSEXTENT=3Df$getjpi(pid,"WSEXTENT") $ JPI_WSPEAK=3Df$getjpi(pid,"WSPEAK") $ JPI_WSQUOTA=3Df$getjpi(pid,"WSQUOTA") $ JPI_WSSIZE=3Df$getjpi(pid,"WSSIZE") $! $! these variables performed last, since they are most likely to fail $ JPI_SYSTEM_RIGHTS=3Df$getjpi(pid,"SYSTEM_RIGHTS") $ JPI_PROCESS_RIGHTS=3Df$getjpi(pid,"PROCESS_RIGHTS") $ JPI_RIGHTSLIST=3Df$getjpi(pid,"RIGHTSLIST") $! $ endif !***if (display_symbols)*** $! $ if check_quotas $ then $ if JPI_PRCNAM .eqs. "SWAPPER" then goto skipit $ if check_item .eqs. "PGFLQUOTA" $ then $ if JPI_VIRTPEAK * 100 .lt. JPI_PGFLQUOTA * (100-percent) $ then $ goto skipit $ elseif $ goto showit $ endif $ endif $ if check_item .eqs. "PRC" $ then $ if ((JPI_JOBPRCCNT * 100) .lt. (JPI_PRCLM * (100- percent))) .and. - ((JPI_PRCCNT * 100) .lt. (JPI_PRCLM * (100-percent))) $ then $ goto skipit $ elseif $ goto showit $ endif $ endif $ if JPI_'check_item'CNT*100 .gt. JPI_'check_item'CNT*percent then goto SKIPIT $ endif $! $ goto showit $ param_err: $ say "''Blink' Error! during a context variable scan of process" + - " ''jpi_prcnam' on node ''jpi_nodename' ''Norm'" $ on error then goto abortit $! $ showit: $ linecount =3D linecount + symbolcnt + 1 $ PSCOUNT =3D PSCOUNT + 1 $! $! check whether the bottom of screen has been reached $ if ((LINECOUNT + HEADER + FOOTER) .gt. current_term_height) .or. - page_display $ then $ TOP =3D NEXTLINE $ if continuous_display .and. (current_term_height .ge. max_linecount) - then page_display =3D TRUE $ endif $! $ if ((LINECOUNT + HEADER + FOOTER) .ge. current_term_height) $ then $ if continuous_display $ then $ if page_display $ then $ READ /TIME_OUT=3D3/ERROR=3Daskend sys$command askanswer /PROMPT= =3D - "''ESline'''CURSOROFF'''INVERSE'Pausing 00:00:03.00''INVERSEOFF'''ONEUP'" $ READ sys$command askanswer /PROMPT=3D - "''NEXTLINE'''ESline'''INVERSE'Waiting for a ''INVERSEOFF'''ONEUP'" $ askend: $ write sys$output ESline,CURSORON,"Continuing=3D=3D>" $ linecount =3D 0 $ display_head_only =3D TRUE $ else $ if (current_term_height .lt. max_linecount) $ then $ current_term_height =3D LINECOUNT + JUMP $ if f$mode() .nes. "BATCH" then - SET TERM /PAGE=3D'current_term_height' $ endif $ endif $ else $ if page_display $ then $ if f$mode() .nes. "BATCH" then read - /prompt=3D"''BOLD'Press ENTER to continue''NORM'" sys$command noop $ display_head_only =3D TRUE $ linecount =3D 0 $ endif $ endif $ endif $! $! Check if there will be a process context variable dump $ if display_symbols $ then $ if linecount .eq. 0 then display_head_only =3D TRUE $ if (.not. continuous_display) then display_head_only =3D TRUE $ endif $! $! output extra header if requested $ if display_head_only $ then $ gosub displayheader $ endif $! $ if display_symbols $ then $ write sys$output ESline, - "---------------------------------------" + - "---------------------------------------" $ linecount =3D linecount + 1 $ endif $! $ !output detail lines $ if TERM_WIDTH .ge. 132 $ then $ write sys$output ESline, - F$FAO("!(#AS) !(#AS) !(#AS) !(#AS)", - 35,node_user_proc,8,jpi_pid, - 8,jpi_jobtype,5,jpi_state), - F$FAO(" !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)", - 2,jpi_pri,12,jpi_cputim,9,jpi_allio,8,jpi_pageflts,30,jpi_image) $ else $ if continuous_display $ then $ write sys$output ESline, - F$FAO("!(#AS) !(#AS) !(#AS)!(#AS)!(#AS)!(#AS)!(#AS)", - 22,node_proc,2,jpi_pri,5,jpi_state, - 12,jpi_cputim,9,jpi_allio,8,jpi_pageflts,20,jpi_image) $ else $ write sys$output ESline, - F$FAO("!(#AS) !(#AS) !(#AS) !(#AS) !(#AS)", - 35,node_user_proc,8,jpi_pid, - 8,jpi_jobtype,5,jpi_state,20,jpi_image) $ endif $ endif $! $ if P7 .nes. "" $ then $ if P7 .eqs. "ALL" $ then $ show symbol JPI_* $ else $ show symbol JPI_'P7' $ endif $ endif $! $ if P8 .nes. "" $ then $ if P8 .eqs. "ALL" $ then $ show symbol JPI_* $ else $ show symbol JPI_'P8' $ endif $ endif $! $ if check_quotas $ then $ if check_item .eqs. "PRC" $ then $ show symbol JPI_PRCCNT $ show symbol JPI_JOBPRCCNT $ show symbol JPI_PRCLM $ goto ifcheck2 $ endif $ if check_item .eqs. "PGFLQUOTA" $ then $ show symbol JPI_PGFLQUOTA $ show symbol JPI_VIRTPEAK $ goto ifcheck2 $ endif $ show symbol JPI_'check_item'CNT $ show symbol JPI_'check_item'LM $ endif $ ifcheck2: $! $ if first_display then goto endit $! $ SKIPIT: $ pid =3D f$pid(proc_context) $ if pid .eqs. "" then goto endit $ goto context_loop $! $! $ ENDIT: $ if f$type(proc_context) .eqs. "PROCESS_CONTEXT" then - pid =3D f$context("process",proc_context,"cancel") $! $ proc =3D f$parse(f$environment("procedure"),,,"name",) $ if display_symbols $ then $ write sys$output ESline, - "---------------------------------------" + - "---------------------------------------" $ linecount =3D linecount + 1 $ endif $ if wait_display $ then $ write sys$output ESline,CURSOROFF, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down_count, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME()), - 33,"''BOLD' WaitDelta:''NORM' ''wait_time'"),EStoEND,ONEUP $ else $ if continuous_display $ then $ write sys$output ESline,CURSOROFF, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down_count, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())),EStoEND $ else $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())) $ endif $ endif $ if (current_term_height - jump .ge. TERM_HEIGHT ) .and. - (current_term_height - jump_buffer .ge. PSCOUNT) .and. - continuous_display .and. (.not. display_symbols) $ then $ current_term_height =3D current_term_height - jump $ if f$mode() .nes. "BATCH" then SET TERM / PAGE=3D'current_term_height' $ endif $ PS_COUNT =3D=3D PSCOUNT $ if PS_COUNT .gt. 0 $ then $ PS_PID =3D=3D JPI_PID $ PS_PRCNAM =3D=3D JPI_PRCNAM $ PS_USER =3D=3D JPI_USERNAME $ PS_NODE =3D=3D JPI_NODENAME $ PS_JOB =3D=3D JPI_JOBTYPE $ PS_IMAGE =3D=3D JPI_IMAGNAME $ if PS_IMAGE .eqs. "" then PS_IMAGE =3D=3D "IDLE" $ PS_STATE =3D=3D JPI_STATE $ PS_PRI =3D=3D JPI_PRI $ PS_CPUTIM =3D=3D JPI_CPUTIM $ PS_TIME =3D=3D JPI_TIME $ PS_ALLIO =3D=3D JPI_ALLIO $ PS_PAGEFLTS =3D=3D JPI_PAGEFLTS $ if (check_quotas .OR. display_symbols) $ then $ PS_PGFLQUOTA =3D=3D JPI_PGFLQUOTA $ PS_VIRTPEAK =3D=3D JPI_VIRTPEAK $ endif $ endif $! $ if (.NOT. reloop_OK) then goto abortit $ if (first_display) .AND. (PSCOUNT .GE. 1) then goto abortit $ PSCOUNT =3D 0 $ LINECOUNT =3D 0 $ if wait_display then wait 'wait_time' $ if continuous_display .AND. (.NOT. first_display) then goto startit $! $ if display_symbols .and. page_display $ then $ read/prompt=3D"''BOLD'Press ENTER to continue:''NORM'" sys$command noop $ write sys$output ESline,"[procedure ''proc' completed]" $ endif $ if f$mode() .nes. "BATCH" then SET TERM/PAGE=3D'TERM_HEIGHT' $ TEMP =3D F$VERIFY(PROC_VER, IMAGE_VER) $ if quiet_display .eq. 1 then ASSIGN/SUPERVISOR_MODE TT: SYS$OUTPUT $ exit $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ NOTFOUND: $ PS_COUNT =3D=3D PSCOUNT $ if f$type(proc_context) .eqs. "PROCESS_CONTEXT" then - pid =3D f$context("process",proc_context,"cancel") $! $ proc =3D f$parse(f$environment("procedure"),,,"name",) $ gosub displayheader $ write sys$output ESline, - "Could not find a process matching your specification!" $ SAY EStoEND,ONEUP $ if wait_display $ then $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down_count, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME()), - 33,"''BOLD' WaitDelta:''NORM' ''wait_time'") $ wait 'wait_time' $ else $ if continuous_display $ then $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down_count, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())) $ else $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())) $ endif $ endif $ if (.NOT. reloop_OK) then goto abortit $ if continuous_display then goto startit $ TEMP =3D F$VERIFY(PROC_VER, IMAGE_VER) $ if quiet_display .eq. 1 then ASSIGN/SUPERVISOR_MODE TT: SYS$OUTPUT $ exit $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ PERCENTERR: $ errmsg =3D "%PS-E-PRCNT, Error! - Percent value not within 0 to 100 range!" $ goto abortit $! $ ABORT_C: $ C_ABORT =3D TRUE $ ABORTIT: $ PS_COUNT =3D=3D 0 - PSCOUNT $! $ if f$type(proc_context) .eqs. "PROCESS_CONTEXT" then - pid =3D f$context("process",proc_context,"cancel") $! $ if continuous_display then SAY EStoEND $ proc =3D f$parse(f$environment("procedure"),,,"name",) $ if quiet_display .eq. 1 then ASSIGN/SUPERVISOR_MODE TT: SYS$OUTPUT $ if C_ABORT $ then $ write sys$output ESline,"Procedure ''proc' Aborted.",CURSORON $ else $ write sys$output ESline,"Procedure ''proc' Finished.",CURSORON $ endif $ quitit: $ if f$mode() .nes. "BATCH" then SET TERM/PAGE=3D'TERM_HEIGHT' $ if errmsg .nes. "" then say errmsg $ TEMP =3D F$VERIFY(PROC_VER, IMAGE_VER) $ exit $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ PARAMCOUNT: $ index =3D 0 $ PARAM =3D "." + PARAM - "*" - "*" $ searchloop1: $ JPIELEMENT =3D "." + f$element(index,",",JPILIST1) $ if JPIELEMENT .eqs. ".," then goto endsearch1 $ if f$locate(PARAM,JPIELEMENT) .ne. f$length(JPIELEMENT) then - symbolcnt =3D symbolcnt + 1 $ index=3D index + 1 $ goto searchloop1 $ endsearch1: $ index =3D 0 $ searchloop2: $ JPIELEMENT =3D "." + f$element(index,",",JPILIST2) $ if JPIELEMENT .eqs. ".," then goto endsearch2 $ if f$locate(PARAM,JPIELEMENT) .ne. f$length(JPIELEMENT) then - symbolcnt =3D symbolcnt + 1 $ index=3D index + 1 $ goto searchloop2 $ endsearch2: $ RETURN $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ DISPLAYHEADER: $!output header for default display $ if continuous_display $ then $ if TERM_WIDTH .lt. 132 $ then $ if (.not. display_head_only) then write sys$output TOP,ESline,CURSORON, - BOLD,BLINK,"Scanning:",NORM,F$FAO(" !(#AS)",70,LINE_PARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS) ! (#AS)''NORM'", - 6,"Node",14,"ProcessName",3,"Pri",5,"State",10,"CPUTime", - 16,"I/O PgFlts ",20,"Image") $ else $ if (.not. display_head_only) then write sys$output TOP,ESline,CURSORON, - BOLD,BLINK,"Scanning:",NORM,F$FAO(" !(#AS)",122,LINE_PARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)''NORM'", - 6,"Node",12,"Username",15,"ProcessName",8,"Pid",8,"Jobtype", 5,"State"), - F$FAO("''BOLD' !(#AS) !(#AS) !(#AS) !(#AS)''NORM'", - 3,"Pri",10,"CPUTime",18,"I/O PgFlts ",30,"Image") $ endif $! if display_head_only then linecount =3D linecount + 1 $ else $ if (.not. display_symbols) .or. (linecount .le. 1) $ then $ if TERM_WIDTH .lt. 132 $ then $ if (.not. display_head_only) then write sys$output TOP,ESline, - BOLD,INVERSE,"Scan:",NORM,F$FAO(" !(#AS)",70,LINE_PARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS) ! (#AS)''NORM'", - 6,"Node",12,"Username",15,"ProcessName",8,"Pid",8,"Jobtype", 5,"State", - 5,"Image") $ else $ if (.not. display_head_only) then write sys$output TOP,ESline, - BOLD,INVERSE,"Scan:",NORM,F$FAO(" !(#AS)",122,LINE_PARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)''NORM'", - 6,"Node",12,"Username",15,"ProcessName",8,"Pid",8,"Jobtype", 5,"State"), - F$FAO("''BOLD' !(#AS) !(#AS) !(#AS) !(#AS) ''NORM'", - 3,"Pri",10,"CPUTime",18,"I/O PgFlts ",30,"Image") $ endif $! if display_head_only then linecount =3D linecount + 1 $ endif $ endif $ display_head_only =3D FALSE $ RETURN $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ------------------------------ Date: Mon, 15 Oct 2007 09:26:49 -0700 From: IanMiller Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: <1192465609.185490.270730@e9g2000prf.googlegroups.com> If you contact Aaron he may be able to fix the problem with the truncated post http://dcl.openvms.org/contact_aaron ------------------------------ Date: Mon, 15 Oct 2007 16:32:39 GMT From: =?ISO-8859-1?Q?Jan-Erik_S=F6derholm?= Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: IanMiller wrote: > If you contact Aaron he may be able to fix the problem with the > truncated post > > http://dcl.openvms.org/contact_aaron > > > Note also that the last copy sent (with DCL inline) was line-breaked. Either make sure your lines are "mailabel" och ZIP it up and post it someware. I've put a "cleaned" and ZIP'ed copy here : http://www.jescab.se/upload/process_scan.zip Jan-Erik. ------------------------------ Date: Mon, 15 Oct 2007 12:31:44 -0400 From: "Ken Robinson" Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: <7dd80f60710150931w126dec50s7b5e75ab4340ddaf@mail.gmail.com> On 10/15/07, Keith Cayemberg wrote: > Here one more try... > > > $ proc_ver = F$ENVIRONMENT("VERIFY_PROCEDURE") [BIG SNIP] It would have been much better to find a site to put this and let people download it a their own pace. When you included it here, many lines wrapped. Ken ------------------------------ Date: Mon, 15 Oct 2007 18:59:26 +0200 From: Joseph Huber Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: Jan-Erik S=F6derholm schrieb: >=20 > I've put a "cleaned" and ZIP'ed copy here : > http://www.jescab.se/upload/process_scan.zip >=20 Well, still some line wrapped , edited in parallel and tested: http://wwwvms.mppmu.mpg.de/util_root/com/process-scan.com Keith, do You mind I keep it there ? --=20 Joseph Huber - http://www.huber-joseph.de ------------------------------ Date: Mon, 15 Oct 2007 17:03:53 GMT From: =?ISO-8859-1?Q?Jan-Erik_S=F6derholm?= Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: Joseph Huber wrote: > Jan-Erik Söderholm schrieb: >> >> I've put a "cleaned" and ZIP'ed copy here : >> http://www.jescab.se/upload/process_scan.zip >> > > Well, still some line wrapped , > edited in parallel and tested: > > http://wwwvms.mppmu.mpg.de/util_root/com/process-scan.com > > Keith, do You mind I keep it there ? > -ERROR-(404): no such file or directory ------------------------------ Date: Mon, 15 Oct 2007 17:08:43 GMT From: =?ISO-8859-1?Q?Jan-Erik_S=F6derholm?= Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: Joseph Huber wrote: > Jan-Erik Söderholm schrieb: >> >> I've put a "cleaned" and ZIP'ed copy here : >> http://www.jescab.se/upload/process_scan.zip >> > > Well, still some line wrapped , Are you talking about the file in my ZIP archive ? I just checked it again and I can't (by reading it) find *any* wrapped line/lines. Never mind, use it if you want... Jan-Erik. ------------------------------ Date: Mon, 15 Oct 2007 19:23:04 +0200 From: Joseph Huber Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: Jan-Erik S=F6derholm schrieb: > Joseph Huber wrote: >> Jan-Erik S=F6derholm schrieb: >>> >>> I've put a "cleaned" and ZIP'ed copy here : >>> http://www.jescab.se/upload/process_scan.zip >>> >> >> Well, still some line wrapped , >=20 > Are you talking about the file in my ZIP archive ? > I just checked it again and I can't (by reading it) > find *any* wrapped line/lines. >=20 by reading: easily overlooked., f executed, it chokes immediately. And the URL in my answer: a typo process-scan instead of process_scan :-(= http://wwwvms.mppmu.mpg.de/util_root/com/process_scan.com --=20 Joseph Huber - http://www.huber-joseph.de ------------------------------ Date: Mon, 15 Oct 2007 13:21:08 -0400 From: norm.raphael@metso.com Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: This is a multipart message in MIME format. --=_alternative 005F51D285257375_= Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Unfortunately the e-mail here wrapped at less than 80 bytes/line, but even after fixing that up: > $ if f$type(percent) .ne. "INTEGER" then goto percenterr s/b $ if f$type(percent) .nes. "INTEGER" then goto percenterr and there are 2 instances of=20 > $ elseif What are they supposed to be? Keith Cayemberg =20 10/15/2007 11:59 AM To Info-VAX@Mvb.Saic.Com cc Subject Re: PROCESS=5FSCAN.COM (or an example of what DCL can do) Here one more try... $ proc=5Fver =3D F$ENVIRONMENT("VERIFY=5FPROCEDURE") $ image=5Fver =3D F$ENVIRONMENT("VERIFY=5FIMAGE") $! set noverify $ goto INFOEND $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ info: $ ERASE $ Type Sys$Input PROCEDURE: PROCESS=5FSCAN.COM AUTHOR: Keith Cayemberg DATE: original version written sometime in the mid 1980's DESCRIPTION: This procedure provides a means to scan the JPI process context variables of other user's processes on the same node or cluster. Depending on the identity of the other processes, you will need the GROUP or WORLD privilege to see the other user's context. Global Symbols with the key attributes of the last process found are created for use in DCL command procedures. PROCESS=5FSCAN accepts selection criteria as either "positional parameters", whereby meaning is determined by its sequence P1 to P6 on the command line, or as "named parameters" inwhich the meaning and an operator are given explicitly. Positional and Named Parameters can be mixed, but the Named parameters mask their corresponding parameter position as unused. A Positional and Named parameter cannot use the same Process Context Variable as a selection criteria. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Positional Parameters: P U N J I S P1 =3D Processname find only processes with this process name or PID number or list of process names (use * in name as a wildcard) ALL, *, "" processes with any process name (default) "=3D", . processes having the same first 2 chars in Processname <> processes not having the same first 2 chars in Processname ? displays this help documentation. P2 =3D Username only processes owned by this user or list of users (use * only at end of name as a wildcard for matches) ALL, *, "" processes belonging to any user (default) =3D, . processes belonging to the current user <> processes not belonging to the current user P3 =3D Nodename only processes on the indicated node or node list (use * in name as a wildcard for matches) "", =3D, . processes only on current node (default) <> only processes not on current node * processes on any node in current cluster $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Positional Parameters: (continued) P U N J I S P4 =3D Jobtype only processes with the specified job type Keywords: DETACHED (or 0), NETWORK (or 1), BATCH (or 2), LOCAL (or 3), DIALUP (or 4), REMOTE (or 5) *, "" matches all jobtypes =3D, . processes with JOBTYPE =3D DETACHED <> processes with JOBTYPE <> DETACHED P5 =3D Imagename only processes running this image (name always used as wildcard match to full path/ filename) IDLE only idle processes at DCL level BUSY only processes running an image *, "" processes running any image or idle =3D, . processes running image in current default directory <> processes running image not in current default directory P6 =3D State only processes having this state will match *, "" matches all states =3D, . processes with STATE =3D HIB <> processes with STATE <> HIB $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Positional Parameters: (continued) P U N J I S P7, P8 =3D Process Context Variables to be displayed (see list). Use "*" as a wildcard (or "ALL") to indicate all variables are to be displayed. If none of these parameters are entered, then no variables are displayed. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Qualifiers affecting scan behavior: /CONTINUE This qualifier (P2 to P8) causes continuous scanning /CONT=3D until stopped with a Control-C. The DSTOP variant will /CONT=3D00:00:05 stop scanning after first finding at least one process /DSTOP with the selection criteria, and then finding none. /DSTOP=3D The default pause time between updates is 3 seconds. /DSTOP=3D::1 A "=3D" without a time value will set a time of 0 seconds. /BELL After finding at least one process in a continuous display, this qualifier (P2 to P8) causes a warning bell to ring 4 times if no process is found, and 2 times if found again. /FIRST This qualifier (P2 to P8) stops with the first process matching the search criteria. /PAGE This qualifier (P2 to P8) causes the output to be paged. /QUIET This qualifier (P2 to P8) disables output. This qualifier also turns continuous display mode off. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Named Parameters: This format can be used in place of any parameter P1 to P8 PARAMETER-FORMAT MEANING item=3Dvalue equals item>value greater than item=3Dvalue greater than or equal to item<=3Dvalue less than or equal to item<>value not equal to item>=3D value. The PRCLM quota checks whether JOBPRCCNT or PRCCNT is a >=3D value. All other "LM" quotas check if the corresponding "CNT" quota equals zero by default. With the PERCENT=3Dnn Qualifier, the processes which have <=3D this percentage (0 to 100%) of the specified resource available are selected. $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Process Context Variables: ACCOUNT account name of the process DIOLM direct I/O quota limit APTCNT active page table count DIRIO direct I/O operations ASTACT access modes with active ASTs EFCS LEF state, flags 0-31 ASTCNT remaining AST quota EFCU LEF state, flags 32-63 ASTEN access modes with ASTs enabled EFWM event flag wait mask ASTLM AST limit quota ENQCNT remaining lock req. quota AUTHPRI authorized base priority ENQLM lock request quota AUTHPRIV authorized priviledges FILCNT remaining open file quota BIOCNT remaining buffered I/O quota FILLM open file limit quota BIOLM buffered I/O limit quota FREP0VA 1st free page address (P0) BUFIO buffered I/O operations FREP1VA 1st free page address (P1) BYTCNT remaining buff. I/O byte count FREPTECNT # of free pages for VM exp. BYTLM buffered I/O byte limit quota GPGCNT global page count in WS CLINAME command language interpreter GRP group number from UIC CPULIM CPU time limit IMAGE active image file name CPUTIM accumulated CPU Time IMAGECOUNT # of images run by process CURPRIV current priviledges IMAGNAME dir. & image file name DFPFC def. page fault cluster size IMAGPRIV installed image priviledges DFWSCNT def. working set cluster size JOBPRCCNT # of subprocesses this job DIOCNT remaining direct I/O quota JOBTYPE execution mode of root proc $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Process Context Variables:(continued) LAST=5FLOGIN=5FI last interactive login PID process ID number LAST=5FLOGIN=5FN last noninter. login PPGCNT # pages in WS LOGIN=5FFAILURES # of login failures PRCCNT # subprocs of this proc LOGIN=5FFLAGS login seq. LOGINOUT flgs PRCLM job subprocess quota LOGINTIM login time PRCNAM process name MASTER=5FPID master process ID # PRI current priority MAXDETACH max # detached processes PRIB base priority MAXJOBS max # active processes PROC=5FINDEX process index number MEM member number from UIC PROCESS=5FRIGHTS process rights MODE process mode PROCPRIV default priviledges MSGMASK default message mask RIGHTSLIST avail proc & sys rights NODE=5FCSID VAXcluster node ID # SHRFILLM max # open shared files NODE=5FVERSION VMS version number SITESPEC per-process site-spec # NODENAME Vaxcluster node name STATE current process state OWNER PID of creator process STS current status flags 1 PAGEFLTS total # of page faults STS2 current status flags 2 PAGFILCNT remain. page file quota SWPFILLOC swap file location PAGFILLOC current page file assign SYSTEM=5FRIGHTS system rights PGFLQUOTA paging file quota TABLENAME file spec of CLI PHDFLAGS process header flags $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Process Context Variables:(continued) TERMINAL login terminal name (virtual terminal if enabled) TMBU termination mailbox unit number TQCNT remaining timer queue entry quota TQLM process's limit on timer queue entries TT=5FACCPORNAM access port name - (termserver/port) or (src.node/usr- name) TT=5FPHYDEVNAM physical terminal name - if 0 then virt. term. is disconnected UAF=5FFLAGS UAF flags from user/owner of process UIC user identification code USERNAME user name of process's owner VIRTPEAK virtual peak address size of process VOLUMES number of volumes currently mounted by process WSAUTH maximum authorized working set size WSAUTHEXT maximum authorized working set extent WSEXTENT current working set extent WSPEAK peak working set size WSQUOTA working set size quota WSSIZE current working set size ALLIO Direct IO + Bufferred IO (this is used for I/O Heading values) $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Global Symbols: The following global symbols are updated at completion of the process scan giving the job/process information of the last process found matching the selection criteria. The /FIRST switch can be used to assign the attributes of the first process which is found to the symbols. PS=5FCOUNT The number of processes matching the search criteria. If PS is aborted, then the count is given as a negative value. PS=5FALLIO ALL I/O in pagelets (both direct and buffered) PS=5FCPUTIM accumulated CPU TIMe PS=5FIMAGE full IMAGE filename or "IDLE" PS=5FJOB JOB type PS=5FNODE NODE name on which the process exists PS=5FPAGEFLTS total number of PAGEFauLTS PS=5FPID Process IDentification number (cluster unique) PS=5FPRCNAM PRoCess NAMe (node unique) PS=5FPRI current process PRIority PS=5FSTATE process STATE PS=5FUSER USERname $ READ /PROMPT=3D"Press Enter to continue:" sys$command noop $ ERASE $ Type Sys$Input Examples: $ @PROCESS=5FSCAN CS*,LA* STATE<>HIB /CONT This example gives continuous information about non-HIBernating processes having a process name beginning with 'CS' or 'LA' for the local node only. Screen updates occur every 3 seconds. $ @PROCESS=5FSCAN "" LAGOSMAN * BATCH "" HIB *WS* This example scans the entire cluster for processes in batch mode with the username LAGOSMAN and displays all working storage values for each process in the HIBernate state. $ @PROCESS=5FSCAN * LAG* CH07 3 LAGOS.EXE * PGFLQUOTA VIRT* This example scans the Page File Quota and Virtual Peak values for all LOCAL processes that are on node CH07, having a username starting with 'LAG', and running LAGOS.EXE $ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER) $ exit $ INFOEND: $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ TRUE =3D 1 $ FALSE =3D 0 $! $ c=5Fabort =3D FALSE $ on error then goto abort=5Fc $ on control=5Fy then goto abort=5Fc $! $ JPILIST1 =3D - "ACCOUNT,ALLIO,APTCNT,ASTACT,ASTCNT,ASTEN,ASTLM,AUTHPRI," + - "AUTHPRIV,BIOCNT,BIOLM,BUFIO,BYTCNT,BYTLM,CLINAME,CPULIM,CPUTIM," + - =20 "CURPRIV,DFPFC,DFWSCNT,DIOCNT,DIOLM,DIRIO,EFCS,EFCU,EFWM,ENQCNT,ENQLM," + - =20 "FILCNT,FILLM,FREP0VA,FREP1VA,FREPTECNT,GPGCNT,GRP,IMAGE,IMAGECOUNT," + - "IMAGNAME,IMAGPRIV,JOBPRCCNT,JOBTYPE,LAST=5FLOGIN=5FI,LAST=5FLOGIN=5FN,"= + - "LOGIN=5FFAILURES,LOGIN=5FFLAGS,LOGINTIM,MASTER=5FPID,MAXDETACH,MAXJOBS," + - "MEM,MODE,MSGMASK,NODE=5FCSID,NODE=5FVERSION,NODENAME,OWNER," $ JPILIST2 =3D - "PAGEFLTS,PAGFILCNT,PAGFILLOC,PGFLQUOTA,PHDFLAGS,PID,PPGCNT," + - "PRCCNT,PRCLM,PRCNAM,PRI,PRIB,PROC=5FINDEX,PROCESS=5FRIGHTS," + - "PROCPRIV,RIGHTSLIST,SHRFILLM,SITESPEC,STATE,STS,STS2," + - "SWPFILLOC,SYSTEM=5FRIGHTS,TABLENAME,TERMINAL,TIME,TMBU,TQCNT,TQLM," + - =20 "TT=5FACCPORNAM,TT=5FPHYDEVNAM,UAF=5FFLAGS,UIC,USERNAME,VIRTPEAK,VOLUMES," + - "WSAUTH,WSAUTHEXT,WSEXTENT,WSPEAK,WSQUOTA,WSSIZE" $!find current image name $ proc =3D f$parse(f$getjpi ("","imagname"),,,"NAME") $! $ SAY =3D "WRITE SYS$OUTPUT" $! $!initialize terminal screen control symbols $ ESC =3D "" $ ENQ =3D "" $ LF =3D "" $ CR =3D "" $ DCS =3D "" $ ES =3D "" $ EStoEND =3D "" $ EStoHERE =3D "" $ ESline =3D "" $ ESlinetoend =3D "" $ ESlinetohere =3D "" $ BELL =3D "" $ TOP =3D "" $ SWSH =3D "" $ DW*SH =3D "" $ DHT =3D "" $ DHB =3D "" $ NORM =3D "" $ BOLD =3D "" $ UNDER =3D "" $ BLINK =3D "" $ INVERSE =3D "" $ BOLDOFF =3D "" $ UNDEROFF =3D "" $ BLINKOFF =3D "" $ INVERSEOFF =3D "" $ ONEUP =3D "" $ NEXTLINE =3D "" $ CURSORON =3D "" $ CURSOROFF =3D "" $ ER*ASE =3D "" $ if f$mode() .eqs. "BATCH" then goto skip=5Fterm=5Fcodes $! $!define terminal screen control symbols $ ESC[0,8]=3D27 $ ENQ[0,8]=3D5 $ LF[0,8]=3D10 $ CR[0,8]=3D13 $ CSI :=3D "''ESC'[" $ DCS :=3D "''ESC'P" $ ES :=3D "''ESC'[2J" $ EStoEND :=3D "''ESC'[0J" $ EStoHERE :=3D "''ESC'[1J" $ ESline :=3D "''ESC'[2K" $ ESlinetoend :=3D "''ESC'[0K" $ ESlinetohere :=3D "''ESC'[1K" $ TOP :=3D "''ESC'[H" $ SWSH :=3D "''ESC'#5" $ DW*SH :=3D "''ESC'#6" $ DHT :=3D "''ESC'#3" $ DHB :=3D "''ESC'#4" $ NORM :=3D "''ESC'[m" $ BOLD :=3D "''ESC'[1m" $ UNDER :=3D "''ESC'[4m" $ BLINK :=3D "''ESC'[5m" $ INVERSE :=3D "''ESC'[7m" $ BOLDOFF :=3D "''ESC'[22m" $ UNDEROFF :=3D "''ESC'[24m" $ BLINKOFF :=3D "''ESC'[25m" $ INVERSEOFF :=3D "''ESC'[27m" $ ONEUP :=3D "''ESC'[1A" $ NEXTLINE :=3D "''LF'''CR'" $ CURSORON:=3D "''CSI'?25h" !shows cursor $ CURSOROFF:=3D "''CSI'?25l" !hides cursor $! $ skip=5Fterm=5Fcodes: $! $! initialize variables $ ER*ASE :=3D WRITE SYS$OUTPUT ES,TOP $ ERRMSG =3D "" $ TERM=5FDEVICE =3D f$getdvi("TT","TT=5FPHYDEVNAM") $ TERM=5FTYPE =3D f$extract(0,4,TERM=5FDEVICE) $ TERM=5FWIDTH =3D F$getdvi("TT","DEVBUFSIZ") $ TERM=5FHEIGHT =3D f$getdvi("TT","TT=5FPAGE") $ CURRENT=5FTERM=5FHEIGHT =3D TERM=5FHEIGHT $ JUMP =3D TERM=5FHEIGHT / 3 $ HEADER =3D 2 $ FOOTER =3D 1 $ JUMP=5FBUFFER =3D JUMP + (JUMP/2) + HEADER + FOOTER $ MAX=5FLINECOUNT =3D 42 $ MIN=5FLINECOUNT =3D 6 $ LINECOUNT =3D 0 $ PSCOUNT =3D 0 $ PERCENT =3D 0 $! $ PS=5FCOUNT =3D=3D 0 $ PS=5FPID =3D=3D "" $ PS=5FPRCNAM =3D=3D "" $ PS=5FUSER =3D=3D "" $ PS=5FNODE =3D=3D "" $ PS=5FJOB =3D=3D "" $ PS=5FIMAGE =3D=3D "" $ PS=5FSTATE =3D=3D "" $ PS=5FPRI =3D=3D "" $ PS=5FCPUTIM =3D=3D "" $ PS=5FALLIO =3D=3D "" $ PS=5FPAGEFLTS =3D=3D "" $ PS=5FPGFLQUOTA =3D=3D "INVALID!" $ PS=5FVIRTPEAK =3D=3D "INVALID!" $ PS=5FTIME=3D"NOT=5FFOUND" $ JPI=5FTIME=3D"NOT=5FFOUND" $! $ SYMBOLCNT =3D 0 $ DEFAULT=5FWAIT=5FTIME =3D "00:00:03.00" $ DISPLAY=5FHEAD=5FONLY =3D FALSE $ img =3D "" $! $ COMMAND=5FLINE =3D P1+"=A7"+P2+"=A7"+P3+"=A7"+P4+"=A7"+P5+"=A7"+P6+"=A7"+P7+"=A7"+P8+"=A7" $ PARSED=5FLINE =3D f$edit(COMMAND=5FLINE,"UPCASE,COLLAPSE,TRIM") $! $ P1 =3D "" $ P2 =3D "" $ P3 =3D "" $ P4 =3D "" $ P5 =3D "" $ P6 =3D "" $ P7 =3D "" $ P8 =3D "" $ P9 =3D "" $ P10 =3D "" $! $!--------------------------------------------------------- $! $ SUBSTLOOP: $ if f$locate("/",PARSED=5FLINE) .ne. f$length(PARSED=5FLINE) $ then $ PARSED=5FLINE =3D f$extract(0,f$locate("/",PARSED=5FLINE),PARSED=5FLINE= ) + "=A7" + - f$extract(f$locate("/",PARSED=5FLINE)+1,f $length(PARSED=5FLINE),PARSED=5FLINE) $ else $ goto SUBSTEND $ endif $ goto SUBSTLOOP $! $ SUBSTEND: $! $!--------------------------------------------------------- $! $ PCOUNT =3D 0 $ PARSE=5FLINE: $ PARAM =3D f$extract(0,f$locate("=A7",PARSED=5FLINE)+1,PARSED=5FLINE) $ PCOUNT =3D PCOUNT + 1 $ P'PCOUNT' =3D PARAM - "=A7" $ if PARAM .eqs. "" then PARAM =3D PARSED=5FLINE $ PARSED=5FLINE =3D PARSED=5FLINE - PARAM $ if f$length(PARSED=5FLINE) .gt. 0 then goto PARSE=5FLINE $! $!--------------------------------------------------------- $! $ if f$locate(":",P3) .eq. f$length(P3)-1 then - P3 =3D f$extract(0,f$locate(":",P3),P3) $ if f$locate(":",P3) .eq. f$length(P3)-1 then - P3 =3D f$extract(0,f$locate(":",P3),P3) $ if P3 .eqs. "0" then P3 =3D "''f$trnlnm("SYS$NODE")'" - "::" $! $ if P1 .eqs. "." then P1 =3D f$extract(0,2,f$process()) + "*" $ if P2 .eqs. "." then P2 =3D f$getjpi("","USERNAME") $ if P3 .eqs. "." then P3 =3D "''f$trnlnm("SYS$NODE")'" - "::" $ if P4 .eqs. "." then P4 =3D "JOB=3DDETACHED" $ if P6 .eqs. "." then P6 =3D "STATE=3DHIB" $! $ if P1 .eqs. "=3D" then P1 =3D f$extract(0,2,f$process()) + "*" $ if P2 .eqs. "=3D" then P2 =3D f$getjpi("","USERNAME") $ if P3 .eqs. "=3D" then P3 =3D "''f$trnlnm("SYS$NODE")'" - "::" $ if P4 .eqs. "=3D" then P4 =3D "JOB=3DDETACHED" $ if P6 .eqs. "=3D" then P6 =3D "STATE=3DHIB" $! $ if P1 .eqs. "<>" then P1 =3D "PROC<>''f$extract(0,2,f$process())'" + "*" $ if P2 .eqs. "<>" then P2 =3D "USER<>''f$getjpi("","USERNAME")'" $ if P3 .eqs. "<>" then P3 =3D "NODE<>''f$trnlnm("SYS$NODE")'" - "::" $ if P4 .eqs. "<>" then P4 =3D "JOB<>DETACHED" $ if P6 .eqs. "<>" then P6 =3D "STATE<>HIB" $! $ if (P5 .eqs. ".") .or. (P5 .eqs. "=3D") $ then $ P5 =3D f$parse(f$trnlnm("SYS$DISK"),,,,"NO=5FCONCEAL") $ P5 =3D P5 - ".;" - "][" - "][" - "><" - "><" $ if f$locate("<",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate("<",P5),P5) + "[" + - f$extract(f$locate("<",P5)+1,f$length(P5),P5) $ endif $ if f$locate(">",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate(">",P5),P5) + "]" + - f$extract(f$locate(">",P5)+1,f$length(P5),P5) $ endif $ P5 =3D P5 - "][" - "][" - "><" - "><" $ P5 =3D "IMAGE=3D''P5'" $ endif $ if P5 .eqs. "<>" $ then $ P5 =3D f$parse(f$trnlnm("SYS$DISK"),,,,"NO=5FCONCEAL") $ P5 =3D P5 - ".;" - "][" - "][" - "><" - "><" $ if f$locate("<",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate("<",P5),P5) + "[" + - f$extract(f$locate("<",P5)+1,f$length(P5),P5) $ endif $ if f$locate(">",P5) .ne. f$length(P5) $ then $ P5 =3D f$extract(0,f$locate(">",P5),P5) + "]" + - f$extract(f$locate(">",P5)+1,f$length(P5),P5) $ endif $ P5 =3D P5 - "][" - "][" - "><" - "><" $ P5 =3D "IMAGE<>''P5'" $ endif $! $! initialize qualifier flags affecting scanning behavior $ check=5Fquotas =3D FALSE ! if TRUE means CHECK parameter is being used $ display=5Fsymbols =3D FALSE ! if TRUE then JPI=5F* symbol values are displayed $ first=5Fdisplay =3D FALSE ! if TRUE means to search only for first match $ quiet=5Fdisplay =3D FALSE ! if TRUE means do not display processes found $ reloop=5FOK =3D TRUE ! if TRUE then continuous reloop thru JPI context $ continuous=5Fdisplay =3D FALSE ! if TRUE then display loops through JPI context $ wait=5Fdisplay =3D FALSE ! if TRUE then looping must pause at full screen $ down=5Fstop =3D FALSE ! if TRUE then continuous display stops when $! up/down status changes $! $!check if a continuos display and wait time is desired $ if (f$extract(0,4,P1) .eqs. "CONT") .OR. (f$extract(0,5,P1) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P1) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P1)+1,f$length(P1),P1) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P1) .ne. f$length(P1)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P1 =3D "" $ endif $ if (f$extract(0,4,P2) .eqs. "CONT") .OR. (f$extract(0,5,P2) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P2) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P2)+1,f$length(P2),P2) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P2) .ne. f$length(P2)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P2 =3D "" $ endif $ if (f$extract(0,4,P3) .eqs. "CONT") .OR. (f$extract(0,5,P3) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P3) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P3)+1,f$length(P3),P3) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P3) .ne. f$length(P3)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P3 =3D "" $ endif $ if (f$extract(0,4,P4) .eqs. "CONT") .OR. (f$extract(0,5,P4) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P4) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P4)+1,f$length(P4),P4) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P4) .ne. f$length(P4)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P4 =3D "" $ endif $ if (f$extract(0,4,P5) .eqs. "CONT") .OR. (f$extract(0,5,P5) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P5) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P5)+1,f$length(P5),P5) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P5) .ne. f$length(P5)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P5 =3D "" $ endif $ if (f$extract(0,4,P6) .eqs. "CONT") .OR. (f$extract(0,5,P6) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P6) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P6)+1,f$length(P6),P6) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P6) .ne. f$length(P6)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P6 =3D "" $ endif $ if (f$extract(0,4,P7) .eqs. "CONT") .OR. (f$extract(0,5,P7) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P7) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P7)+1,f$length(P7),P7) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P7) .ne. f$length(P7)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P7 =3D "" $ endif $ if (f$extract(0,4,P8) .eqs. "CONT") .OR. (f$extract(0,5,P8) .eqs. "DSTOP") $ then $ continuous=5Fdisplay =3D TRUE $ if (f$extract(0,5,P8) .eqs. "DSTOP") then down=5Fstop =3D TRUE $ wait=5Fdisplay =3D TRUE $ wait=5Ftime =3D f$extract(f$locate("=3D",P8)+1,f$length(P8),P8) $ if wait=5Ftime .eqs. "" $ then $ if (f$locate("=3D",P8) .ne. f$length(P8)) $ then $ wait=5Ftime =3D "00:00:00.00" $ else $ wait=5Ftime =3D default=5Fwait=5Ftime $ endif $ endif $ P8 =3D "" $ endif $ if wait=5Fdisplay $ then $ wait=5Ftime =3D f$cvtime(wait=5Ftime,"DELTA") $ if .not. $status then goto quitit $ endif $! $! $!check for explicit search qualifiers $! $!initialize variables $ OP1 =3D "" $ OP2 =3D "" $ OP3 =3D "" $ OP4 =3D "" $ OP5 =3D "" $ OP6 =3D "" $ OP7 =3D "" $ OP8 =3D "" $ OP9 =3D "" $ ITEM1 =3D "" $ ITEM2 =3D "" $ ITEM3 =3D "" $ ITEM4 =3D "" $ ITEM5 =3D "" $ ITEM6 =3D "" $ ITEM7 =3D "" $ ITEM8 =3D "" $ ITEM9 =3D "" $ VAL1 =3D "" $ VAL2 =3D "" $ VAL3 =3D "" $ VAL4 =3D "" $ VAL5 =3D "" $ VAL6 =3D "" $ VAL7 =3D "" $ VAL8 =3D "" $ VAL9 =3D "" $ Pdex =3D 0 $! $ PdexLOOP1: $ Pdex =3D Pdex + 1 $! $ if Pdex .gt. 9 then goto PdexEND1 $! $ if P'Pdex' .eqs. "CHECK" then P'Pdex' =3D "CHECK=3D" $ if P'Pdex' .eqs. "PERCENT" then P'Pdex' =3D "PERCENT=3D" $! $ if (f$locate("><",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "ANY" $ ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("<",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("<>",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "NEQ" $ ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate(">",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("<=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "LEQ" $ ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate(">=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "GEQ" $ ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("<",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "LSS" $ ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("<",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate(">",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "GTR" $ ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate(">",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("=3D=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "ALL" $ ITEM'Pdex' =3D f$extract(0,f$locate("=3D",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+2,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if (f$locate("=3D",P'Pdex') .ne. f$length(P'Pdex')) $ then $ OP'Pdex' =3D "EQL" $ ITEM'Pdex' =3D f$extract(0,f$locate("=3D",P'Pdex'),P'Pdex') $ VAL'Pdex' =3D f$extract(f$locate("=3D",P'Pdex')+1,f $length(P'Pdex'),P'Pdex') $ P'Pdex' =3D "" $ endif $! $ if ITEM'Pdex' .eqs. "CHECK" $ then $ check=5Fquotas =3D TRUE $ display=5Fsymbols =3D TRUE $ if VAL'Pdex' .eqs. "" then VAL'Pdex' =3D "PGFLQUOTA" $ check=5Fitem =3D VAL'Pdex' $ check=5Fitem =3D check=5Fitem - "LM" - "CNT" $ endif $! $ if ITEM'Pdex' .eqs. "PERCENT" $ then $ if VAL'Pdex' .eqs. "" then VAL'Pdex' =3D 0 $ percent =3D VAL'Pdex' $ if f$type(percent) .ne. "INTEGER" then goto percenterr $ if percent .gt. 100 then goto percenterr $ if percent .lt. 0 then goto percenterr $ endif $! $ if ITEM'Pdex' .eqs. "PROC" then ITEM'Pdex' =3D "PRCNAM" $ if ITEM'Pdex' .eqs. "PROCESS" then ITEM'Pdex' =3D "PRCNAM" $ if ITEM'Pdex' .eqs. "PROCNAM" then ITEM'Pdex' =3D "PRCNAM" $ if ITEM'Pdex' .eqs. "PRCNAM" then P1 =3D "*" $! $ if ITEM'Pdex' .eqs. "USER" then ITEM'Pdex' =3D "USERNAME" $ if ITEM'Pdex' .eqs. "USERNAME" then P2 =3D "*" $! $ if ITEM'Pdex' .eqs. "NODE" then ITEM'Pdex' =3D "NODENAME" $ if (ITEM'Pdex' .eqs. "NODENAME") .and. (OP'Pdex' .eqs. "EQL") $ then $ if (Pdex .ne. 3) $ then $ P3 =3D VAL'Pdex'+",''P3'" $ else $ P3 =3D VAL'Pdex' $ endif $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ else $ if ITEM'Pdex' .eqs. "NODENAME" then P3 =3D "CANCELLED" $ endif $! $ if ITEM'Pdex' .eqs. "JOB" then ITEM'Pdex' =3D "JOBTYPE" $ if ITEM'Pdex' .eqs. "JOBTYP" then ITEM'Pdex' =3D "JOBTYPE" $ if ITEM'Pdex' .eqs. "JOBTYPE" then P4 =3D "*" $! $ if ITEM'Pdex' .eqs. "STATE" then P6 =3D "*" $! $ if ITEM'Pdex' .eqs. "ACCNT" then ITEM'Pdex' =3D "ACCOUNT" $ if ITEM'Pdex' .eqs. "AUTH" then ITEM'Pdex' =3D "AUTHPRI" $ if ITEM'Pdex' .eqs. "CUR" then ITEM'Pdex' =3D "CURPRIV" $ if ITEM'Pdex' .eqs. "GROUP" then ITEM'Pdex' =3D "GRP" $ if ITEM'Pdex' .eqs. "HWMODEL" then ITEM'Pdex' =3D "HW=5FMODEL" $ if ITEM'Pdex' .eqs. "MODEL" then ITEM'Pdex' =3D "HW=5FMODEL" $ if ITEM'Pdex' .eqs. "MOD" then ITEM'Pdex' =3D "HW=5FMODEL" $ if ITEM'Pdex' .eqs. "HW" then ITEM'Pdex' =3D "HW=5FNAME" $ if ITEM'Pdex' .eqs. "HWNAME" then ITEM'Pdex' =3D "HW=5FNAME" $ if ITEM'Pdex' .eqs. "JOBCNT" then ITEM'Pdex' =3D "JOBPRCCNT" $ if ITEM'Pdex' .eqs. "MASTER" then ITEM'Pdex' =3D "MASTER=5FPID" $ if ITEM'Pdex' .eqs. "MBR" then ITEM'Pdex' =3D "MEM" $ if ITEM'Pdex' .eqs. "MEMB" then ITEM'Pdex' =3D "MEM" $ if ITEM'Pdex' .eqs. "MEMBER" then ITEM'Pdex' =3D "MEM" $ if ITEM'Pdex' .eqs. "MOD" then ITEM'Pdex' =3D "MODE" $ if ITEM'Pdex' .eqs. "CSID" then ITEM'Pdex' =3D "NODE=5FCSID" $ if ITEM'Pdex' .eqs. "OWN" then ITEM'Pdex' =3D "OWNER" $ if ITEM'Pdex' .eqs. "PROCCNT" then ITEM'Pdex' =3D "PRCCNT" $ if ITEM'Pdex' .eqs. "COUNT" then ITEM'Pdex' =3D "PRCCNT" $ if ITEM'Pdex' .eqs. "PRIO" then ITEM'Pdex' =3D "PRI" $ if ITEM'Pdex' .eqs. "PRIORITY" then ITEM'Pdex' =3D "PRI" $ if ITEM'Pdex' .eqs. "BASE" then ITEM'Pdex' =3D "PRIB" $ if ITEM'Pdex' .eqs. "STATUS" then ITEM'Pdex' =3D "STS" $ if ITEM'Pdex' .eqs. "TERM" then ITEM'Pdex' =3D "TERMINAL" $ if ITEM'Pdex' .eqs. "UIC" then ITEM'Pdex' =3D "UIC" $ if ITEM'Pdex' .eqs. "PID" $ then $ P1 =3D VAL'Pdex' $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ endif $ if ITEM'Pdex' .eqs. "IMAG" then ITEM'Pdex' =3D "IMAGE" $ if ITEM'Pdex' .eqs. "IMAGNAM" then ITEM'Pdex' =3D "IMAGE" $ if ITEM'Pdex' .eqs. "IMAGNAME" then ITEM'Pdex' =3D "IMAGE" $ if (ITEM'Pdex' .eqs. "IMAGE") $ then $ if (OP'Pdex' .nes. "NEQ") $ then $ P5 =3D "ISDEF" + VAL'Pdex' $ img =3D VAL'Pdex' $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ else $ P5 =3D "NOTDEF" + VAL'Pdex' $ img =3D VAL'Pdex' $ OP'Pdex' =3D "" $ ITEM'Pdex' =3D "" $ VAL'Pdex' =3D "" $ endif $ endif $! $ goto PdexLOOP1 $ PdexEND1: $! $!check if a quiet display is desired $ if (f$extract(0,5,P1) .eqs. "QUIET") $ then $ P1 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $ if (f$extract(0,5,P2) .eqs. "QUIET") $ then $ P2 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $ if (f$extract(0,5,P3) .eqs. "QUIET") $ then $ P3 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $ if (f$extract(0,5,P4) .eqs. "QUIET") $ then $ P4 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $ if (f$extract(0,5,P5) .eqs. "QUIET") $ then $ P5 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $ if (f$extract(0,5,P6) .eqs. "QUIET") $ then $ P6 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $ if (f$extract(0,5,P7) .eqs. "QUIET") $ then $ P7 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $ if (f$extract(0,5,P8) .eqs. "QUIET") $ then $ P8 =3D "" $ quiet=5Fdisplay =3D TRUE $ continuous=5Fdisplay =3D FALSE $ endif $! $ if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE NL: SYS$OUTPUT $! $!check if paging is desired $ page=5Fdisplay =3D FALSE $ if (f$extract(0,4,P1) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P1 =3D "" $ endif $ if (f$extract(0,4,P2) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P2 =3D "" $ endif $ if (f$extract(0,4,P3) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P3 =3D "" $ endif $ if (f$extract(0,4,P4) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P4 =3D "" $ endif $ if (f$extract(0,4,P5) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P5 =3D "" $ endif $ if (f$extract(0,4,P6) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P6 =3D "" $ endif $ if (f$extract(0,4,P7) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P7 =3D "" $ endif $ if (f$extract(0,4,P8) .eqs. "PAGE") $ then $ page=5Fdisplay =3D TRUE $ P8 =3D "" $ endif $! $!check if warning BELL is desired $ if ((f$extract(0,4,P1) .eqs. "BELL") .AND. (f$mode() .nes. "BATCH")) $ then $ P1 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P2) .eqs. "BELL") $ then $ P2 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P3) .eqs. "BELL") $ then $ P3 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P4) .eqs. "BELL") $ then $ P4 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P5) .eqs. "BELL") $ then $ P5 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P6) .eqs. "BELL") $ then $ P6 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P7) .eqs. "BELL") $ then $ P7 =3D "" $ BELL[0,8] =3D 7 $ endif $ if (f$extract(0,4,P8) .eqs. "BELL") $ then $ P8 =3D "" $ BELL[0,8] =3D 7 $ endif $! $!check if only first process is desired $ if (f$extract(0,5,P1) .eqs. "FIRST") $ then $ P1 =3D "" $ first=5Fdisplay =3D TRUE $ endif $ if (f$extract(0,5,P2) .eqs. "FIRST") $ then $ P2 =3D "" $ first=5Fdisplay =3D TRUE $ endif $ if (f$extract(0,5,P3) .eqs. "FIRST") $ then $ P3 =3D "" $ first=5Fdisplay =3D TRUE $ endif $ if (f$extract(0,5,P4) .eqs. "FIRST") $ then $ P4 =3D "" $ first=5Fdisplay =3D TRUE $ endif $ if (f$extract(0,5,P5) .eqs. "FIRST") $ then $ P5 =3D "" $ first=5Fdisplay =3D TRUE $ endif $ if (f$extract(0,5,P6) .eqs. "FIRST") $ then $ P6 =3D "" $ first=5Fdisplay =3D TRUE $ endif $ if (f$extract(0,5,P7) .eqs. "FIRST") $ then $ P7 =3D "" $ first=5Fdisplay =3D TRUE $ endif $ if (f$extract(0,5,P8) .eqs. "FIRST") $ then $ P8 =3D "" $ first=5Fdisplay =3D TRUE $ endif $! $! go to help $ if P1 .eqs. "?" then GOTO INFO $! $! set flag for extended JPI=5F Symbol output $ if (P7 + P8 .nes. "") then display=5Fsymbols =3D TRUE $! $! assign parameters to variables $ procname =3D f$extract(0,1,P1) $ if f$type(procname) .eqs. "INTEGER" $ then $ procname =3D f$edit(f$getjpi(P1,"prcnam"),"TRIM") $ else $ procname =3D P1 $ endif $ user =3D P2 $ node =3D P3 $ jobtyp =3D P4 $! $ image =3D P5 $ if img .eqs. "" $ then $ img =3D image $ endif $ if img .eqs. "" then img =3D "*" $ imgprt =3D "i=3D''img'" $! $ state =3D P6 $ if P6 .eqs. "" then state =3D "*" $ down=5Fcount =3D 0 $ up=5Fcount =3D 0 $! $ if procname .eqs. "" then procname =3D "*" $ if procname .eqs. "all" then procname =3D "*" $ if procname .eqs. "ALL" then procname =3D "*" $ if user .eqs. "all" then user =3D "*" $ if user .eqs. "ALL" then user =3D "*" $ if user .eqs. "" then user =3D "*" $ if .not. (F$PRIVILEGE("WORLD") .or. F$PRIVILEGE("GROUP")) $ then $ user =3D "''f$getjpi("","USERNAME")'" $ endif $ if (F$PRIVILEGE("GROUP") .and. - (.not. F$PRIVILEGE("WORLD")) .and. (user .eqs. "*")) $ then $ usr =3D "''f$user()'" $ if f$locate(",",usr) .ne. f$length(usr) then - usr =3D "''f$extract(0,f$locate(",",usr)+1,usr)'" + "*]" $ else $ usr =3D user $ endif $! $! if node parameter is empty, then find current node $ if node .eqs. "" then node =3D f$trnlnm("SYS$NODE") $ pos =3D f$locate(":",node) $ node =3D f$extract(0,pos,node) $! $ isIDLE =3D FALSE $ isNOTIDLE =3D FALSE $ if (f$extract(0,4,image) .eqs. "IDLE") .or. - (f$extract(0,4,image) .eqs. "idle") $ then $ image =3D "" $ isIDLE =3D TRUE $ imgprt =3D "i=3DIDLE" $ endif $ if (f$extract(0,4,image) .eqs. "BUSY") .or. - (f$extract(0,4,image) .eqs. "busy") $ then $ image =3D "" $ isNOTIDLE =3D TRUE $ imgprt =3D "i=3DBUSY" $ endif $! $ isDEFAULT =3D FALSE $ isNOTDEFAULT =3D FALSE $ if (f$extract(0,5,image) .eqs. "ISDEF") .or. - (f$extract(0,5,image) .eqs. "isdef") $ then $ image =3D f$extract(5,f$length(image),image) $ isNOTIDLE =3D TRUE $ isDEFAULT =3D TRUE $ imgprt =3D "i=3DDEFAULT" $ endif $ if (f$extract(0,6,image) .eqs. "NOTDEF") .or. - (f$extract(0,6,image) .eqs. "notdef") $ then $ image =3D f$extract(6,f$length(image),image) $ isNOTIDLE =3D TRUE $ isNOTDEFAULT =3D TRUE $ imgprt =3D "i<>DEFAULT" $ endif $ if image .eqs. "*" then imgprt =3D "i=3D*" $ if image .eqs. "*" then image =3D "" $! $!convert jobtype parameter to full jobtype name $ if jobtyp .eqs. "" then jobtyp =3D "*" $ if jobtyp .eqs. "0" then jobtyp =3D "DETACHED" $ if jobtyp .eqs. "1" then jobtyp =3D "NETWORK" $ if jobtyp .eqs. "2" then jobtyp =3D "BATCH" $ if jobtyp .eqs. "3" then jobtyp =3D "LOCAL" $ if jobtyp .eqs. "4" then jobtyp =3D "DIALUP" $ if jobtyp .eqs. "5" then jobtyp =3D "REMOTE" $! $ LINE=5FPARAMETERS :=3D - "p=3D''procname' u=3D''usr' n=3D''node' j=3D''jobtyp' ''imgprt' s=3D''st= ate' " - "''P7' ''P8' ''P9'" $! $ LPdex =3D 1 $ LPLOOP: $ LPITEM =3D ITEM'LPdex' $ REDUCE =3D "USERNAME,AUTHPRI,TERMINAL" $ if f$locate(LPITEM,REDUCE) .nes. f$length(REDUCE) then - LPITEM =3D f$extract(0,4,LPITEM) $ if LPITEM .eqs. "MASTER=5FPID" then LPITEM =3D "MASTER" $ if LPITEM .eqs. "ACCOUNT" then LPITEM =3D "ACCNT" $ IF OP'LPdex' .eqs. "ANY" then LPOP =3D "><" $ IF OP'LPdex' .eqs. "NEQ" then LPOP =3D "<>" $ IF OP'LPdex' .eqs. "LEQ" then LPOP =3D "<=3D" $ IF OP'LPdex' .eqs. "GEQ" then LPOP =3D ">=3D" $ IF OP'LPdex' .eqs. "LSS" then LPOP =3D "<" $ IF OP'LPdex' .eqs. "GTR" then LPOP =3D ">" $ IF OP'LPdex' .eqs. "ALL" then LPOP =3D "=3D=3D" $ IF OP'LPdex' .eqs. "EQL" then LPOP =3D "=3D" $ IF OP'LPdex' .eqs. "" then LPOP =3D "" $ LPVAR =3D LPITEM + LPOP + VAL'LPdex' $ if LPVAR .nes. "" then LINE=5FPARAMETERS :=3D "''LINE=5FPARAMETERS' ''LPVAR'" $ LPdex =3D LPdex + 1 $ if LPdex .lt. 9 then goto LPLOOP $ LINE=5FPARAMETERS :=3D "''f$edit(LINE=5FPARAMETERS,"COMPRESS,TRIM")'" $! $ write sys$output ESline," " $ if continuous=5Fdisplay then SAY ES $ if .not. continuous=5Fdisplay then TOP =3D NEXTLINE $! $ if P7 .nes. "" $ then $ param =3D P7 $ gosub paramcount $ endif $! $ if P8 .nes. "" $ then $ param =3D P8 $ gosub paramcount $ endif $! $ if check=5Fquotas $ then $ if (check=5Fitem .eqs. "PRC") $ then $ symbolcnt =3D symbolcnt + 3 $ goto ifcheck1 $ endif $ if (check=5Fitem .eqs. "PGFLQUOTA") $ then $ symbolcnt =3D symbolcnt + 2 $ goto ifcheck1 $ endif $ param =3D check=5Fitem+"CNT" $ gosub paramcount $ param =3D check=5Fitem+"LM" $ gosub paramcount $ endif $ ifcheck1: $! $ if display=5Fsymbols .and. page=5Fdisplay $ then $ TOP =3D NEXTLINE $ current=5Fterm=5Fheight =3D max=5Flinecount $ if f$mode() .nes. "BATCH" then set term / page=3D'current=5Fterm=5Fheight' $ er $ endif $! $ STARTIT: $!define process search context $! $ Pdex =3D 0 $ PdexLOOP2: $ Pdex =3D Pdex + 1 $ if Pdex .gt. 9 then goto PdexEND2 $ if ITEM'Pdex' .eqs. "CHECK" then goto PdexLOOP2 $ if ITEM'Pdex' .eqs. "PERCENT" then goto PdexLOOP2 $ if OP'Pdex' .nes. "" then - a =3D f$context("process",proc=5Fcontext,ITEM'Pdex',VAL'Pdex',OP'Pdex') $ if .not. $STATUS then goto abortit $ goto PdexLOOP2 $ PdexEND2: $! $ if node .nes. "CANCELLED" then - a =3D f$context("process",proc=5Fcontext,"nodename",node,"eql") $ if jobtyp .nes. "*" then - a =3D f$context("process",proc=5Fcontext,"jobtype",jobtyp,"eql") $ if state .nes. "*" then - a =3D f$context("process",proc=5Fcontext,"state",state,"eql") $ if user .nes. "*" then - a =3D f$context("process",proc=5Fcontext,"username",user,"eql") $ if procname .nes. "*" then - a =3D f$context("process",proc=5Fcontext,"prcnam",procname,"eql") $! $!take first step into process search context $ pid =3D f$pid(proc=5Fcontext) $ if pid .eqs. "" $ then $ if up=5Fcount .gt. down=5Fcount $ then $ SAY ONEUP,BELL,BELL,BELL,BELL $ down=5Fcount =3D down=5Fcount + 1 $ if down=5Fstop then goto abortit $ endif $ goto notfound $ else $ if up=5Fcount .eq. down=5Fcount $ then $ IF up=5Fcount .gt. 0 then SAY ONEUP,BELL,BELL $ up=5Fcount =3D up=5Fcount + 1 $ endif $ endif $! $ gosub displayheader $! $ context=5Floop: $! get process information... $ on error then goto param=5Ferr $! $! data for the /continuous default output $ JPI=5FPID =3D pid $ JPI=5FTIME=3Df$time() $ JPI=5FNODENAME=3Df$edit(f$getjpi(pid,"nodename"),"TRIM") $ JPI=5FPRCNAM=3Df$edit(f$getjpi(pid,"prcnam"),"TRIM") $ NODE=5FPROC =3D F$FAO("!(#AS) !(#AS)",6,JPI=5FNODENAME,15,JPI=5FPRCNA= M) $ JPI=5FUSERNAME=3Df$edit(f$getjpi(pid,"username"),"TRIM") $ JPI=5FSTATE=3Df$getjpi(pid,"STATE") $ JPI=5FPRI=3Df$string(f$getjpi(pid,"PRI")) $ JPI=5FJOBTYPE=3Df$getjpi(pid,"JOBTYPE") $ JPI=5FIMAGNAME=3Df$getjpi(pid,"imagname") $ JPI=5FIMAGNAME=3DJPI=5FIMAGNAME - "][" - "][" $ JPI=5FDIRIO=3Df$string(f$getjpi(pid,"DIRIO")) $ JPI=5FBUFIO=3Df$string(f$getjpi(pid,"BUFIO")) $ JPI=5FALLIO=3D F$INTEGER(JPI=5FDIRIO) + F$INTEGER(JPI=5FBUFIO) $ JPI=5FALLIO=3D "''JPI=5FALLIO'" $ JPI=5FPAGEFLTS=3Df$string(f$getjpi(pid,"PAGEFLTS")) $ JPI=5FCPUTIM=3Df$string(f$getjpi(pid,"CPUTIM")) $ CPUHRS =3D JPI=5FCPUTIM / 360000 $ CPUMIN =3D (JPI=5FCPUTIM - (CPUHRS * 360000)) / 6000 $ CPUSEC =3D (JPI=5FCPUTIM - (CPUHRS * 360000) - (CPUMIN * 6000)) /100 $ CPUMILL =3D (JPI=5FCPUTIM - (CPUHRS * 360000) - (CPUMIN * 6000) - - (CPUSEC * 100)) $ if f$length(CPUHRS) .lt. 2 then CPUHRS =3D " " + "''CPUHRS'" $ if f$length(CPUMIN) .lt. 2 then CPUMIN =3D "0" + "''CPUMIN'" $ if f$length(CPUSEC) .lt. 2 then CPUSEC =3D "0" + "''CPUSEC'" $ if f$length(CPUMILL) .lt. 2 then CPUMILL =3D "0" + "''CPUMILL'" $ JPI=5FCPUTIM =3D "''CPUHRS'" + ":" + "" + "''CPUMIN'" + ":" - + "''CPUSEC'" + "." + "''CPUMILL'" $ JPI=5FIMAGE=3D - "''f$parse(f$getjpi (pid,"imagname"),,,"NAME")'" + - "''f$parse(f$getjpi (pid,"imagname"),,,"TYPE")'" $ JPI=5FIMAGE =3D JPI=5FIMAGE - "][" - "][" - "><" - "><" $ if f$locate("<",JPI=5FIMAGE) .ne. f$length(JPI=5FIMAGE) $ then $ JPI=5FIMAGE =3D f$extract(0,f$locate("<",JPI=5FIMAGE),JPI=5FIMAGE) + "[" + - f$extract(f$locate("<",JPI=5FIMAGE)+1,f $length(JPI=5FIMAGE),JPI=5FIMAGE) $ endif $ if f$locate(">",JPI=5FIMAGE) .ne. f$length(JPI=5FIMAGE) $ then $ JPI=5FIMAGE =3D f$extract(0,f$locate(">",JPI=5FIMAGE),JPI=5FIMAGE) + "]" + - f$extract(f$locate(">",JPI=5FIMAGE)+1,f $length(JPI=5FIMAGE),JPI=5FIMAGE) $ endif $ JPI=5FIMAGE =3D JPI=5FIMAGE - "][" - "][" - "><" - "><" $ if jpi=5Fimagname .eqs. "" then jpi=5Fimage =3D "---idle---" $ if ((isIDLE) .and. (JPI=5FIMAGE .nes. "---idle---")) then goto skipit $ if ((isNOTIDLE) .and. (JPI=5FIMAGE .eqs. "---idle---")) then goto skipit $ if (image .nes. "") $ then $ if (isNOTDEFAULT) $ then $ if F$LOCATE(image,JPI=5FIMAGNAME) .ne. - F$LENGTH(JPI=5FIMAGNAME) then goto skipit $ else $ if F$LOCATE(image,JPI=5FIMAGNAME) .eq. - F$LENGTH(JPI=5FIMAGNAME) then goto skipit $ endif $ endif $ NODE=5FUSER=5FPROC =3D F$FAO("!(#AS) !(#AS) !(#AS)",6,JPI=5FNODENAME,= - 12,JPI=5FUSERNAME,15,JPI=5FPRCNAM) $! $ if JPI=5FJOBTYPE .eqs. "0" then JPI=5FJOBTYPE =3D "DETACHED" $ if JPI=5FJOBTYPE .eqs. "1" then JPI=5FJOBTYPE =3D "NETWORK" $ if JPI=5FJOBTYPE .eqs. "2" then JPI=5FJOBTYPE =3D "BATCH" $ if JPI=5FJOBTYPE .eqs. "3" then JPI=5FJOBTYPE =3D "LOCAL" $ if JPI=5FJOBTYPE .eqs. "4" then JPI=5FJOBTYPE =3D "DIALUP" $ if JPI=5FJOBTYPE .eqs. "5" then JPI=5FJOBTYPE =3D "REMOTE" $! $ if (.not. display=5Fsymbols) .and. continuous=5Fdisplay then goto showit $! $! additional variables which can be checked if requested $ if display=5Fsymbols $ then $ JPI=5FACCOUNT=3Df$getjpi(pid,"ACCOUNT") $ JPI=5FAPTCNT=3Df$getjpi(pid,"APTCNT") $ JPI=5FASTACT=3Df$getjpi(pid,"ASTACT") $ JPI=5FASTCNT=3Df$getjpi(pid,"ASTCNT") $ JPI=5FASTEN=3Df$getjpi(pid,"ASTEN") $ JPI=5FASTLM=3Df$getjpi(pid,"ASTLM") $ JPI=5FAUTHPRI=3Df$getjpi(pid,"AUTHPRI") $ JPI=5FAUTHPRIV=3Df$getjpi(pid,"AUTHPRIV") $ JPI=5FBIOCNT=3Df$getjpi(pid,"BIOCNT") $ JPI=5FBIOLM=3Df$getjpi(pid,"BIOLM") $ JPI=5FBYTCNT=3Df$getjpi(pid,"BYTCNT") $ JPI=5FBYTLM=3Df$getjpi(pid,"BYTLM") $ JPI=5FCLINAME=3Df$getjpi(pid,"CLINAME") $ JPI=5FCPULIM=3Df$getjpi(pid,"CPULIM") $ JPI=5FCURPRIV=3Df$getjpi(pid,"CURPRIV") $ JPI=5FDFPFC=3Df$getjpi(pid,"DFPFC") $ JPI=5FDFWSCNT=3Df$getjpi(pid,"DFWSCNT") $ JPI=5FDIOCNT=3Df$getjpi(pid,"DIOCNT") $ JPI=5FDIOLM=3Df$getjpi(pid,"DIOLM") $ JPI=5FEFCS=3Df$getjpi(pid,"EFCS") $ JPI=5FEFCU=3Df$getjpi(pid,"EFCU") $ JPI=5FEFWM=3Df$getjpi(pid,"EFWM") $ JPI=5FENQCNT=3Df$getjpi(pid,"ENQCNT") $ JPI=5FENQLM=3Df$getjpi(pid,"ENQLM") $ JPI=5FFILCNT=3Df$getjpi(pid,"FILCNT") $ JPI=5FFILLM=3Df$getjpi(pid,"FILLM") $ JPI=5FFREP0VA=3Df$getjpi(pid,"FREP0VA") $ JPI=5FFREP1VA=3Df$getjpi(pid,"FREP1VA") $ JPI=5FFREPTECNT=3Df$getjpi(pid,"FREPTECNT") $ JPI=5FGPGCNT=3Df$getjpi(pid,"GPGCNT") $ JPI=5FGRP=3Df$getjpi(pid,"GRP") $ JPI=5FIMAGECOUNT=3Df$getjpi(pid,"IMAGECOUNT") $ JPI=5FIMAGPRIV=3Df$getjpi(pid,"IMAGPRIV") $ JPI=5FJOBPRCCNT=3Df$getjpi(pid,"JOBPRCCNT") $ JPI=5FLAST=5FLOGIN=5FI=3Df$getjpi(pid,"LAST=5FLOGIN=5FI") $ JPI=5FLAST=5FLOGIN=5FN=3Df$getjpi(pid,"LAST=5FLOGIN=5FN") $ JPI=5FLOGIN=5FFAILURES=3Df$getjpi(pid,"LOGIN=5FFAILURES") $ JPI=5FLOGIN=5FFLAGS=3Df$getjpi(pid,"LOGIN=5FFLAGS") $ JPI=5FLOGINTIM=3Df$getjpi(pid,"LOGINTIM") $ JPI=5FMASTER=5FPID=3Df$getjpi(pid,"MASTER=5FPID") $ JPI=5FMAXDETACH=3Df$getjpi(pid,"MAXDETACH") $ JPI=5FMAXJOBS=3Df$getjpi(pid,"MAXJOBS") $ JPI=5FMEM=3Df$getjpi(pid,"MEM") $ JPI=5FMODE=3Df$getjpi(pid,"MODE") $ JPI=5FMSGMASK=3Df$getjpi(pid,"MSGMASK") $ JPI=5FNODE=5FCSID=3Df$edit(f$getjpi(pid,"NODE=5FCSID"),"TRIM") $ JPI=5FNODE=5FVERSION=3Df$edit(f$getjpi(pid,"NODE=5FVERSION"),"TRIM") $ JPI=5FOWNER=3Df$edit(f$getjpi(pid,"OWNER"),"TRIM") $ JPI=5FPAGFILCNT=3Df$getjpi(pid,"PAGFILCNT") $ JPI=5FPAGFILLOC=3Df$getjpi(pid,"PAGFILLOC") $ JPI=5FPGFLQUOTA=3Df$getjpi(pid,"PGFLQUOTA") $ JPI=5FPHDFLAGS=3Df$getjpi(pid,"PHDFLAGS") $ JPI=5FPPGCNT=3Df$getjpi(pid,"PPGCNT") $ JPI=5FPRCCNT=3Df$getjpi(pid,"PRCCNT") $ JPI=5FPRCLM=3Df$getjpi(pid,"PRCLM") $ JPI=5FPRIB=3Df$getjpi(pid,"PRIB") $ JPI=5FPROC=5FINDEX=3Df$getjpi(pid,"PROC=5FINDEX") $ JPI=5FPROCPRIV=3Df$getjpi(pid,"PROCPRIV") $ JPI=5FSHRFILLM=3Df$getjpi(pid,"SHRFILLM") $ JPI=5FSITESPEC=3Df$getjpi(pid,"SITESPEC") $ JPI=5FSTS=3Df$getjpi(pid,"STS") $ JPI=5FSTS2=3Df$getjpi(pid,"STS2") $ JPI=5FSWPFILLOC=3Df$getjpi(pid,"SWPFILLOC") $ JPI=5FTABLENAME=3Df$getjpi(pid,"TABLENAME") $ JPI=5FTERMINAL=3Df$getjpi(pid,"TERMINAL") $ JPI=5FTMBU=3Df$getjpi(pid,"TMBU") $ JPI=5FTQCNT=3Df$getjpi(pid,"TQCNT") $ JPI=5FTQLM=3Df$getjpi(pid,"TQLM") $ JPI=5FTT=5FACCPORNAM=3Df$getjpi(pid,"TT=5FACCPORNAM") $ JPI=5FTT=5FPHYDEVNAM=3Df$getjpi(pid,"TT=5FPHYDEVNAM") $ JPI=5FUAF=5FFLAGS=3Df$getjpi(pid,"UAF=5FFLAGS") $ JPI=5FUIC=3Df$getjpi(pid,"UIC") $ JPI=5FVIRTPEAK=3Df$getjpi(pid,"VIRTPEAK") $ JPI=5FVOLUMES=3Df$getjpi(pid,"VOLUMES") $ JPI=5FWSAUTH=3Df$getjpi(pid,"WSAUTH") $ JPI=5FWSAUTHEXT=3Df$getjpi(pid,"WSAUTHEXT") $ JPI=5FWSEXTENT=3Df$getjpi(pid,"WSEXTENT") $ JPI=5FWSPEAK=3Df$getjpi(pid,"WSPEAK") $ JPI=5FWSQUOTA=3Df$getjpi(pid,"WSQUOTA") $ JPI=5FWSSIZE=3Df$getjpi(pid,"WSSIZE") $! $! these variables performed last, since they are most likely to fail $ JPI=5FSYSTEM=5FRIGHTS=3Df$getjpi(pid,"SYSTEM=5FRIGHTS") $ JPI=5FPROCESS=5FRIGHTS=3Df$getjpi(pid,"PROCESS=5FRIGHTS") $ JPI=5FRIGHTSLIST=3Df$getjpi(pid,"RIGHTSLIST") $! $ endif !***if (display=5Fsymbols)*** $! $ if check=5Fquotas $ then $ if JPI=5FPRCNAM .eqs. "SWAPPER" then goto skipit $ if check=5Fitem .eqs. "PGFLQUOTA" $ then $ if JPI=5FVIRTPEAK * 100 .lt. JPI=5FPGFLQUOTA * (100-percent) $ then $ goto skipit $ elseif $ goto showit $ endif $ endif $ if check=5Fitem .eqs. "PRC" $ then $ if ((JPI=5FJOBPRCCNT * 100) .lt. (JPI=5FPRCLM * (100- percent))) .and. - ((JPI=5FPRCCNT * 100) .lt. (JPI=5FPRCLM * (100-percent))) $ then $ goto skipit $ elseif $ goto showit $ endif $ endif $ if JPI=5F'check=5Fitem'CNT*100 .gt. JPI=5F'check=5Fitem'CNT*percent then goto SKIPIT $ endif $! $ goto showit $ param=5Ferr: $ say "''Blink' Error! during a context variable scan of process" + - " ''jpi=5Fprcnam' on node ''jpi=5Fnodename' ''Norm'" $ on error then goto abortit $! $ showit: $ linecount =3D linecount + symbolcnt + 1 $ PSCOUNT =3D PSCOUNT + 1 $! $! check whether the bottom of screen has been reached $ if ((LINECOUNT + HEADER + FOOTER) .gt. current=5Fterm=5Fheight) .or. - page=5Fdisplay $ then $ TOP =3D NEXTLINE $ if continuous=5Fdisplay .and. (current=5Fterm=5Fheight .ge. max=5Flinecount) - then page=5Fdisplay =3D TRUE $ endif $! $ if ((LINECOUNT + HEADER + FOOTER) .ge. current=5Fterm=5Fheight) $ then $ if continuous=5Fdisplay $ then $ if page=5Fdisplay $ then $ READ /TIME=5FOUT=3D3/ERROR=3Daskend sys$command askanswer /PROMPT= =3D - "''ESline'''CURSOROFF'''INVERSE'Pausing 00:00:03.00''INVERSEOFF'''ONEUP'" $ READ sys$command askanswer /PROMPT=3D - "''NEXTLINE'''ESline'''INVERSE'Waiting for a ''INVERSEOFF'''ONEUP'" $ askend: $ write sys$output ESline,CURSORON,"Continuing=3D=3D>" $ linecount =3D 0 $ display=5Fhead=5Fonly =3D TRUE $ else $ if (current=5Fterm=5Fheight .lt. max=5Flinecount) $ then $ current=5Fterm=5Fheight =3D LINECOUNT + JUMP $ if f$mode() .nes. "BATCH" then - SET TERM /PAGE=3D'current=5Fterm=5Fheight' $ endif $ endif $ else $ if page=5Fdisplay $ then $ if f$mode() .nes. "BATCH" then read - /prompt=3D"''BOLD'Press ENTER to continue''NORM'" sys$command noop $ display=5Fhead=5Fonly =3D TRUE $ linecount =3D 0 $ endif $ endif $ endif $! $! Check if there will be a process context variable dump $ if display=5Fsymbols $ then $ if linecount .eq. 0 then display=5Fhead=5Fonly =3D TRUE $ if (.not. continuous=5Fdisplay) then display=5Fhead=5Fonly =3D TRUE $ endif $! $! output extra header if requested $ if display=5Fhead=5Fonly $ then $ gosub displayheader $ endif $! $ if display=5Fsymbols $ then $ write sys$output ESline, - "---------------------------------------" + - "---------------------------------------" $ linecount =3D linecount + 1 $ endif $! $ !output detail lines $ if TERM=5FWIDTH .ge. 132 $ then $ write sys$output ESline, - F$FAO("!(#AS) !(#AS) !(#AS) !(#AS)", - 35,node=5Fuser=5Fproc,8,jpi=5Fpid, - 8,jpi=5Fjobtype,5,jpi=5Fstate), - F$FAO(" !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)", - 2,jpi=5Fpri,12,jpi=5Fcputim,9,jpi=5Fallio,8,jpi=5Fpageflts,30,jpi=5Fima= ge) $ else $ if continuous=5Fdisplay $ then $ write sys$output ESline, - F$FAO("!(#AS) !(#AS) !(#AS)!(#AS)!(#AS)!(#AS)!(#AS)", - 22,node=5Fproc,2,jpi=5Fpri,5,jpi=5Fstate, - 12,jpi=5Fcputim,9,jpi=5Fallio,8,jpi=5Fpageflts,20,jpi=5Fimage) $ else $ write sys$output ESline, - F$FAO("!(#AS) !(#AS) !(#AS) !(#AS) !(#AS)", - 35,node=5Fuser=5Fproc,8,jpi=5Fpid, - 8,jpi=5Fjobtype,5,jpi=5Fstate,20,jpi=5Fimage) $ endif $ endif $! $ if P7 .nes. "" $ then $ if P7 .eqs. "ALL" $ then $ show symbol JPI=5F* $ else $ show symbol JPI=5F'P7' $ endif $ endif $! $ if P8 .nes. "" $ then $ if P8 .eqs. "ALL" $ then $ show symbol JPI=5F* $ else $ show symbol JPI=5F'P8' $ endif $ endif $! $ if check=5Fquotas $ then $ if check=5Fitem .eqs. "PRC" $ then $ show symbol JPI=5FPRCCNT $ show symbol JPI=5FJOBPRCCNT $ show symbol JPI=5FPRCLM $ goto ifcheck2 $ endif $ if check=5Fitem .eqs. "PGFLQUOTA" $ then $ show symbol JPI=5FPGFLQUOTA $ show symbol JPI=5FVIRTPEAK $ goto ifcheck2 $ endif $ show symbol JPI=5F'check=5Fitem'CNT $ show symbol JPI=5F'check=5Fitem'LM $ endif $ ifcheck2: $! $ if first=5Fdisplay then goto endit $! $ SKIPIT: $ pid =3D f$pid(proc=5Fcontext) $ if pid .eqs. "" then goto endit $ goto context=5Floop $! $! $ ENDIT: $ if f$type(proc=5Fcontext) .eqs. "PROCESS=5FCONTEXT" then - pid =3D f$context("process",proc=5Fcontext,"cancel") $! $ proc =3D f$parse(f$environment("procedure"),,,"name",) $ if display=5Fsymbols $ then $ write sys$output ESline, - "---------------------------------------" + - "---------------------------------------" $ linecount =3D linecount + 1 $ endif $ if wait=5Fdisplay $ then $ write sys$output ESline,CURSOROFF, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down=5Fcount, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME()), - 33,"''BOLD' WaitDelta:''NORM' ''wait=5Ftime'"),EStoEND,ONEUP $ else $ if continuous=5Fdisplay $ then $ write sys$output ESline,CURSOROFF, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down=5Fcount, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())),EStoEND $ else $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())) $ endif $ endif $ if (current=5Fterm=5Fheight - jump .ge. TERM=5FHEIGHT ) .and. - (current=5Fterm=5Fheight - jump=5Fbuffer .ge. PSCOUNT) .and. - continuous=5Fdisplay .and. (.not. display=5Fsymbols) $ then $ current=5Fterm=5Fheight =3D current=5Fterm=5Fheight - jump $ if f$mode() .nes. "BATCH" then SET TERM / PAGE=3D'current=5Fterm=5Fheight' $ endif $ PS=5FCOUNT =3D=3D PSCOUNT $ if PS=5FCOUNT .gt. 0 $ then $ PS=5FPID =3D=3D JPI=5FPID $ PS=5FPRCNAM =3D=3D JPI=5FPRCNAM $ PS=5FUSER =3D=3D JPI=5FUSERNAME $ PS=5FNODE =3D=3D JPI=5FNODENAME $ PS=5FJOB =3D=3D JPI=5FJOBTYPE $ PS=5FIMAGE =3D=3D JPI=5FIMAGNAME $ if PS=5FIMAGE .eqs. "" then PS=5FIMAGE =3D=3D "IDLE" $ PS=5FSTATE =3D=3D JPI=5FSTATE $ PS=5FPRI =3D=3D JPI=5FPRI $ PS=5FCPUTIM =3D=3D JPI=5FCPUTIM $ PS=5FTIME =3D=3D JPI=5FTIME $ PS=5FALLIO =3D=3D JPI=5FALLIO $ PS=5FPAGEFLTS =3D=3D JPI=5FPAGEFLTS $ if (check=5Fquotas .OR. display=5Fsymbols) $ then $ PS=5FPGFLQUOTA =3D=3D JPI=5FPGFLQUOTA $ PS=5FVIRTPEAK =3D=3D JPI=5FVIRTPEAK $ endif $ endif $! $ if (.NOT. reloop=5FOK) then goto abortit $ if (first=5Fdisplay) .AND. (PSCOUNT .GE. 1) then goto abortit $ PSCOUNT =3D 0 $ LINECOUNT =3D 0 $ if wait=5Fdisplay then wait 'wait=5Ftime' $ if continuous=5Fdisplay .AND. (.NOT. first=5Fdisplay) then goto startit $! $ if display=5Fsymbols .and. page=5Fdisplay $ then $ read/prompt=3D"''BOLD'Press ENTER to continue:''NORM'" sys$command noop $ write sys$output ESline,"[procedure ''proc' completed]" $ endif $ if f$mode() .nes. "BATCH" then SET TERM/PAGE=3D'TERM=5FHEIGHT' $ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER) $ if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE TT: SYS$OUTPUT $ exit $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ NOTFOUND: $ PS=5FCOUNT =3D=3D PSCOUNT $ if f$type(proc=5Fcontext) .eqs. "PROCESS=5FCONTEXT" then - pid =3D f$context("process",proc=5Fcontext,"cancel") $! $ proc =3D f$parse(f$environment("procedure"),,,"name",) $ gosub displayheader $ write sys$output ESline, - "Could not find a process matching your specification!" $ SAY EStoEND,ONEUP $ if wait=5Fdisplay $ then $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down=5Fcount, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME()), - 33,"''BOLD' WaitDelta:''NORM' ''wait=5Ftime'") $ wait 'wait=5Ftime' $ else $ if continuous=5Fdisplay $ then $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 17,"''BOLD'DownCount:''NORM'", - 3,down=5Fcount, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())) $ else $ write sys$output ESline, - F$FAO("!(#AS)!(#UB) !(#AS) !(#AS)", - 14,"''BOLD'Found:''NORM' ", - 4,PSCOUNT, - 12,"''BOLD'Time:''NORM'", - 8,F$EXTRACT(12,8,F$TIME())) $ endif $ endif $ if (.NOT. reloop=5FOK) then goto abortit $ if continuous=5Fdisplay then goto startit $ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER) $ if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE TT: SYS$OUTPUT $ exit $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ PERCENTERR: $ errmsg =3D "%PS-E-PRCNT, Error! - Percent value not within 0 to 100 range!" $ goto abortit $! $ ABORT=5FC: $ C=5FABORT =3D TRUE $ ABORTIT: $ PS=5FCOUNT =3D=3D 0 - PSCOUNT $! $ if f$type(proc=5Fcontext) .eqs. "PROCESS=5FCONTEXT" then - pid =3D f$context("process",proc=5Fcontext,"cancel") $! $ if continuous=5Fdisplay then SAY EStoEND $ proc =3D f$parse(f$environment("procedure"),,,"name",) $ if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE TT: SYS$OUTPUT $ if C=5FABORT $ then $ write sys$output ESline,"Procedure ''proc' Aborted.",CURSORON $ else $ write sys$output ESline,"Procedure ''proc' Finished.",CURSORON $ endif $ quitit: $ if f$mode() .nes. "BATCH" then SET TERM/PAGE=3D'TERM=5FHEIGHT' $ if errmsg .nes. "" then say errmsg $ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER) $ exit $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ PARAMCOUNT: $ index =3D 0 $ PARAM =3D "." + PARAM - "*" - "*" $ searchloop1: $ JPIELEMENT =3D "." + f$element(index,",",JPILIST1) $ if JPIELEMENT .eqs. ".," then goto endsearch1 $ if f$locate(PARAM,JPIELEMENT) .ne. f$length(JPIELEMENT) then - symbolcnt =3D symbolcnt + 1 $ index=3D index + 1 $ goto searchloop1 $ endsearch1: $ index =3D 0 $ searchloop2: $ JPIELEMENT =3D "." + f$element(index,",",JPILIST2) $ if JPIELEMENT .eqs. ".," then goto endsearch2 $ if f$locate(PARAM,JPIELEMENT) .ne. f$length(JPIELEMENT) then - symbolcnt =3D symbolcnt + 1 $ index=3D index + 1 $ goto searchloop2 $ endsearch2: $ RETURN $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D $! $ DISPLAYHEADER: $!output header for default display $ if continuous=5Fdisplay $ then $ if TERM=5FWIDTH .lt. 132 $ then $ if (.not. display=5Fhead=5Fonly) then write sys$output TOP,ESline,CURSORON, - BOLD,BLINK,"Scanning:",NORM,F$FAO(" !(#AS)",70,LINE=5FPARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS) ! (#AS)''NORM'", - 6,"Node",14,"ProcessName",3,"Pri",5,"State",10,"CPUTime", - 16,"I/O PgFlts ",20,"Image") $ else $ if (.not. display=5Fhead=5Fonly) then write sys$output TOP,ESline,CURSORON, - BOLD,BLINK,"Scanning:",NORM,F$FAO(" !(#AS)",122,LINE=5FPARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)''NORM'", - 6,"Node",12,"Username",15,"ProcessName",8,"Pid",8,"Jobtype", 5,"State"), - F$FAO("''BOLD' !(#AS) !(#AS) !(#AS) !(#AS)''NORM'", - 3,"Pri",10,"CPUTime",18,"I/O PgFlts ",30,"Image") $ endif $! if display=5Fhead=5Fonly then linecount =3D linecount + 1 $ else $ if (.not. display=5Fsymbols) .or. (linecount .le. 1) $ then $ if TERM=5FWIDTH .lt. 132 $ then $ if (.not. display=5Fhead=5Fonly) then write sys$output TOP,ESline, - BOLD,INVERSE,"Scan:",NORM,F$FAO(" !(#AS)",70,LINE=5FPARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS) ! (#AS)''NORM'", - 6,"Node",12,"Username",15,"ProcessName",8,"Pid",8,"Jobtype", 5,"State", - 5,"Image") $ else $ if (.not. display=5Fhead=5Fonly) then write sys$output TOP,ESline, - BOLD,INVERSE,"Scan:",NORM,F$FAO(" !(#AS)",122,LINE=5FPARAMETERS) $ write sys$output ESline, - F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)''NORM'", - 6,"Node",12,"Username",15,"ProcessName",8,"Pid",8,"Jobtype", 5,"State"), - F$FAO("''BOLD' !(#AS) !(#AS) !(#AS) !(#AS) ''NORM'", - 3,"Pri",10,"CPUTime",18,"I/O PgFlts ",30,"Image") $ endif $! if display=5Fhead=5Fonly then linecount =3D linecount + 1 $ endif $ endif $ display=5Fhead=5Fonly =3D FALSE $ RETURN $! $! =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --=_alternative 005F51D285257375_= Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable
Unfortunately the e-mail here wrapped at less than 80 bytes/line,
but even after fixing that up:

> $    if f$type(percent) .ne. "IN= TEGER"  then goto percenterr s/b
  $    if f$type(percent) .nes. "= ;INTEGER"  then goto percenterr

and there are 2 instances of

> $       elseif

What are they supposed to be?
Keith Cayemberg <keith.cayembe= rg@arcor.de>

10/15/2007 11:59 AM

To
Info-VAX@Mvb.Saic.Com
cc
Subject
Re: PROCESS=5FSCAN.COM = (or an example of what DCL can do)





Here one more try...


$ proc=5Fver =3D F$ENVIRONMENT("VERIFY=5FPROCEDURE")
$ image=5Fver =3D F$ENVIRONMENT("VERIFY=5FIMAGE")
$! set noverify
$ goto INFOEND
$!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
$!
$ info:
$ ERASE
$ Type Sys$Input

 PROCEDURE: PROCESS=5FSCAN.COM
 AUTHOR:    Keith Cayemberg
 DATE:      original version written sometime in the mid 1980's

 DESCRIPTION:

 This procedure provides a means to scan the JPI process context
variables
 of other user's processes on the same node or cluster.  Dependi= ng on
the
 identity of the other processes, you will need the GROUP or WORLD
privilege
 to see the other user's context. Global Symbols with the key
attributes
 of the last process found are created for use in DCL command
procedures.

 PROCESS=5FSCAN accepts selection criteria as either "positional=
parameters",
 whereby meaning is determined by its sequence P1 to P6 on the
command
 line, or as "named parameters" inwhich the meaning and an operator
are
 given explicitly. Positional and Named Parameters can be mixed, but
the
 Named parameters mask their corresponding parameter position as
unused.
 A Positional and Named parameter cannot use the same Process Context=
 Variable as a selection criteria.

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Positional Parameters:        P  U  N  J  I  S

P1 =3D  Processname  find only processes with this process name or PID
number or
                   list of process names (use * in name as a
wildcard)
      ALL, *, ""   processes with any process name (default)
      "=3D", .       processes hav= ing the same first 2 chars in
Processname
      <>           processes not having the same first 2 chars in
Processname
      ?            displays this help documentation.

P2 =3D  Username     only processes owned by this user or list of users
                   (use * only at end of name as a wildcard for
matches)
      ALL, *, ""   processes belonging to any user (default)
      =3D, .         processes belonging to the current user
      <>           processes not belonging to the current user

P3 =3D  Nodename     only processes on the indicated node or node list
                   (use * in name as a wildcard for matches)
      "", =3D, .     processes only on current node (default)
      <>           only processes not on current node
      *            processes on any node in current cluster

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Positional Parameters: (continued)   P  U  N  J  I  S

P4 =3D  Jobtype      only processes with the specified job type
                   Keywo= rds: DETACHED (or 0), NETWORK (or 1), BATCH
(or 2),
                             LOCAL (or 3), DIALUP (or 4), REMOTE (or 5)
      *, ""        matches all jobtypes
      =3D, .         processes with JOB= TYPE =3D DETACHED
      <>           processes with JOBTYPE <> DETACHED

P5 =3D  Imagename    only processes running this image
                   (name always used as wildcard match to full path/
filename)
      IDLE         only idle processes at DCL level
      BUSY         only processes runni= ng an image
      *, ""        processes running any image or idle
      =3D, .         processes running image in current default
directory
      <>           processes running image not in current default
directory

P6 =3D  State        only processes having this state will match
      *, ""        matches all states
      =3D, .         processes with STA= TE =3D HIB
      <>           processes with STATE <> HIB

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Positional Parameters: (continued)   P  U  N  J  I  S

P7, P8 =3D           Process Context Variables to be displayed (see
list).
                   Use "*" as a wildcard (or "ALL") to indicate all
variables
                   are to be displayed. If none of these parameters
are
                   enter= ed, then no variables are displayed.

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Qualifiers affecting scan behavior:

/CONTINUE         This qualifier (P2 to P8) causes continuous
scanning
/CONT=3D            until stopped with a Con= trol-C. The DSTOP variant
will
/CONT=3D00:00:05    stop scanning after first finding at least one
process
/DSTOP            with the selection criteri= a, and then finding none.
/DSTOP=3D           The default pause time between updates is 3
seconds.
/DSTOP=3D::1        A "=3D" without a time v= alue will set a time of 0
seconds.

/BELL             After finding at least one process in a continuous
display,
                  this qualif= ier (P2 to P8) causes a warning bell to
ring 4
                  times if no process is found, and 2 times if found
again.

/FIRST            This qualifier (P2 to P8) stops with the first
process
                  matching the search criteria.

/PAGE             This qualifier (P2 to P8) causes the output to be
paged.

/QUIET            This qualifier (P2 to P8) disables output. This
qualifier
                  also turns continuous display mode off.

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Named Parameters:
       This format can be used in place of any paramet= er P1 to P8

 PARAMETER-FORMAT      MEANING
    item=3Dvalue    equals
    item>value    greater than
    item<value    less than
    item>=3Dvalue   greater than or equal to
    item<=3Dvalue   less than or equal to
    item<>value   not equal to
    item><value   ANY one of a list must be true
    item=3D=3Dvalue   ALL of a list must be true

 ITEM can be one of:
    ACCOUNT, ACCNT; AUTHPRI, AUTH; CHECK; CURPRIV, CUR; GRP, GROUP;
HW=5FMODEL,
    HWMODEL, MODEL, MOD; HW=5FNAME, HW, HWNAME; JOBPRCCNT, JOBCN= T;
JOBTYPE,
    JOB, JOBTYP; MASTER=5FPID, MASTER; MEM, MEMBER, MBR, MEMB; MODE,
MOD;
    NODE=5FCSID, CSID; NODENAME, NODE; OWNER, OWN; PERCENT; PRCC= NT,
PROCCNT,
    COUNT; PRCNAM, PROC, PROCESS, PROCNAM; PRI, PRIO, PRIORITY; PRIB,
BASE;
    STATE; STS, STATUS; TERMINAL, TERM; UIC; USERNAME, USER; PID

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
 CHECK=3Dquota parameter:

 This qualifier can be used in place of any parameter from P1 to P8
 This causes Process=5FScan to examine a specified quota for an
inadequate
 value. Any quota ending in "LM" with a corresponding JPI Process
Context
 Variable ending in "CNT" can be specified. Only the "= =3D" operator
should be
 used with this parameter. Other operators are ignored. If no
operator or
 quota is specified, the default is "CHECK=3DPGFLQUOTA". Possible
quotas
 which may be checked are as follows:

 CHECK=3DBIOCNT   CHECK=3DBIOLM         &nbs= p;     CHECK=3DBYTCNT    CHECK=3DBYTLM
 CHECK=3DDIOCNT   CHECK=3DDIOLM         &nbs= p;     CHECK=3DENQCNT    CHECK=3DENQLM
 CHECK=3DFILCNT   CHECK=3DFILLM         &nbs= p;     CHECK=3DPRCCNT    CHECK=3DPRCLM
 CHECK=3DTQCNT    CHECK=3DTQLM                CHECK=3DPGFLQUOTA

 The PGFLQUOTA quota checks whether VIRTPEAK has a >=3D value.
 The PRCLM quota checks whether JOBPRCCNT or PRCCNT is a >=3D valu= e.
 All other "LM" quotas check if the corresponding "CNT= " quota equals
zero by
 default. With the PERCENT=3Dnn Qualifier, the processes which have <=3D
this
 percentage (0 to 100%) of the specified resource available are
selected.

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Process Context Variables:

ACCOUNT  account name of the process    DIOLM      direct I/O quota
limit
APTCNT   active page table count        DIRIO      direct I/O
operations
ASTACT   access modes with active ASTs  EFCS       LEF state, flags
0-31
ASTCNT   remaining AST quota            = ;EFCU       LEF state, flags
32-63
ASTEN    access modes with ASTs enabled EFWM       event flag wait
mask
ASTLM    AST limit quota                ENQCNT     remaining lock
req. quota
AUTHPRI  authorized base priority       ENQLM      lock request quota
AUTHPRIV authorized priviledges         FILCNT     remaining open
file quota
BIOCNT   remaining buffered I/O quota   FILLM      open file limit
quota
BIOLM    buffered I/O limit quota       FREP0VA    1st free page
address (P0)
BUFIO    buffered I/O operations        FREP= 1VA    1st free page
address (P1)
BYTCNT   remaining buff. I/O byte count FREPTECNT  # of free pages
for VM exp.
BYTLM    buffered I/O byte limit quota  GPGCNT     global page count
in WS
CLINAME  command language interpreter   GRP        group number from
UIC
CPULIM   CPU time limit                 IMAGE      active image file
name
CPUTIM   accumulated CPU Time           IMAGECOUNT # of images run by
process
CURPRIV  current priviledges            = ;IMAGNAME   dir. & image file
name
DFPFC    def. page fault cluster size   IMAGPRIV   installed image
priviledges
DFWSCNT  def. working set cluster size  JOBPRCCNT  # of subprocesses
this job
DIOCNT   remaining direct I/O quota     JOBTYPE    execution mode of
root proc

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Process Context Variables:(continued)

LAST=5FLOGIN=5FI   last interactive login   PID     &n= bsp;      process ID
number
LAST=5FLOGIN=5FN   last noninter. login     PPGCNT   &= nbsp;     # pages in WS
LOGIN=5FFAILURES # of login failures      PRCCNT   &nb= sp;     # subprocs of
this proc
LOGIN=5FFLAGS    login seq. LOGINOUT flgs PRCLM          job subprocess
quota
LOGINTIM       login time               PRCNAM         process name
MASTER=5FPID     master process ID #      PRI &nb= sp;          current
priority
MAXDETACH      max # detached processes PRIB           base priority
MAXJOBS        max # active processes   PROC=5FIN= DEX     process index
number
MEM            member number from UIC   PROCESS=5FRIGHTS process rights
MODE           process mode             PROCPRIV       default
priviledges
MSGMASK        default message mask     RIGHTSLIST     avail proc &
sys rights
NODE=5FCSID      VAXcluster node ID #     SHRFILLM       max # open
shared files
NODE=5FVERSION   VMS version number       SITESPEC &nb= sp;     per-process
site-spec #
NODENAME       Vaxcluster node name     STATE          current
process state
OWNER          PID of creator process   STS            current status
flags 1
PAGEFLTS       total # of page faults   STS2           current status
flags 2
PAGFILCNT      remain. page file quota  SWPFILLOC      swap file
location
PAGFILLOC      current page file assign SYSTEM=5FRIGHTS &nb= sp;system rights
PGFLQUOTA      paging file quota        = ;TABLENAME      file spec of
CLI
PHDFLAGS       process header flags

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
Process Context Variables:(continued)

TERMINAL       login terminal name (virtual terminal if enabled)
TMBU           termination mailbox unit number
TQCNT          remaining timer queue entry quota<= br> TQLM           process's limit on timer queue entries
TT=5FACCPORNAM   access port name - (termserver/port) or (src.node/us= r-
name)
TT=5FPHYDEVNAM   physical terminal name - if 0 then virt. term. is
disconnected
UAF=5FFLAGS      UAF flags from user/owner of process
UIC            user identification code
USERNAME       user name of process's owner
VIRTPEAK       virtual peak address size of process
VOLUMES        number of volumes currently mounted by process
WSAUTH         maximum authorized working set size
WSAUTHEXT      maximum authorized working set extent
WSEXTENT       current working set extent
WSPEAK         peak working set size
WSQUOTA        working set size quota
WSSIZE         current working set size
ALLIO          Direct IO + Bufferred IO (this is used for I/O Heading
values)

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
 Global Symbols:

 The following global symbols are updated at completion of the
process scan
 giving the job/process information of the last process found
matching
 the selection criteria. The /FIRST switch can be used to assign the
 attributes of the first process which is found to the symbols.

                    PS=5FCOUNT    The number of processes matching the
search
                                criteria. If PS is aborted, then the
count
                                is given as a negative value.
                    PS=5FALLIO    ALL I/O in pagelets (both direct and
buffered)
                    PS=5FCPUTIM   accumulated CPU TIMe
                    PS=5FIMAGE    full IMAGE filename or "IDLE"
                    PS=5FJOB      JOB type
                    PS=5FNODE     NODE name on which the process exists
                    PS=5FPAGEFLTS total number of PAGEFauLTS
                    PS=5FPID      Process IDentification number
(cluster unique)
                    PS=5FPRCNAM   PRoCess NAMe (node unique)
                    PS=5FPRI      current process PRIority
                    PS=5FSTATE    process STATE
                    PS=5FUSER     USERname

$ READ /PROMPT=3D"Press Enter to continue:" sys$command noop
$ ERASE
$ Type Sys$Input
 Examples:

$ @PROCESS=5FSCAN  CS*,LA*  STATE<>HIB /CONT

  This example gives continuous information about non-HIBernating
  processes having a process name beginning with 'CS' or 'LA'
  for the local node only. Screen updates occur every 3 seconds.

$ @PROCESS=5FSCAN  ""   LAGOSMAN   *   BATCH   ""   HIB   *WS*

  This example scans the entire cluster for processes
  in batch mode with the username LAGOSMAN and displays all
  working storage values for each process in the HIBernate state.

$ @PROCESS=5FSCAN  *   LAG*  CH07  3  LAGOS.EXE  *  PGFLQUOTA  VIRT*

  This example scans the Page File Quota and Virtual Peak
  values for all LOCAL processes that are on node CH07,
  having a username starting with 'LAG', and running LAGOS.EXE

$ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER)
$ exit
$ INFOEND:
$!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
$!
$ TRUE =3D 1
$ FALSE =3D 0
$!
$ c=5Fabort =3D FALSE
$ on error then goto abort=5Fc
$ on control=5Fy then goto abort=5Fc
$!
$ JPILIST1 =3D -
  "ACCOUNT,ALLIO,APTCNT,ASTACT,ASTCNT,ASTEN,ASTLM,AUTHPRI," + -
  "AUTHPRIV,BIOCNT,BIOLM,BUFIO,BYTCNT,BYTLM,CLINAME,CPULIM,CPUTI= M," +
-

"CURPRIV,DFPFC,DFWSCNT,DIOCNT,DIOLM,DIRIO,EFCS,EFCU,EFWM,ENQCNT,ENQLM,= "
+ -

"FILCNT,FILLM,FREP0VA,FREP1VA,FREPTECNT,GPGCNT,GRP,IMAGE,IMAGECOUNT,&q= uot;
+ -
  "IMAGNAME,IMAGPRIV,JOBPRCCNT,JOBTYPE,LAST=5FLOGIN=5FI,LAST=5FL= OGIN=5FN," +
-
  "LOGIN=5FFAILURES,LOGIN=5FFLAGS,LOGINTIM,MASTER=5FPID,MAXDETAC= H,MAXJOBS,"
+ -
  "MEM,MODE,MSGMASK,NODE=5FCSID,NODE=5FVERSION,NODENAME,OWNER,&q= uot;
$ JPILIST2 =3D -
  "PAGEFLTS,PAGFILCNT,PAGFILLOC,PGFLQUOTA,PHDFLAGS,PID,PPGCNT,&q= uot; + -
  "PRCCNT,PRCLM,PRCNAM,PRI,PRIB,PROC=5FINDEX,PROCESS=5FRIGHTS,&q= uot; + -
  "PROCPRIV,RIGHTSLIST,SHRFILLM,SITESPEC,STATE,STS,STS2," + -
  "SWPFILLOC,SYSTEM=5FRIGHTS,TABLENAME,TERMINAL,TIME,TMBU,TQCNT,= TQLM,"
+ -

"TT=5FACCPORNAM,TT=5FPHYDEVNAM,UAF=5FFLAGS,UIC,USERNAME,VIRTPEAK,VOLUM= ES," +
-
  "WSAUTH,WSAUTHEXT,WSEXTENT,WSPEAK,WSQUOTA,WSSIZE"
$!find current image name
$ proc =3D f$parse(f$getjpi ("","imagname"),,,"NAM= E")
$!
$ SAY =3D "WRITE SYS$OUTPUT"
$!
$!initialize terminal screen control symbols
$ ESC =3D ""
$ ENQ =3D ""
$ LF =3D ""
$ CR =3D ""
$ DCS =3D ""
$ ES =3D ""
$ EStoEND =3D ""
$ EStoHERE =3D ""
$ ESline =3D ""
$ ESlinetoend =3D ""
$ ESlinetohere =3D ""
$ BELL =3D ""
$ TOP =3D ""
$ SWSH =3D ""
$ DW*SH =3D ""
$ DHT =3D ""
$ DHB =3D ""
$ NORM =3D ""
$ BOLD =3D ""
$ UNDER =3D ""
$ BLINK =3D ""
$ INVERSE =3D ""
$ BOLDOFF =3D ""
$ UNDEROFF =3D ""
$ BLINKOFF =3D ""
$ INVERSEOFF =3D ""
$ ONEUP =3D  ""
$ NEXTLINE =3D  ""
$ CURSORON =3D ""
$ CURSOROFF =3D ""
$ ER*ASE =3D ""
$ if f$mode() .eqs. "BATCH" then goto skip=5Fterm=5Fcodes
$!
$!define terminal screen control symbols
$ ESC[0,8]=3D27
$ ENQ[0,8]=3D5
$ LF[0,8]=3D10
$ CR[0,8]=3D13
$ CSI :=3D "''ESC'["
$ DCS :=3D "''ESC'P"
$ ES :=3D "''ESC'[2J"
$ EStoEND :=3D "''ESC'[0J"
$ EStoHERE :=3D "''ESC'[1J"
$ ESline :=3D "''ESC'[2K"
$ ESlinetoend :=3D "''ESC'[0K"
$ ESlinetohere :=3D "''ESC'[1K"
$ TOP :=3D "''ESC'[H"
$ SWSH :=3D "''ESC'#5"
$ DW*SH :=3D "''ESC'#6"
$ DHT :=3D "''ESC'#3"
$ DHB :=3D "''ESC'#4"
$ NORM :=3D "''ESC'[m"
$ BOLD :=3D "''ESC'[1m"
$ UNDER :=3D "''ESC'[4m"
$ BLINK :=3D "''ESC'[5m"
$ INVERSE :=3D "''ESC'[7m"
$ BOLDOFF :=3D "''ESC'[22m"
$ UNDEROFF :=3D "''ESC'[24m"
$ BLINKOFF :=3D "''ESC'[25m"
$ INVERSEOFF :=3D "''ESC'[27m"
$ ONEUP :=3D  "''ESC'[1A"
$ NEXTLINE :=3D  "''LF'''CR'"
$ CURSORON:=3D "''CSI'?25h"             !shows cursor
$ CURSOROFF:=3D "''CSI'?25l"            !hides cursor
$!
$ skip=5Fterm=5Fcodes:
$!
$! initialize variables
$ ER*ASE :=3D WRITE SYS$OUTPUT ES,TOP
$ ERRMSG =3D ""
$ TERM=5FDEVICE =3D f$getdvi("TT","TT=5FPHYDEVNAM")
$ TERM=5FTYPE =3D f$extract(0,4,TERM=5FDEVICE)
$ TERM=5FWIDTH =3D F$getdvi("TT","DEVBUFSIZ")
$ TERM=5FHEIGHT =3D f$getdvi("TT","TT=5FPAGE")
$ CURRENT=5FTERM=5FHEIGHT =3D TERM=5FHEIGHT
$ JUMP =3D TERM=5FHEIGHT / 3
$ HEADER =3D 2
$ FOOTER =3D 1
$ JUMP=5FBUFFER =3D  JUMP + (JUMP/2) + HEADER + FOOTER
$ MAX=5FLINECOUNT =3D 42
$ MIN=5FLINECOUNT =3D 6
$ LINECOUNT =3D 0
$ PSCOUNT =3D 0
$ PERCENT =3D 0
$!
$ PS=5FCOUNT =3D=3D 0
$ PS=5FPID =3D=3D ""
$ PS=5FPRCNAM =3D=3D ""
$ PS=5FUSER =3D=3D ""
$ PS=5FNODE =3D=3D ""
$ PS=5FJOB =3D=3D  ""
$ PS=5FIMAGE =3D=3D ""
$ PS=5FSTATE =3D=3D ""
$ PS=5FPRI =3D=3D ""
$ PS=5FCPUTIM =3D=3D ""
$ PS=5FALLIO =3D=3D ""
$ PS=5FPAGEFLTS =3D=3D ""
$ PS=5FPGFLQUOTA =3D=3D "INVALID!"
$ PS=5FVIRTPEAK =3D=3D "INVALID!"
$ PS=5FTIME=3D"NOT=5FFOUND"
$ JPI=5FTIME=3D"NOT=5FFOUND"
$!
$ SYMBOLCNT =3D 0
$ DEFAULT=5FWAIT=5FTIME =3D "00:00:03.00"
$ DISPLAY=5FHEAD=5FONLY =3D FALSE
$ img =3D ""
$!
$  COMMAND=5FLINE =3D
P1+"=A7"+P2+"=A7"+P3+"=A7"+P4+"=A7"= +P5+"=A7"+P6+"=A7"+P7+"=A7"+P8+"=A7"= ;
$  PARSED=5FLINE =3D f$edit(COMMAND=5FLINE,"UPCASE,COLLAPSE,TRIM&= quot;)
$!
$ P1 =3D ""
$ P2 =3D ""
$ P3 =3D ""
$ P4 =3D ""
$ P5 =3D ""
$ P6 =3D ""
$ P7 =3D ""
$ P8 =3D ""
$ P9 =3D ""
$ P10 =3D ""
$!
$!---------------------------------------------------------
$!
$ SUBSTLOOP:
$ if f$locate("/",PARSED=5FLINE) .ne. f$length(PARSED=5FLINE)
$  then
$   PARSED=5FLINE =3D f$extract(0,f$locate("/",PARSED=5FLINE= ),PARSED=5FLINE) +
"=A7" + -
   f$extract(f$locate("/",PARSED=5FLINE)+1,f
$length(PARSED=5FLINE),PARSED=5FLINE)
$  else
$   goto SUBSTEND
$  endif
$  goto SUBSTLOOP
$!
$ SUBSTEND:
$!
$!---------------------------------------------------------
$!
$ PCOUNT =3D 0
$ PARSE=5FLINE:
$  PARAM =3D f$extract(0,f$locate("=A7",PARSED=5FLINE)+1,PAR= SED=5FLINE)
$  PCOUNT =3D PCOUNT + 1
$  P'PCOUNT' =3D PARAM - "=A7"
$  if PARAM .eqs. "" then PARAM =3D PARSED=5FLINE
$  PARSED=5FLINE =3D PARSED=5FLINE - PARAM
$  if f$length(PARSED=5FLINE) .gt. 0 then goto PARSE=5FLINE
$!
$!---------------------------------------------------------
$!
$ if f$locate(":",P3)  .eq. f$length(P3)-1 then -
    P3 =3D f$extract(0,f$locate(":",P3),P3)
$ if f$locate(":",P3)  .eq. f$length(P3)-1 then -
    P3 =3D f$extract(0,f$locate(":",P3),P3)
$ if P3 .eqs. "0" then P3 =3D "''f$trnlnm("SYS$NODE&quo= t;)'" - "::"
$!
$ if P1 .eqs. "." then P1 =3D f$extract(0,2,f$process()) + "= *"
$ if P2 .eqs. "." then P2 =3D f$getjpi("","USERNAM= E")
$ if P3 .eqs. "." then P3 =3D "''f$trnlnm("SYS$NODE&quo= t;)'" - "::"
$ if P4 .eqs. "." then P4 =3D "JOB=3DDETACHED"
$ if P6 .eqs. "." then P6 =3D  "STATE=3DHIB"
$!
$ if P1 .eqs. "=3D" then P1 =3D f$extract(0,2,f$process()) + &quo= t;*"
$ if P2 .eqs. "=3D" then P2 =3D f$getjpi("","USERN= AME")
$ if P3 .eqs. "=3D" then P3 =3D "''f$trnlnm("SYS$NODE&q= uot;)'" - "::"
$ if P4 .eqs. "=3D" then P4 =3D "JOB=3DDETACHED"
$ if P6 .eqs. "=3D" then P6 =3D  "STATE=3DHIB"
$!
$ if P1 .eqs. "<>" then P1 =3D "PROC<>''f$extrac= t(0,2,f$process())'" +
"*"
$ if P2 .eqs. "<>" then P2 =3D "USER<>''f$getjpi= ("","USERNAME")'"
$ if P3 .eqs. "<>" then P3 =3D "NODE<>''f$trnlnm= ("SYS$NODE")'" - "::"
$ if P4 .eqs. "<>" then P4 =3D "JOB<>DETACHED&qu= ot;
$ if P6 .eqs. "<>" then P6 =3D  "STATE<>HIB= "
$!
$ if (P5 .eqs. ".") .or. (P5 .eqs. "=3D")
$  then

$   P5 =3D f$parse(f$trnlnm("SYS$DISK"= ;),,,,"NO=5FCONCEAL")
$   P5 =3D  P5  - ".;" - "][" - "][= " - "><" - "><"
$   if f$locate("<",P5) .ne. f$length(P5)
$     then
$      P5 =3D f$extract(0,f$locate("<",P5),P5) + "[" + -
           f$extract(f$locate("<&quo= t;,P5)+1,f$length(P5),P5)
$     endif
$   if f$locate(">",P5) .ne. f$length(P5)
$     then
$      P5 =3D f$extract(0,f$locate(">",P5),P5) + "]" + -
           f$extract(f$locate(">&quo= t;,P5)+1,f$length(P5),P5)
$     endif
$   P5 =3D  P5 - "][" - "][" - "><= " - "><"
$   P5 =3D "IMAGE=3D''P5'"
$  endif
$ if P5 .eqs. "<>"
$  then
$   P5 =3D f$parse(f$trnlnm("SYS$DISK"),,,,"NO=5FCONCEA= L")
$   P5 =3D  P5  - ".;" - "][" - "][= " - "><" - "><"
$   if f$locate("<",P5) .ne. f$length(P5)
$     then
$      P5 =3D f$extract(0,f$locate("<",P5),P5) + "[" + -
           f$extract(f$locate("<&quo= t;,P5)+1,f$length(P5),P5)
$     endif
$   if f$locate(">",P5) .ne. f$length(P5)
$     then
$      P5 =3D f$extract(0,f$locate(">",P5),P5) + "]" + -
           f$extract(f$locate(">&quo= t;,P5)+1,f$length(P5),P5)
$     endif
$   P5 =3D  P5  - "][" - "][" - "&g= t;<" - "><"
$   P5 =3D "IMAGE<>''P5'"
$  endif
$!
$! initialize qualifier flags affecting scanning behavior
$ check=5Fquotas =3D FALSE       ! if TRUE means CHECK param= eter is being
used
$ display=5Fsymbols =3D FALSE    ! if TRUE then JPI=5F* symbol va= lues are
displayed
$ first=5Fdisplay =3D FALSE      ! if TRUE means to search o= nly for first
match
$ quiet=5Fdisplay =3D FALSE      ! if TRUE means do not disp= lay processes
found
$ reloop=5FOK =3D TRUE           ! if TRUE then co= ntinuous reloop thru JPI
context
$ continuous=5Fdisplay =3D FALSE ! if TRUE then display loops through JPI context
$ wait=5Fdisplay =3D FALSE       ! if TRUE then looping must pause at full
screen
$ down=5Fstop =3D FALSE          ! if TRUE then co= ntinuous display stops
when
$!                             up/down status changes
$!
$!check if a continuos display and wait time is desired
$ if (f$extract(0,4,P1) .eqs. "CONT") .OR. (f$extract(0,5,P1) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P1) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P1)+1,f$length(= P1),P1)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P1) .ne. f$length(= P1))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P1 =3D ""
$  endif
$ if (f$extract(0,4,P2) .eqs. "CONT") .OR. (f$extract(0,5,P2) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P2) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P2)+1,f$length(= P2),P2)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P2) .ne. f$length(= P2))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P2 =3D ""
$  endif
$ if (f$extract(0,4,P3) .eqs. "CONT") .OR. (f$extract(0,5,P3) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P3) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P3)+1,f$length(= P3),P3)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P3) .ne. f$length(= P3))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P3 =3D ""
$  endif
$ if (f$extract(0,4,P4) .eqs. "CONT") .OR. (f$extract(0,5,P4) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P4) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P4)+1,f$length(= P4),P4)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P4) .ne. f$length(= P4))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P4 =3D ""
$  endif
$ if (f$extract(0,4,P5) .eqs. "CONT") .OR. (f$extract(0,5,P5) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P5) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P5)+1,f$length(= P5),P5)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P5) .ne. f$length(= P5))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P5 =3D ""
$  endif
$ if (f$extract(0,4,P6) .eqs. "CONT") .OR. (f$extract(0,5,P6) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P6) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P6)+1,f$length(= P6),P6)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P6) .ne. f$length(= P6))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P6 =3D ""
$  endif
$ if (f$extract(0,4,P7) .eqs. "CONT") .OR. (f$extract(0,5,P7) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P7) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P7)+1,f$length(= P7),P7)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P7) .ne. f$length(= P7))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P7 =3D ""
$  endif
$ if (f$extract(0,4,P8) .eqs. "CONT") .OR. (f$extract(0,5,P8) eqs.
"DSTOP")
$  then
$   continuous=5Fdisplay =3D TRUE
$   if (f$extract(0,5,P8) .eqs. "DSTOP") then down=5Fstop =3D TRUE
$   wait=5Fdisplay =3D TRUE
$   wait=5Ftime =3D f$extract(f$locate("=3D",P8)+1,f$length(= P8),P8)
$   if wait=5Ftime .eqs. ""
$    then
$      if  (f$locate("=3D",P8) .ne. f$length(= P8))
$       then
$        wait=5Ftime =3D "00:00:00.00"
$       else
$        wait=5Ftime =3D default=5Fwait=5Ftime
$       endif
$     endif
$   P8 =3D ""
$  endif
$ if wait=5Fdisplay
$  then
$   wait=5Ftime =3D f$cvtime(wait=5Ftime,"DELTA")
$   if .not. $status then goto quitit
$  endif
$!
$!
$!check for explicit search qualifiers
$!
$!initialize variables
$ OP1 =3D ""
$ OP2 =3D ""
$ OP3 =3D ""
$ OP4 =3D ""
$ OP5 =3D ""
$ OP6 =3D ""
$ OP7 =3D ""
$ OP8 =3D ""
$ OP9 =3D ""
$ ITEM1 =3D ""
$ ITEM2 =3D ""
$ ITEM3 =3D ""
$ ITEM4 =3D ""
$ ITEM5 =3D ""
$ ITEM6 =3D ""
$ ITEM7 =3D ""
$ ITEM8 =3D ""
$ ITEM9 =3D ""
$ VAL1 =3D ""
$ VAL2 =3D ""
$ VAL3 =3D ""
$ VAL4 =3D ""
$ VAL5 =3D ""
$ VAL6 =3D ""
$ VAL7 =3D ""
$ VAL8 =3D ""
$ VAL9 =3D ""
$ Pdex =3D 0
$!
$ PdexLOOP1:
$ Pdex =3D Pdex + 1
$!
$ if Pdex .gt. 9 then goto PdexEND1
$!
$ if P'Pdex' .eqs. "CHECK" then P'Pdex' =3D "CHECK=3D"<= br> $ if P'Pdex' .eqs. "PERCENT" then P'Pdex' =3D "PERCENT=3D&qu= ot;
$!
$ if (f$locate("><",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "ANY"
$   ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pd= ex')
$   VAL'Pdex' =3D  f$extract(f$locate("<",P'Pdex')+1= ,f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$ if (f$locate("<>",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "NEQ"
$   ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pd= ex')
$   VAL'Pdex' =3D  f$extract(f$locate(">",P'Pdex')+1= ,f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$ if (f$locate("<=3D",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "LEQ"
$   ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pd= ex')
$   VAL'Pdex' =3D  f$extract(f$locate("=3D",P'Pdex')+1,= f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$ if (f$locate(">=3D",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "GEQ"
$   ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pd= ex')
$   VAL'Pdex' =3D  f$extract(f$locate("=3D",P'Pdex')+1,= f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$ if (f$locate("<",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "LSS"
$   ITEM'Pdex' =3D f$extract(0,f$locate("<",P'Pdex'),P'Pd= ex')
$   VAL'Pdex' =3D  f$extract(f$locate("<",P'Pdex')+1= ,f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$ if (f$locate(">",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "GTR"
$   ITEM'Pdex' =3D f$extract(0,f$locate(">",P'Pdex'),P'Pd= ex')
$   VAL'Pdex' =3D  f$extract(f$locate(">",P'Pdex')+1= ,f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$ if (f$locate("=3D=3D",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "ALL"
$   ITEM'Pdex' =3D f$extract(0,f$locate("=3D",P'Pdex'),P'Pde= x')
$   VAL'Pdex' =3D  f$extract(f$locate("=3D",P'Pdex')+2,= f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$ if (f$locate("=3D",P'Pdex') .ne. f$length(P'Pdex'))
$  then
$   OP'Pdex' =3D "EQL"
$   ITEM'Pdex' =3D f$extract(0,f$locate("=3D",P'Pdex'),P'Pde= x')
$   VAL'Pdex' =3D  f$extract(f$locate("=3D",P'Pdex')+1,= f
$length(P'Pdex'),P'Pdex')
$   P'Pdex' =3D ""
$  endif
$!
$  if ITEM'Pdex' .eqs. "CHECK"
$   then
$    check=5Fquotas =3D TRUE
$    display=5Fsymbols =3D TRUE
$    if VAL'Pdex' .eqs. "" then VAL'Pdex' =3D "PGF= LQUOTA"
$    check=5Fitem =3D VAL'Pdex'
$    check=5Fitem =3D check=5Fitem - "LM" - "CNT&q= uot;
$   endif
$!
$  if ITEM'Pdex' .eqs. "PERCENT"
$   then
$    if VAL'Pdex' .eqs. "" then VAL'Pdex' =3D 0
$    percent =3D VAL'Pdex'
$    if f$type(percent) .ne. "INTEGER"  then goto percenterr
$    if percent .gt. 100 then goto percenterr
$    if percent .lt. 0 then goto percenterr
$   endif
$!
$  if ITEM'Pdex' .eqs. "PROC" then ITEM'Pdex' =3D "PRCN= AM"
$  if ITEM'Pdex' .eqs. "PROCESS" then ITEM'Pdex' =3D "P= RCNAM"
$  if ITEM'Pdex' .eqs. "PROCNAM" then ITEM'Pdex' =3D "P= RCNAM"
$  if ITEM'Pdex' .eqs. "PRCNAM" then P1 =3D "*"
$!
$  if ITEM'Pdex' .eqs. "USER" then ITEM'Pdex' =3D "USER= NAME"
$  if ITEM'Pdex' .eqs. "USERNAME" then P2 =3D "*"<= br> $!
$  if ITEM'Pdex' .eqs. "NODE" then ITEM'Pdex' =3D "NODE= NAME"
$  if (ITEM'Pdex' .eqs. "NODENAME") .and. (OP'Pdex' .eqs. "EQL")
$     then
$      if  (Pdex .ne. 3)
$       then
$        P3 =3D VAL'Pdex'+",''P3'"
$       else
$        P3 =3D VAL'Pdex'
$       endif
$       OP'Pdex' =3D ""
$       ITEM'Pdex' =3D ""
$       VAL'Pdex' =3D ""
$     else
$      if ITEM'Pdex' .eqs. "NODENAME" then P3 =3D "CANCELLED"
$     endif
$!
$  if ITEM'Pdex' .eqs. "JOB" then ITEM'Pdex' =3D "JOBTY= PE"
$  if ITEM'Pdex' .eqs. "JOBTYP" then ITEM'Pdex' =3D "JO= BTYPE"
$  if ITEM'Pdex' .eqs. "JOBTYPE" then P4 =3D "*" $!
$  if ITEM'Pdex' .eqs. "STATE" then P6 =3D "*"
$!
$  if ITEM'Pdex' .eqs. "ACCNT" then ITEM'Pdex' =3D "ACC= OUNT"
$  if ITEM'Pdex' .eqs. "AUTH" then ITEM'Pdex' =3D "AUTH= PRI"
$  if ITEM'Pdex' .eqs. "CUR" then ITEM'Pdex' =3D "CURPR= IV"
$  if ITEM'Pdex' .eqs. "GROUP" then ITEM'Pdex' =3D "GRP= "
$  if ITEM'Pdex' .eqs. "HWMODEL" then ITEM'Pdex' =3D "H= W=5FMODEL"
$  if ITEM'Pdex' .eqs. "MODEL" then ITEM'Pdex' =3D "HW= =5FMODEL"
$  if ITEM'Pdex' .eqs. "MOD" then ITEM'Pdex' =3D "HW=5F= MODEL"
$  if ITEM'Pdex' .eqs. "HW" then ITEM'Pdex' =3D "HW=5FN= AME"
$  if ITEM'Pdex' .eqs. "HWNAME" then ITEM'Pdex' =3D "HW= =5FNAME"
$  if ITEM'Pdex' .eqs. "JOBCNT" then ITEM'Pdex' =3D "JO= BPRCCNT"
$  if ITEM'Pdex' .eqs. "MASTER" then ITEM'Pdex' =3D "MA= STER=5FPID"
$  if ITEM'Pdex' .eqs. "MBR" then ITEM'Pdex' =3D "MEM&q= uot;
$  if ITEM'Pdex' .eqs. "MEMB" then ITEM'Pdex' =3D "MEM&= quot;
$  if ITEM'Pdex' .eqs. "MEMBER" then ITEM'Pdex' =3D "ME= M"
$  if ITEM'Pdex' .eqs. "MOD" then ITEM'Pdex' =3D "MODE&= quot;
$  if ITEM'Pdex' .eqs. "CSID" then ITEM'Pdex' =3D "NODE= =5FCSID"
$  if ITEM'Pdex' .eqs. "OWN" then ITEM'Pdex' =3D "OWNER= "
$  if ITEM'Pdex' .eqs. "PROCCNT" then ITEM'Pdex' =3D "P= RCCNT"
$  if ITEM'Pdex' .eqs. "COUNT" then ITEM'Pdex' =3D "PRC= CNT"
$  if ITEM'Pdex' .eqs. "PRIO" then ITEM'Pdex' =3D "PRI&= quot;
$  if ITEM'Pdex' .eqs. "PRIORITY" then ITEM'Pdex' =3D "= PRI"
$  if ITEM'Pdex' .eqs. "BASE" then ITEM'Pdex' =3D "PRIB= "
$  if ITEM'Pdex' .eqs. "STATUS" then ITEM'Pdex' =3D "ST= S"
$  if ITEM'Pdex' .eqs. "TERM" then ITEM'Pdex' =3D "TERM= INAL"
$  if ITEM'Pdex' .eqs. "UIC" then ITEM'Pdex' =3D "UIC&q= uot;
$  if ITEM'Pdex' .eqs. "PID"
$     then
$       P1 =3D VAL'Pdex'
$       OP'Pdex' =3D ""
$       ITEM'Pdex' =3D ""
$       VAL'Pdex' =3D ""
$     endif
$  if ITEM'Pdex' .eqs. "IMAG" then ITEM'Pdex' =3D "IMAG= E"
$  if ITEM'Pdex' .eqs. "IMAGNAM" then ITEM'Pdex' =3D "I= MAGE"
$  if ITEM'Pdex' .eqs. "IMAGNAME" then ITEM'Pdex' =3D "= IMAGE"
$  if (ITEM'Pdex' .eqs. "IMAGE")
$    then
$    if (OP'Pdex' .nes. "NEQ")
$     then
$       P5 =3D "ISDEF" + VAL'Pdex'
$       img =3D  VAL'Pdex'
$       OP'Pdex' =3D ""
$       ITEM'Pdex' =3D ""
$       VAL'Pdex' =3D ""
$     else
$       P5 =3D "NOTDEF" + VAL'Pdex'
$       img =3D  VAL'Pdex'
$       OP'Pdex' =3D ""
$       ITEM'Pdex' =3D ""
$       VAL'Pdex' =3D ""
$     endif
$    endif
$!
$ goto PdexLOOP1
$ PdexEND1:
$!
$!check if a quiet display is desired
$   if (f$extract(0,5,P1) .eqs. "QUIET")
$     then
$     P1 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$   if (f$extract(0,5,P2) .eqs. "QUIET")
$    then
$     P2 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$   if (f$extract(0,5,P3) .eqs. "QUIET")
$    then
$     P3 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$   if (f$extract(0,5,P4) .eqs. "QUIET")
$    then
$     P4 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$   if (f$extract(0,5,P5) .eqs. "QUIET")
$    then
$     P5 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$   if (f$extract(0,5,P6) .eqs. "QUIET")
$    then
$     P6 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$   if (f$extract(0,5,P7) .eqs. "QUIET")
$    then
$     P7 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$   if (f$extract(0,5,P8) .eqs. "QUIET")
$    then
$     P8 =3D ""
$     quiet=5Fdisplay =3D TRUE
$     continuous=5Fdisplay =3D FALSE
$    endif
$!
$  if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE NL: SYS$OUT= PUT
$!
$!check if paging is desired
$ page=5Fdisplay =3D FALSE
$ if (f$extract(0,4,P1) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P1 =3D ""
$  endif
$ if (f$extract(0,4,P2) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P2 =3D ""
$  endif
$ if (f$extract(0,4,P3) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P3 =3D ""
$  endif
$ if (f$extract(0,4,P4) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P4 =3D ""
$  endif
$ if (f$extract(0,4,P5) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P5 =3D ""
$  endif
$ if (f$extract(0,4,P6) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P6 =3D ""
$  endif
$ if (f$extract(0,4,P7) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P7 =3D ""
$  endif
$ if (f$extract(0,4,P8) .eqs. "PAGE")
$  then
$   page=5Fdisplay =3D TRUE
$   P8 =3D ""
$  endif
$!
$!check if warning BELL is desired
$   if ((f$extract(0,4,P1) .eqs. "BELL") .AND. (f$mode() nes.
"BATCH"))
$     then
$     P1 =3D ""
$     BELL[0,8] =3D 7
$    endif
$   if (f$extract(0,4,P2) .eqs. "BELL")
$    then
$     P2 =3D ""
$     BELL[0,8] =3D 7
$    endif
$   if (f$extract(0,4,P3) .eqs. "BELL")
$    then
$     P3 =3D ""
$     BELL[0,8] =3D 7
$    endif
$   if (f$extract(0,4,P4) .eqs. "BELL")
$    then
$     P4 =3D ""
$     BELL[0,8] =3D 7
$    endif
$   if (f$extract(0,4,P5) .eqs. "BELL")
$    then
$     P5 =3D ""
$     BELL[0,8] =3D 7
$    endif
$   if (f$extract(0,4,P6) .eqs. "BELL")
$    then
$     P6 =3D ""
$     BELL[0,8] =3D 7
$    endif
$   if (f$extract(0,4,P7) .eqs. "BELL")
$    then
$     P7 =3D ""
$     BELL[0,8] =3D 7
$    endif
$   if (f$extract(0,4,P8) .eqs. "BELL")
$    then
$     P8 =3D ""
$     BELL[0,8] =3D 7
$    endif
$!
$!check if only first process is desired
$   if (f$extract(0,5,P1) .eqs. "FIRST")
$     then
$     P1 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$   if (f$extract(0,5,P2) .eqs. "FIRST")
$    then
$     P2 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$   if (f$extract(0,5,P3) .eqs. "FIRST")
$    then
$     P3 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$   if (f$extract(0,5,P4) .eqs. "FIRST")
$    then
$     P4 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$   if (f$extract(0,5,P5) .eqs. "FIRST")
$    then
$     P5 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$   if (f$extract(0,5,P6) .eqs. "FIRST")
$    then
$     P6 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$   if (f$extract(0,5,P7) .eqs. "FIRST")
$    then
$     P7 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$   if (f$extract(0,5,P8) .eqs. "FIRST")
$    then
$     P8 =3D ""
$     first=5Fdisplay =3D TRUE
$    endif
$!

$! go to help
$ if P1 .eqs. "?" then GOTO INFO
$!
$! set flag for extended JPI=5F Symbol output
$ if (P7 + P8 .nes. "") then display=5Fsymbols =3D TRUE
$!
$! assign parameters to variables
$ procname =3D f$extract(0,1,P1)
$ if f$type(procname) .eqs. "INTEGER"
$  then
$   procname =3D f$edit(f$getjpi(P1,"prcnam"),"TRIM&quo= t;)
$  else
$   procname =3D P1
$ endif
$ user =3D P2
$ node =3D P3
$ jobtyp =3D P4
$!
$ image =3D P5
$ if img .eqs. ""
$   then
$     img =3D image
$   endif
$ if img .eqs. "" then img =3D "*"
$ imgprt =3D "i=3D''img'"
$!
$ state =3D P6
$ if P6 .eqs. "" then state =3D "*"
$ down=5Fcount =3D 0
$ up=5Fcount =3D 0
$!
$ if procname .eqs. "" then procname =3D "*"
$ if procname .eqs. "all" then procname =3D "*"
$ if procname .eqs. "ALL" then procname =3D "*"
$ if user .eqs. "all" then user =3D "*"
$ if user .eqs. "ALL" then user =3D "*"
$ if user .eqs. "" then user =3D "*"
$ if .not. (F$PRIVILEGE("WORLD") .or. F$PRIVILEGE("GROUP&quo= t;))
$   then
$    user =3D "''f$getjpi("","USERNAME")= '"
$   endif
$ if (F$PRIVILEGE("GROUP") .and. -
    (.not. F$PRIVILEGE("WORLD"))  .and. (user eqs. "*"))
$   then
$    usr =3D "''f$user()'"
$    if f$locate(",",usr) .ne. f$length(usr) then -
       usr =3D "''f$extract(0,f$locate(",&qu= ot;,usr)+1,usr)'" + "*]"
$   else
$    usr =3D user
$   endif
$!
$! if node parameter is empty, then find current node
$ if node .eqs. "" then node =3D f$trnlnm("SYS$NODE") $ pos =3D f$locate(":",node)
$ node =3D f$extract(0,pos,node)
$!
$ isIDLE =3D FALSE
$ isNOTIDLE =3D FALSE
$ if (f$extract(0,4,image) .eqs. "IDLE") .or.  -
    (f$extract(0,4,image) .eqs. "idle")
$    then
$      image =3D ""
$      isIDLE =3D TRUE
$      imgprt =3D "i=3DIDLE"
$    endif
$ if (f$extract(0,4,image) .eqs. "BUSY") .or.  -
    (f$extract(0,4,image) .eqs. "busy")
$    then
$      image =3D ""
$      isNOTIDLE =3D TRUE
$      imgprt =3D "i=3DBUSY"
$    endif
$!
$ isDEFAULT =3D FALSE
$ isNOTDEFAULT =3D FALSE
$ if (f$extract(0,5,image) .eqs. "ISDEF") .or.  -
    (f$extract(0,5,image) .eqs. "isdef")
$    then
$      image =3D f$extract(5,f$length(image),image)
$      isNOTIDLE =3D TRUE
$      isDEFAULT =3D TRUE
$      imgprt =3D "i=3DDEFAULT"
$    endif
$ if (f$extract(0,6,image) .eqs. "NOTDEF") .or.  -
    (f$extract(0,6,image) .eqs. "notdef")
$    then
$      image =3D f$extract(6,f$length(image),image)
$      isNOTIDLE =3D TRUE
$      isNOTDEFAULT =3D TRUE
$      imgprt =3D "i<>DEFAULT"
$    endif
$ if image .eqs. "*" then imgprt =3D "i=3D*"
$ if image .eqs. "*" then image =3D ""
$!
$!convert jobtype parameter to full jobtype name
$ if jobtyp .eqs. "" then jobtyp =3D "*"
$ if jobtyp .eqs. "0" then jobtyp =3D "DETACHED"
$ if jobtyp .eqs. "1" then jobtyp =3D "NETWORK"
$ if jobtyp .eqs. "2" then jobtyp =3D "BATCH"
$ if jobtyp .eqs. "3" then jobtyp =3D "LOCAL"
$ if jobtyp .eqs. "4" then jobtyp =3D "DIALUP"
$ if jobtyp .eqs. "5" then jobtyp =3D "REMOTE"
$!
$ LINE=5FPARAMETERS :=3D -
  "p=3D''procname' u=3D''usr' n=3D''node' j=3D''jobtyp' ''imgprt= ' s=3D''state'
" -
  "''P7' ''P8' ''P9'"
$!
$ LPdex =3D 1
$ LPLOOP:
$ LPITEM =3D  ITEM'LPdex'
$ REDUCE =3D "USERNAME,AUTHPRI,TERMINAL"
$ if f$locate(LPITEM,REDUCE) .nes. f$length(REDUCE) then -
  LPITEM =3D  f$extract(0,4,LPITEM)
$ if LPITEM .eqs. "MASTER=5FPID" then  LPITEM =3D  &quo= t;MASTER"
$ if LPITEM .eqs. "ACCOUNT" then  LPITEM =3D  "ACC= NT"
$ IF OP'LPdex' .eqs. "ANY" then LPOP =3D "><"
$ IF OP'LPdex' .eqs. "NEQ" then LPOP =3D "<>"
$ IF OP'LPdex' .eqs. "LEQ" then LPOP =3D "<=3D"
$ IF OP'LPdex' .eqs. "GEQ" then LPOP =3D ">=3D"
$ IF OP'LPdex' .eqs. "LSS" then LPOP =3D "<"
$ IF OP'LPdex' .eqs. "GTR" then LPOP =3D ">"
$ IF OP'LPdex' .eqs. "ALL" then LPOP =3D "=3D=3D"
$ IF OP'LPdex' .eqs. "EQL" then LPOP =3D "=3D"
$ IF OP'LPdex' .eqs. "" then LPOP =3D ""
$ LPVAR =3D  LPITEM + LPOP + VAL'LPdex'
$ if LPVAR .nes. "" then LINE=5FPARAMETERS :=3D "''LINE=5FPA= RAMETERS'
''LPVAR'"
$ LPdex =3D LPdex + 1
$ if LPdex .lt. 9 then goto LPLOOP
$ LINE=5FPARAMETERS :=3D "''f$edit(LINE=5FPARAMETERS,"COMPRESS,TR= IM")'"
$!
$ write sys$output ESline," "
$ if continuous=5Fdisplay then SAY ES
$ if .not. continuous=5Fdisplay then TOP =3D NEXTLINE
$!
$ if P7 .nes. ""
$   then
$       param =3D P7
$       gosub paramcount
$   endif
$!
$ if P8 .nes. ""
$   then
$       param =3D P8
$       gosub paramcount
$   endif
$!
$ if check=5Fquotas
$   then
$     if (check=5Fitem .eqs. "PRC")
$       then
$         symbolcnt =3D symbolcnt + 3
$         goto ifcheck1
$       endif
$     if (check=5Fitem .eqs. "PGFLQUOTA")
$       then
$         symbolcnt =3D symbolcnt + 2
$         goto ifcheck1
$       endif
$     param =3D check=5Fitem+"CNT"
$     gosub paramcount
$     param =3D check=5Fitem+"LM"
$     gosub paramcount
$   endif
$  ifcheck1:
$!
$ if display=5Fsymbols .and. page=5Fdisplay
$   then
$     TOP =3D NEXTLINE
$     current=5Fterm=5Fheight =3D max=5Flinecount
$     if f$mode() .nes. "BATCH" then set term /
page=3D'current=5Fterm=5Fheight'
$     er
$   endif
$!
$ STARTIT:
$!define process search context
$!
$ Pdex =3D 0
$ PdexLOOP2:
$  Pdex =3D Pdex + 1
$  if Pdex .gt. 9 then goto PdexEND2
$  if ITEM'Pdex' .eqs. "CHECK" then goto PdexLOOP2
$  if ITEM'Pdex' .eqs. "PERCENT" then goto PdexLOOP2
$  if OP'Pdex' .nes. "" then -
  a =3D f$context("process",proc=5Fcontext,ITEM'Pdex',VAL'P= dex',OP'Pdex')
$  if .not. $STATUS then goto abortit
$ goto PdexLOOP2
$ PdexEND2:
$!
$ if node .nes. "CANCELLED" then -
 a =3D f$context("process",proc=5Fcontext,"nodename&qu= ot;,node,"eql")
$ if jobtyp .nes. "*" then -
 a =3D f$context("process",proc=5Fcontext,"jobtype&quo= t;,jobtyp,"eql")
$ if state .nes. "*" then -
 a =3D f$context("process",proc=5Fcontext,"state"= ,state,"eql")
$ if user .nes. "*" then -
 a =3D f$context("process",proc=5Fcontext,"username&qu= ot;,user,"eql")
$ if procname .nes. "*" then -
 a =3D f$context("process",proc=5Fcontext,"prcnam"= ;,procname,"eql")
$!
$!take first step into process search context
$ pid =3D f$pid(proc=5Fcontext)
$ if pid .eqs. ""
$  then
$   if up=5Fcount .gt. down=5Fcount
$     then
$       SAY ONEUP,BELL,BELL,BELL,BELL
$       down=5Fcount =3D down=5Fcount + 1
$       if down=5Fstop then goto abortit
$     endif
$   goto notfound
$  else
$   if up=5Fcount .eq. down=5Fcount
$     then
$       IF up=5Fcount .gt. 0 then SAY ONEUP,BELL,BELL
$       up=5Fcount =3D up=5Fcount + 1
$     endif
$  endif
$!
$ gosub displayheader
$!
$ context=5Floop:
$!    get process information...
$ on error then goto param=5Ferr
$!
$! data for the /continuous default output
$     JPI=5FPID =3D pid
$     JPI=5FTIME=3Df$time()
$     JPI=5FNODENAME=3Df$edit(f$getjpi(pid,"nodename"),= "TRIM")
$     JPI=5FPRCNAM=3Df$edit(f$getjpi(pid,"prcnam"),&quo= t;TRIM")
$     NODE=5FPROC =3D F$FAO("!(#AS) !(#AS)",6,JPI=5FNOD= ENAME,15,JPI=5FPRCNAM)
$     JPI=5FUSERNAME=3Df$edit(f$getjpi(pid,"username"),= "TRIM")
$     JPI=5FSTATE=3Df$getjpi(pid,"STATE")
$     JPI=5FPRI=3Df$string(f$getjpi(pid,"PRI"))
$     JPI=5FJOBTYPE=3Df$getjpi(pid,"JOBTYPE")
$     JPI=5FIMAGNAME=3Df$getjpi(pid,"imagname")
$     JPI=5FIMAGNAME=3DJPI=5FIMAGNAME - "][" - "][= "
$     JPI=5FDIRIO=3Df$string(f$getjpi(pid,"DIRIO"))
$     JPI=5FBUFIO=3Df$string(f$getjpi(pid,"BUFIO"))
$     JPI=5FALLIO=3D F$INTEGER(JPI=5FDIRIO) + F$INTEGER(JPI=5FBUF= IO)
$     JPI=5FALLIO=3D "''JPI=5FALLIO'"
$     JPI=5FPAGEFLTS=3Df$string(f$getjpi(pid,"PAGEFLTS"= ))
$     JPI=5FCPUTIM=3Df$string(f$getjpi(pid,"CPUTIM")) $     CPUHRS =3D JPI=5FCPUTIM / 360000
$     CPUMIN =3D (JPI=5FCPUTIM - (CPUHRS * 360000)) / 6000
$     CPUSEC =3D (JPI=5FCPUTIM - (CPUHRS * 360000) - (CPUMIN * 60= 00)) /100
$     CPUMILL =3D (JPI=5FCPUTIM - (CPUHRS * 360000) - (CPUMIN * 6= 000) -
               - (CPUSEC * 100)) $     if f$length(CPUHRS) .lt. 2 then CPUHRS =3D " " + "''CPUHRS'"
$     if f$length(CPUMIN) .lt. 2 then CPUMIN =3D "0" + "''CPUMIN'"
$     if f$length(CPUSEC) .lt. 2 then CPUSEC =3D "0" + "''CPUSEC'"
$     if f$length(CPUMILL) .lt. 2 then CPUMILL =3D "0" + "''CPUMILL'"
$     JPI=5FCPUTIM =3D "''CPUHRS'" + ":" + &q= uot;" + "''CPUMIN'" + ":" -
                  + "''C= PUSEC'" + "." + "''CPUMILL'"
$     JPI=5FIMAGE=3D -
       "''f$parse(f$getjpi (pid,"imagname&qu= ot;),,,"NAME")'" + -
       "''f$parse(f$getjpi (pid,"imagname&qu= ot;),,,"TYPE")'"

$  JPI=5FIMAGE =3D  JPI=5FIMAGE  - "][" - "][= " - "><" - "><"
$  if f$locate("<",JPI=5FIMAGE) .ne. f$length(JPI=5FIMAGE= )
$     then
$      JPI=5FIMAGE =3D f$extract(0,f$locate("<"= ,JPI=5FIMAGE),JPI=5FIMAGE) +
"[" + -
           f$extract(f$locate("<&quo= t;,JPI=5FIMAGE)+1,f
$length(JPI=5FIMAGE),JPI=5FIMAGE)
$     endif
$  if f$locate(">",JPI=5FIMAGE) .ne. f$length(JPI=5FIMAGE= )
$     then
$      JPI=5FIMAGE =3D f$extract(0,f$locate(">"= ,JPI=5FIMAGE),JPI=5FIMAGE) +
"]" + -
           f$extract(f$locate(">&quo= t;,JPI=5FIMAGE)+1,f
$length(JPI=5FIMAGE),JPI=5FIMAGE)
$     endif
$  JPI=5FIMAGE =3D  JPI=5FIMAGE - "][" - "]["= - "><" - "><"
$  if jpi=5Fimagname .eqs. "" then jpi=5Fimage =3D "---= idle---"
$  if ((isIDLE) .and. (JPI=5FIMAGE .nes. "---idle---")) then goto skipit
$  if ((isNOTIDLE) .and. (JPI=5FIMAGE .eqs. "---idle---")) then goto
skipit
$  if  (image .nes. "")
$   then
$    if (isNOTDEFAULT)
$      then
$       if F$LOCATE(image,JPI=5FIMAGNAME) .ne. -
        F$LENGTH(JPI=5FIMAGNAME) then goto skipit
$      else
$       if F$LOCATE(image,JPI=5FIMAGNAME) .eq. -
          F$LENGTH(JPI=5FIMAGNAME) then goto skip= it
$      endif
$   endif
$     NODE=5FUSER=5FPROC =3D F$FAO("!(#AS) !(#AS) !(#AS)&quo= t;,6,JPI=5FNODENAME, -
        12,JPI=5FUSERNAME,15,JPI=5FPRCNAM)
$!
$     if JPI=5FJOBTYPE .eqs. "0" then JPI=5FJOBTYPE =3D= "DETACHED"
$     if JPI=5FJOBTYPE .eqs. "1" then JPI=5FJOBTYPE =3D= "NETWORK"
$     if JPI=5FJOBTYPE .eqs. "2" then JPI=5FJOBTYPE =3D= "BATCH"
$     if JPI=5FJOBTYPE .eqs. "3" then JPI=5FJOBTYPE =3D= "LOCAL"
$     if JPI=5FJOBTYPE .eqs. "4" then JPI=5FJOBTYPE =3D= "DIALUP"
$     if JPI=5FJOBTYPE .eqs. "5" then JPI=5FJOBTYPE =3D= "REMOTE"
$!
$     if (.not. display=5Fsymbols) .and. continuous=5Fdisplay then goto
showit
$!
$! additional variables which can be checked if requested
$ if display=5Fsymbols
$   then
$     JPI=5FACCOUNT=3Df$getjpi(pid,"ACCOUNT")
$     JPI=5FAPTCNT=3Df$getjpi(pid,"APTCNT")
$     JPI=5FASTACT=3Df$getjpi(pid,"ASTACT")
$     JPI=5FASTCNT=3Df$getjpi(pid,"ASTCNT")
$     JPI=5FASTEN=3Df$getjpi(pid,"ASTEN")
$     JPI=5FASTLM=3Df$getjpi(pid,"ASTLM")
$     JPI=5FAUTHPRI=3Df$getjpi(pid,"AUTHPRI")
$     JPI=5FAUTHPRIV=3Df$getjpi(pid,"AUTHPRIV")
$     JPI=5FBIOCNT=3Df$getjpi(pid,"BIOCNT")
$     JPI=5FBIOLM=3Df$getjpi(pid,"BIOLM")
$     JPI=5FBYTCNT=3Df$getjpi(pid,"BYTCNT")
$     JPI=5FBYTLM=3Df$getjpi(pid,"BYTLM")
$     JPI=5FCLINAME=3Df$getjpi(pid,"CLINAME")
$     JPI=5FCPULIM=3Df$getjpi(pid,"CPULIM")
$     JPI=5FCURPRIV=3Df$getjpi(pid,"CURPRIV")
$     JPI=5FDFPFC=3Df$getjpi(pid,"DFPFC")
$     JPI=5FDFWSCNT=3Df$getjpi(pid,"DFWSCNT")
$     JPI=5FDIOCNT=3Df$getjpi(pid,"DIOCNT")
$     JPI=5FDIOLM=3Df$getjpi(pid,"DIOLM")
$     JPI=5FEFCS=3Df$getjpi(pid,"EFCS")
$     JPI=5FEFCU=3Df$getjpi(pid,"EFCU")
$     JPI=5FEFWM=3Df$getjpi(pid,"EFWM")
$     JPI=5FENQCNT=3Df$getjpi(pid,"ENQCNT")
$     JPI=5FENQLM=3Df$getjpi(pid,"ENQLM")
$     JPI=5FFILCNT=3Df$getjpi(pid,"FILCNT")
$     JPI=5FFILLM=3Df$getjpi(pid,"FILLM")
$     JPI=5FFREP0VA=3Df$getjpi(pid,"FREP0VA")
$     JPI=5FFREP1VA=3Df$getjpi(pid,"FREP1VA")
$     JPI=5FFREPTECNT=3Df$getjpi(pid,"FREPTECNT")
$     JPI=5FGPGCNT=3Df$getjpi(pid,"GPGCNT")
$     JPI=5FGRP=3Df$getjpi(pid,"GRP")
$     JPI=5FIMAGECOUNT=3Df$getjpi(pid,"IMAGECOUNT")
$     JPI=5FIMAGPRIV=3Df$getjpi(pid,"IMAGPRIV")
$     JPI=5FJOBPRCCNT=3Df$getjpi(pid,"JOBPRCCNT")
$     JPI=5FLAST=5FLOGIN=5FI=3Df$getjpi(pid,"LAST=5FLOGIN=5F= I")
$     JPI=5FLAST=5FLOGIN=5FN=3Df$getjpi(pid,"LAST=5FLOGIN=5F= N")
$     JPI=5FLOGIN=5FFAILURES=3Df$getjpi(pid,"LOGIN=5FFAILURE= S")
$     JPI=5FLOGIN=5FFLAGS=3Df$getjpi(pid,"LOGIN=5FFLAGS"= ;)
$     JPI=5FLOGINTIM=3Df$getjpi(pid,"LOGINTIM")
$     JPI=5FMASTER=5FPID=3Df$getjpi(pid,"MASTER=5FPID")=
$     JPI=5FMAXDETACH=3Df$getjpi(pid,"MAXDETACH")
$     JPI=5FMAXJOBS=3Df$getjpi(pid,"MAXJOBS")
$     JPI=5FMEM=3Df$getjpi(pid,"MEM")
$     JPI=5FMODE=3Df$getjpi(pid,"MODE")
$     JPI=5FMSGMASK=3Df$getjpi(pid,"MSGMASK")
$     JPI=5FNODE=5FCSID=3Df$edit(f$getjpi(pid,"NODE=5FCSID&q= uot;),"TRIM")
$     JPI=5FNODE=5FVERSION=3Df$edit(f$getjpi(pid,"NODE=5FVER= SION"),"TRIM")
$     JPI=5FOWNER=3Df$edit(f$getjpi(pid,"OWNER"),"= TRIM")
$     JPI=5FPAGFILCNT=3Df$getjpi(pid,"PAGFILCNT")
$     JPI=5FPAGFILLOC=3Df$getjpi(pid,"PAGFILLOC")
$     JPI=5FPGFLQUOTA=3Df$getjpi(pid,"PGFLQUOTA")
$     JPI=5FPHDFLAGS=3Df$getjpi(pid,"PHDFLAGS")
$     JPI=5FPPGCNT=3Df$getjpi(pid,"PPGCNT")
$     JPI=5FPRCCNT=3Df$getjpi(pid,"PRCCNT")
$     JPI=5FPRCLM=3Df$getjpi(pid,"PRCLM")
$     JPI=5FPRIB=3Df$getjpi(pid,"PRIB")
$     JPI=5FPROC=5FINDEX=3Df$getjpi(pid,"PROC=5FINDEX")=
$     JPI=5FPROCPRIV=3Df$getjpi(pid,"PROCPRIV")
$     JPI=5FSHRFILLM=3Df$getjpi(pid,"SHRFILLM")
$     JPI=5FSITESPEC=3Df$getjpi(pid,"SITESPEC")
$     JPI=5FSTS=3Df$getjpi(pid,"STS")
$     JPI=5FSTS2=3Df$getjpi(pid,"STS2")
$     JPI=5FSWPFILLOC=3Df$getjpi(pid,"SWPFILLOC")
$     JPI=5FTABLENAME=3Df$getjpi(pid,"TABLENAME")
$     JPI=5FTERMINAL=3Df$getjpi(pid,"TERMINAL")
$     JPI=5FTMBU=3Df$getjpi(pid,"TMBU")
$     JPI=5FTQCNT=3Df$getjpi(pid,"TQCNT")
$     JPI=5FTQLM=3Df$getjpi(pid,"TQLM")
$     JPI=5FTT=5FACCPORNAM=3Df$getjpi(pid,"TT=5FACCPORNAM&qu= ot;)
$     JPI=5FTT=5FPHYDEVNAM=3Df$getjpi(pid,"TT=5FPHYDEVNAM&qu= ot;)
$     JPI=5FUAF=5FFLAGS=3Df$getjpi(pid,"UAF=5FFLAGS") $     JPI=5FUIC=3Df$getjpi(pid,"UIC")
$     JPI=5FVIRTPEAK=3Df$getjpi(pid,"VIRTPEAK")
$     JPI=5FVOLUMES=3Df$getjpi(pid,"VOLUMES")
$     JPI=5FWSAUTH=3Df$getjpi(pid,"WSAUTH")
$     JPI=5FWSAUTHEXT=3Df$getjpi(pid,"WSAUTHEXT")
$     JPI=5FWSEXTENT=3Df$getjpi(pid,"WSEXTENT")
$     JPI=5FWSPEAK=3Df$getjpi(pid,"WSPEAK")
$     JPI=5FWSQUOTA=3Df$getjpi(pid,"WSQUOTA")
$     JPI=5FWSSIZE=3Df$getjpi(pid,"WSSIZE")
$!
$! these variables performed last, since they are most likely to fail
$     JPI=5FSYSTEM=5FRIGHTS=3Df$getjpi(pid,"SYSTEM=5FRIGHTS&= quot;)
$     JPI=5FPROCESS=5FRIGHTS=3Df$getjpi(pid,"PROCESS=5FRIGHT= S")
$     JPI=5FRIGHTSLIST=3Df$getjpi(pid,"RIGHTSLIST")
$!
$ endif !***if (display=5Fsymbols)***
$!
$ if check=5Fquotas
$ then
$  if JPI=5FPRCNAM .eqs. "SWAPPER" then goto skipit
$  if check=5Fitem .eqs. "PGFLQUOTA"
$     then
$      if JPI=5FVIRTPEAK * 100 .lt. JPI=5FPGFLQUOTA * (100-p= ercent)
$       then
$        goto skipit
$       elseif
$        goto showit
$       endif
$     endif
$  if check=5Fitem .eqs. "PRC"
$     then
$      if ((JPI=5FJOBPRCCNT * 100) .lt. (JPI=5FPRCLM * (100-=
percent))) .and. -
         ((JPI=5FPRCCNT * 100)    .lt. (JPI=5FPRCLM * (100-percent)))
$       then
$        goto skipit
$       elseif
$        goto showit
$       endif
$     endif
$  if JPI=5F'check=5Fitem'CNT*100 .gt. JPI=5F'check=5Fitem'CNT*percent= then
goto SKIPIT
$ endif
$!
$ goto showit
$ param=5Ferr:
$ say "''Blink' Error! during a context variable scan of process" + -
 " ''jpi=5Fprcnam' on node ''jpi=5Fnodename' ''Norm'"
$ on error then goto abortit
$!
$ showit:
$ linecount =3D linecount + symbolcnt + 1
$ PSCOUNT =3D PSCOUNT + 1
$!
$! check whether the bottom of screen has been reached
$ if ((LINECOUNT + HEADER + FOOTER) .gt. current=5Fterm=5Fheight) .or. -
      page=5Fdisplay
$  then
$   TOP =3D NEXTLINE
$   if continuous=5Fdisplay .and. (current=5Fterm=5Fheight .ge.
max=5Flinecount) -
          then page=5Fdisplay =3D TRUE
$  endif
$!
$ if ((LINECOUNT + HEADER + FOOTER) .ge. current=5Fterm=5Fheight)
$   then
$     if continuous=5Fdisplay
$      then
$       if page=5Fdisplay
$        then
$         READ /TIME=5FOUT=3D3/ERROR=3Daskend sys$comma= nd askanswer /PROMPT=3D
-
  "''ESline'''CURSOROFF'''INVERSE'Pausing
00:00:03.00''INVERSEOFF'''ONEUP'"
$         READ sys$command askanswer /PROMPT=3D -
  "''NEXTLINE'''ESline'''INVERSE'Waiting for a
<Return>''INVERSEOFF'''ONEUP'"
$        askend:
$         write sys$output ESline,CURSORON,"Contin= uing=3D=3D>"
$         linecount =3D 0
$         display=5Fhead=5Fonly =3D TRUE
$        else
$         if (current=5Fterm=5Fheight .lt. max=5Flineco= unt)
$          then
$           current=5Fterm=5Fheight =3D LINECOUNT + JUMP
$           if f$mode() .nes. "BATCH" then -
                                 SET TERM /PAGE=3D'current= =5Fterm=5Fheight'
$          endif
$        endif
$      else
$       if page=5Fdisplay
$        then
$         if f$mode() .nes. "BATCH" then read -
          /prompt=3D"''BOLD'Press ENTER to continue''NORM'" sys$command
noop
$         display=5Fhead=5Fonly =3D TRUE
$         linecount =3D 0
$        endif
$      endif
$   endif
$!
$! Check if there will be a process context variable dump
$ if display=5Fsymbols
$  then
$   if linecount .eq. 0 then display=5Fhead=5Fonly =3D TRUE
$   if (.not. continuous=5Fdisplay) then display=5Fhead=5Fonly =3D TRU= E
$  endif
$!
$! output extra header if requested
$  if display=5Fhead=5Fonly
$   then
$    gosub displayheader
$   endif
$!
$ if display=5Fsymbols
$  then
$   write sys$output ESline, -
     "---------------------------------------" + -
     "---------------------------------------"
$   linecount =3D linecount + 1
$  endif
$!
$ !output detail lines
$ if TERM=5FWIDTH .ge. 132
$ then
$  write sys$output ESline, -
   F$FAO("!(#AS) !(#AS) !(#AS) !(#AS)", -
   35,node=5Fuser=5Fproc,8,jpi=5Fpid, -
   8,jpi=5Fjobtype,5,jpi=5Fstate), -
   F$FAO(" !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)", -
   2,jpi=5Fpri,12,jpi=5Fcputim,9,jpi=5Fallio,8,jpi=5Fpageflts,30= ,jpi=5Fimage)
$ else
$  if continuous=5Fdisplay
$   then
$      write sys$output ESline, -
      F$FAO("!(#AS) !(#AS) !(#AS)!(#AS)!(#AS)!(#AS)!(#= AS)", -
       22,node=5Fproc,2,jpi=5Fpri,5,jpi=5Fstate, -
       12,jpi=5Fcputim,9,jpi=5Fallio,8,jpi=5Fpageflts,= 20,jpi=5Fimage)
$   else
$    write sys$output ESline, -
     F$FAO("!(#AS) !(#AS) !(#AS) !(#AS) !(#AS)", -
     35,node=5Fuser=5Fproc,8,jpi=5Fpid, -
     8,jpi=5Fjobtype,5,jpi=5Fstate,20,jpi=5Fimage)
$   endif
$ endif
$!
$     if P7 .nes. ""
$       then
$         if P7 .eqs. "ALL"
$            then
$               show symbol JPI=5F*
$            else
$               show symbol JPI=5F'P7' $            endif
$       endif
$!
$     if P8 .nes. ""
$       then
$         if P8 .eqs. "ALL"
$            then
$               show symbol JPI=5F*
$            else
$               show symbol JPI=5F'P8' $            endif
$       endif
$!
$     if check=5Fquotas
$       then
$        if check=5Fitem .eqs. "PRC"
$          then
$            show symbol JPI=5FPRCCNT
$            show symbol JPI=5FJOBPRCCNT
$            show symbol JPI=5FPRCLM
$            goto ifcheck2
$          endif
$        if check=5Fitem .eqs. "PGFLQUOTA"
$          then
$            show symbol JPI=5FPGFLQUOTA
$            show symbol JPI=5FVIRTPEAK
$            goto ifcheck2
$          endif
$         show symbol JPI=5F'check=5Fitem'CNT
$         show symbol JPI=5F'check=5Fitem'LM
$       endif
$      ifcheck2:
$!
$    if first=5Fdisplay then goto endit
$!
$ SKIPIT:
$    pid =3D f$pid(proc=5Fcontext)
$    if pid .eqs. "" then goto endit
$    goto context=5Floop
$!
$!
$ ENDIT:
$     if f$type(proc=5Fcontext) .eqs. "PROCESS=5FCONTEXT&quo= t; then -
       pid =3D f$context("process",proc=5Fco= ntext,"cancel")
$!
$ proc =3D f$parse(f$environment("procedure"),,,"name",= )
$ if display=5Fsymbols
$  then
$   write sys$output ESline, -
      "---------------------------------------" + -
      "---------------------------------------" $   linecount =3D linecount + 1
$  endif
$ if wait=5Fdisplay
$ then
$   write sys$output ESline,CURSOROFF, -
    F$FAO("!(#AS)!(#UB)  !(#AS)!(#UB)  !(#AS) !(#AS) !(#AS)", -
    14,"''BOLD'Found:''NORM' ", -
    4,PSCOUNT, -
    17,"''BOLD'DownCount:''NORM'", -
    3,down=5Fcount, -
    12,"''BOLD'Time:''NORM'", -
    8,F$EXTRACT(12,8,F$TIME()), -
    33,"''BOLD'  WaitDelta:''NORM' ''wait=5Ftime'"= ;),EStoEND,ONEUP
$ else
$   if continuous=5Fdisplay
$    then
$     write sys$output ESline,CURSOROFF, -
      F$FAO("!(#AS)!(#UB)  !(#AS)!(#UB)  !(#= AS) !(#AS)", -

       14,"''BOLD'Found:''N= ORM' ", -
      4,PSCOUNT, -
      17,"''BOLD'DownCount:''NORM'", -
      3,down=5Fcount, -
      12,"''BOLD'Time:''NORM'", -
      8,F$EXTRACT(12,8,F$TIME())),EStoEND
$    else
$     write sys$output ESline, -
      F$FAO("!(#AS)!(#UB)  !(#AS) !(#AS)", -
      14,"''BOLD'Found:''NORM' ", -
      4,PSCOUNT, -
      12,"''BOLD'Time:''NORM'", -
      8,F$EXTRACT(12,8,F$TIME()))
$    endif
$ endif
$ if (current=5Fterm=5Fheight - jump .ge. TERM=5FHEIGHT ) .and. -
    (current=5Fterm=5Fheight - jump=5Fbuffer .ge.  PSCOUNT)= .and. -
     continuous=5Fdisplay .and. (.not. display=5Fsymbols) $   then
$     current=5Fterm=5Fheight =3D current=5Fterm=5Fheight - jump<= br> $     if f$mode() .nes. "BATCH" then SET TERM /
PAGE=3D'current=5Fterm=5Fheight'
$   endif
$ PS=5FCOUNT =3D=3D PSCOUNT
$ if PS=5FCOUNT .gt. 0
$  then
$       PS=5FPID =3D=3D JPI=5FPID
$       PS=5FPRCNAM =3D=3D JPI=5FPRCNAM
$       PS=5FUSER =3D=3D JPI=5FUSERNAME
$       PS=5FNODE =3D=3D JPI=5FNODENAME
$       PS=5FJOB =3D=3D  JPI=5FJOBTYPE
$       PS=5FIMAGE =3D=3D JPI=5FIMAGNAME
$       if PS=5FIMAGE .eqs. "" then PS=5FIMAGE =3D= =3D "IDLE"
$       PS=5FSTATE =3D=3D JPI=5FSTATE
$       PS=5FPRI =3D=3D JPI=5FPRI
$       PS=5FCPUTIM =3D=3D JPI=5FCPUTIM
$       PS=5FTIME =3D=3D JPI=5FTIME
$       PS=5FALLIO =3D=3D JPI=5FALLIO
$       PS=5FPAGEFLTS =3D=3D JPI=5FPAGEFLTS
$       if (check=5Fquotas .OR. display=5Fsymbols)
$        then
$         PS=5FPGFLQUOTA =3D=3D JPI=5FPGFLQUOTA
$         PS=5FVIRTPEAK =3D=3D JPI=5FVIRTPEAK
$        endif
$  endif
$!
$ if (.NOT. reloop=5FOK) then goto abortit
$ if (first=5Fdisplay) .AND. (PSCOUNT .GE. 1) then goto abortit
$ PSCOUNT =3D 0
$ LINECOUNT =3D 0
$ if wait=5Fdisplay then wait 'wait=5Ftime'
$ if continuous=5Fdisplay .AND. (.NOT. first=5Fdisplay) then goto startit $!
$ if display=5Fsymbols .and. page=5Fdisplay
$  then
$    read/prompt=3D"''BOLD'Press ENTER to continue:''NORM'&q= uot; sys$command
noop
$    write sys$output ESline,"[procedure ''proc' completed]&= quot;
$  endif
$ if f$mode() .nes. "BATCH" then SET TERM/PAGE=3D'TERM=5FHEIGHT'<= br> $ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER)
$ if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE TT: SYS$OUTPUT
$ exit
$!
$!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
$!
$ NOTFOUND:
$ PS=5FCOUNT =3D=3D PSCOUNT
$     if f$type(proc=5Fcontext) .eqs. "PROCESS=5FCONTEXT&quo= t; then -
       pid =3D f$context("process",proc=5Fco= ntext,"cancel")
$!
$ proc =3D f$parse(f$environment("procedure"),,,"name",= )
$ gosub displayheader
$ write sys$output ESline, -
    "Could not find a process matching your specification!&= quot;
$ SAY EStoEND,ONEUP
$ if wait=5Fdisplay
$  then
$   write sys$output ESline, -
    F$FAO("!(#AS)!(#UB)  !(#AS)!(#UB)  !(#AS) !(#AS) !(#AS)", -
    14,"''BOLD'Found:''NORM' ", -
    4,PSCOUNT, -
    17,"''BOLD'DownCount:''NORM'", -
    3,down=5Fcount, -
    12,"''BOLD'Time:''NORM'", -
    8,F$EXTRACT(12,8,F$TIME()), -
    33,"''BOLD'  WaitDelta:''NORM' ''wait=5Ftime'"= ;)
$   wait 'wait=5Ftime'
$  else
$   if continuous=5Fdisplay
$    then
$     write sys$output ESline, -
      F$FAO("!(#AS)!(#UB)  !(#AS)!(#UB)  !(#= AS) !(#AS)", -
      14,"''BOLD'Found:''NORM' ", -
      4,PSCOUNT, -
      17,"''BOLD'DownCount:''NORM'", -
      3,down=5Fcount, -
      12,"''BOLD'Time:''NORM'", -
      8,F$EXTRACT(12,8,F$TIME()))
$    else
$     write sys$output ESline, -
      F$FAO("!(#AS)!(#UB)  !(#AS) !(#AS)", -
      14,"''BOLD'Found:''NORM' ", -
      4,PSCOUNT, -
      12,"''BOLD'Time:''NORM'", -
      8,F$EXTRACT(12,8,F$TIME()))
$    endif
$  endif
$ if (.NOT. reloop=5FOK) then goto abortit
$ if continuous=5Fdisplay then goto startit
$ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER)
$ if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE TT: SYS$OUTPUT
$ exit
$!
$!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
$!
$ PERCENTERR:
$   errmsg =3D "%PS-E-PRCNT, Error! - Percent value not within 0 to 100
range!"
$ goto abortit
$!
$ ABORT=5FC:
$  C=5FABORT =3D TRUE
$ ABORTIT:
$ PS=5FCOUNT =3D=3D 0 - PSCOUNT
$!
$     if f$type(proc=5Fcontext) .eqs. "PROCESS=5FCONTEXT&quo= t; then -
       pid =3D f$context("process",proc=5Fco= ntext,"cancel")
$!
$ if continuous=5Fdisplay then SAY EStoEND
$ proc =3D f$parse(f$environment("procedure"),,,"name",= )
$ if quiet=5Fdisplay .eq. 1 then ASSIGN/SUPERVISOR=5FMODE TT: SYS$OUTPUT
$ if C=5FABORT
$   then
$     write sys$output ESline,"Procedure ''proc' Aborted.&qu= ot;,CURSORON
$   else
$     write sys$output ESline,"Procedure ''proc' Finished.&q= uot;,CURSORON
$   endif
$ quitit:
$ if f$mode() .nes. "BATCH" then SET TERM/PAGE=3D'TERM=5FHEIGHT'<= br> $ if errmsg .nes. "" then say errmsg
$ TEMP =3D F$VERIFY(PROC=5FVER, IMAGE=5FVER)
$ exit
$!
$!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
$!
$ PARAMCOUNT:
$     index =3D 0
$     PARAM =3D "." + PARAM - "*" - "*&q= uot;
$     searchloop1:
$       JPIELEMENT =3D "." + f$element(index,"= ;,",JPILIST1)
$       if JPIELEMENT .eqs. ".," then goto endsear= ch1
$       if f$locate(PARAM,JPIELEMENT) .ne. f$length(JPIELEME= NT) then -
           symbolcnt =3D symbolcnt + 1
$       index=3D index + 1
$       goto searchloop1
$     endsearch1:
$     index =3D 0
$     searchloop2:
$       JPIELEMENT =3D "." + f$element(index,"= ;,",JPILIST2)
$       if JPIELEMENT .eqs. ".," then goto endsear= ch2
$       if f$locate(PARAM,JPIELEMENT) .ne. f$length(JPIELEME= NT) then -
           symbolcnt =3D symbolcnt + 1
$       index=3D index + 1
$       goto searchloop2
$     endsearch2:
$     RETURN
$!
$!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
$!
$ DISPLAYHEADER:
$!output header for default display
$ if continuous=5Fdisplay
$ then
$  if TERM=5FWIDTH .lt. 132
$  then
$   if (.not. display=5Fhead=5Fonly) then write sys$output
TOP,ESline,CURSORON, -
    BOLD,BLINK,"Scanning:",NORM,F$FAO(" !(#AS)&qu= ot;,70,LINE=5FPARAMETERS)
$   write sys$output ESline, -
   F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !
(#AS)''NORM'", -
   6,"Node",14,"ProcessName",3,"Pri&quo= t;,5,"State",10,"CPUTime", -
   16,"I/O      PgFlts ",20,"Image= ")
$  else
$   if (.not. display=5Fhead=5Fonly) then write sys$output
TOP,ESline,CURSORON, -
    BOLD,BLINK,"Scanning:",NORM,F$FAO(" !(#AS)&qu= ot;,122,LINE=5FPARAMETERS)
$   write sys$output ESline, -
   F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)'= 'NORM'", -
   6,"Node",12,"Username",15,"ProcessNa= me",8,"Pid",8,"Jobtype",
5,"State"), -
   F$FAO("''BOLD' !(#AS) !(#AS)  !(#AS) !(#AS)''NORM'&= quot;, -
   3,"Pri",10,"CPUTime",18,"I/O       PgFlts ",30,"Image")
$  endif
$!  if display=5Fhead=5Fonly then linecount =3D linecount + 1
$ else
$  if (.not. display=5Fsymbols) .or. (linecount .le. 1)
$  then
$   if TERM=5FWIDTH .lt. 132
$   then
$    if (.not. display=5Fhead=5Fonly) then write sys$output TOP,E= Sline, -
     BOLD,INVERSE,"Scan:",NORM,F$FAO(" !(#AS= )",70,LINE=5FPARAMETERS)
$    write sys$output ESline, -
    F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !
(#AS)''NORM'", -
    6,"Node",12,"Username",15,"ProcessN= ame",8,"Pid",8,"Jobtype",
5,"State", -
    5,"Image")
$   else
$    if (.not. display=5Fhead=5Fonly) then write sys$output TOP,E= Sline, -
    BOLD,INVERSE,"Scan:",NORM,F$FAO(" !(#AS)"= ;,122,LINE=5FPARAMETERS)
$    write sys$output ESline, -
    F$FAO("''BOLD'!(#AS) !(#AS) !(#AS) !(#AS) !(#AS) !(#AS)= ''NORM'",
-
    6,"Node",12,"Username",15,"ProcessN= ame",8,"Pid",8,"Jobtype",
5,"State"), -
    F$FAO("''BOLD' !(#AS) !(#AS)  !(#AS) !(#AS) ''NORM= '", -
    3,"Pri",10,"CPUTime",18,"I/O       PgFlts ",30,"Image")
$   endif
$!   if display=5Fhead=5Fonly then linecount =3D linecount + 1
$  endif
$ endif
$ display=5Fhead=5Fonly =3D FALSE
$ RETURN
$!
$!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


--=_alternative 005F51D285257375_=-- ------------------------------ Date: Mon, 15 Oct 2007 12:54:05 -0500 From: Ron Johnson Subject: Re: PROCESS_SCAN.COM (or an example of what DCL can do) Message-ID: <1PNQi.340984$dA7.267881@newsfe16.lga> On 10/15/07 10:59, Keith Cayemberg wrote: > Here one more try... > > > $ proc_ver = F$ENVIRONMENT("VERIFY_PROCEDURE") > $ image_ver = F$ENVIRONMENT("VERIFY_IMAGE") > $! set noverify > $ goto INFOEND > $! > ========================================================================== > $! > $ info: > $ ERASE > $ Type Sys$Input > > PROCEDURE: PROCESS_SCAN.COM > AUTHOR: Keith Cayemberg > DATE: original version written sometime in the mid 1980's > > DESCRIPTION: > > This procedure provides a means to scan the JPI process context > variables > of other user's processes on the same node or cluster. Depending on [snip] Sadly, there was serious line wrapping. -- Ron Johnson, Jr. Jefferson LA USA Give a man a fish, and he eats for a day. Hit him with a fish, and he goes away for good! ------------------------------ Date: Mon, 15 Oct 2007 06:26:14 -0700 From: "Tom Linden" Subject: Re: SAMBA/CIFS (Was:Re: Bigger isn't always better!) Message-ID: On Sun, 14 Oct 2007 09:38:29 -0700, John E. Malmberg wrote: > Jan-Erik Söderholm wrote: >> bradhamilton wrote: >> >>> Folks, >>> >>> Please consider continuing to share your experiences involving >>> upgrading from SAMBA 2.2.8 or migrating from AS to CIFS. I had a bad >>> experience attempting to upgrade from 2.2.8 to an earlier iteration of >>> CIFS last year, and have been looking for others who have made a >>> successful transition to attempt to learn from their experiences. >>> Thanks! >> FWIW, I was at the "VMS Tech Update" in Stockholm/Sweden >> last week. One of the sessions was an update on CIFS run >> by Jim Janetos "OpenVMS Base Operating System Lab Manager". >> In case the presentation might include something "new", I've >> put a copy on my site : http://www.jescab.se/upload/cifs.pdf >> During Jim's presentation someone from the last row did a >> comment that some guys at the Technical highschool in >> Stockholm had made a VMS port of SAMBA with full cluster >> support quite some years ago, which seemed to surpriced >> Jim quite a lot... :-) :-) > > The term "Cluster support" as has been much misinterpreted by many > people. > > From the Advanced Server point of view, "Cluster Support" means that > the Microsoft style file locking works on the entire cluster, and that > there is a cluster wide file cache. > > As of January 2007, I was totally unaware of any public Samba for VMS > port that was properly supporting the Microsoft style file locking on a > single node. In most cases, either RMS locking or no locking were being > used. With no locking, there is a high risk of corruption if multiple > clients modified the same file, and with RMS locking, many simultaneous > locking modes did did not work. > > In August of 2006 I finally got the SAMBA locking test to pass on VMS, > and got the locking working for accessing the local user/password tdb. > > As I left the project shortly after that, and have not looked at the any > of the downloads, I do not know if any of that has been integrated into > the field test kits. > > The VMS ports of SAMBA that I have seen have significant functionality > removed as compared to the UNIX versions. > > IIRC: fixing them requires using the OpenLDAP client library instead of > the one in VMS, and exporting "public" some "private" routines in > Kerberos, and OpenSSL. There are servers available, such as http://www.csparks.com/CygwinNFS/index.xhtml but no readily available clients. I would think it fairly straight-forward to port a unix nfs client to cygwin. This should then give full nfs symmetry with VMS. I haven't had a pressing need to do so since I get pretty much the (for me) needed functionality using WASD. > > -John > wb8tyw@qsl.network > Personal Opinion Only -- PL/I for OpenVMS www.kednos.com ------------------------------ Date: Mon, 15 Oct 2007 12:47:33 -0500 From: Ron Johnson Subject: Re: SAMBA/CIFS (Was:Re: Bigger isn't always better!) Message-ID: On 10/13/07 12:46, bradhamilton wrote: > VAXman- @SendSpamHere.ORG wrote: >> In article <1192292586.516288.78220@t8g2000prg.googlegroups.com>, Neil >> Rieck writes: > [...] >>> Thanks for sharing this. While I don't think your problem will affect >>> me (but then again you never know) I am currently preparing for an >>> upgrade from OpenVMS-8.2 to OpenVMS-8.3 just so we can use the new HP >>> version of CIFS (a.k.a. SAMBA) >> >> FWIW, the impetus behind the upgrade WAS to use CIFS/SAMBA. It turns >> out that SAMBA was grossly inadequate for the job compared to an older >> PathWorks version the site was running. Fortunately, Advanced Server >> V7.2-B (?IIRC) was available to fill that void. There were numerous >> buggers in the AS V7.2-B that were uncovered (I wrote here about the >> PCB$V_NODELET bit being set on the PWRK$LMSRV causing _more_ than its >> fair share of unpleasantness.) but the HP folks did fix those issues. >> (I believe the PCB$V_NODELET is still set though.) >> >> One of the people at this customer's site opened a text document on a >> Weendoze PeeCee with whatever app that they had used before and SAMBA >> presented a gobbledegook of run-on lines devoid of record breaks. I >> would check out SAMBA carefully before putting it into production. I >> have it installed here and try to use it with OS X. I can read files >> from a SAMBA served disk but trying to store a file on the SAMBA disk >> is impossible. I have NFS to fall back upon so it is not of any real >> concern to me but IMHO SAMBA is not ready for prime-time yet. YMMV. >> > > Folks, > > Please consider continuing to share your experiences involving upgrading > from SAMBA 2.2.8 or migrating from AS to CIFS. I had a bad experience > attempting to upgrade from 2.2.8 to an earlier iteration of CIFS last > year, and have been looking for others who have made a successful > transition to attempt to learn from their experiences. Thanks! 2.2.8????????? That's *ancient*. It was released 4.5 years ago. Even v2.2.12, the last of the v2.2 series, was release 3 years ago. The 3.0.x series was first released in Sept 2003, and is now up to v3.0.26a. -- Ron Johnson, Jr. Jefferson LA USA Give a man a fish, and he eats for a day. Hit him with a fish, and he goes away for good! ------------------------------ Date: Mon, 15 Oct 2007 02:47:56 -0700 From: IanMiller Subject: Re: SRVMISMATCH error fix available Message-ID: <1192441676.196582.317710@q3g2000prf.googlegroups.com> On a cluster with Alpha V8.3, V7.3-2 I64 V8.3 VAX V7.3 I installed the patches on the V8.3 nodes I'm still getting %MONITOR-E-SRVMISMATCH, MONITOR server on remote node is an incompatible version If I do MONITOR CLUSTER on the V8.3 notes. If I do MON CLUSTER on the V7.3-2 node I get no errors but the CPU busy for the two V8.3 is shown as a very large number (e.g 6564487 ) ------------------------------ Date: Mon, 15 Oct 2007 10:05:12 GMT From: =?ISO-8859-1?Q?Jan-Erik_S=F6derholm?= Subject: Re: SRVMISMATCH error fix available Message-ID: IanMiller wrote: > On a cluster with > Alpha V8.3, V7.3-2 > I64 V8.3 > VAX V7.3 > > I installed the patches on the V8.3 nodes > > I'm still getting > %MONITOR-E-SRVMISMATCH, MONITOR server on remote node is an > incompatible version > > If I do MONITOR CLUSTER on the V8.3 notes. If I do MON CLUSTER on the > V7.3-2 node I get no errors but the CPU busy for the two V8.3 is shown > as a very large number (e.g 6564487 ) > > > Mixed I64/VAX clusters aren't supported, are they ? Jan-Erik. ------------------------------ Date: Mon, 15 Oct 2007 03:51:32 -0700 From: IanMiller Subject: Re: SRVMISMATCH error fix available Message-ID: <1192445492.379551.106510@z24g2000prh.googlegroups.com> On Oct 15, 11:05 am, Jan-Erik S=F6derholm wrote: > > Mixed I64/VAX clusters aren't supported, are they ? > > Jan-Erik. For migration purposes they may be. This cluster is being used for porting work. ------------------------------ Date: Mon, 15 Oct 2007 04:07:24 -0700 From: Volker Halle Subject: Re: SRVMISMATCH error fix available Message-ID: <1192446444.730080.181330@i13g2000prf.googlegroups.com> Ian, did you try MONI CLUSTER/NODE=(nodea,nodeb,...) to determine, which remote node is triggering the error ? Volker. ------------------------------ Date: Mon, 15 Oct 2007 11:30:28 GMT From: =?ISO-8859-1?Q?Jan-Erik_S=F6derholm?= Subject: Re: SRVMISMATCH error fix available Message-ID: IanMiller wrote: > On Oct 15, 11:05 am, Jan-Erik Söderholm > wrote: >> Mixed I64/VAX clusters aren't supported, are they ? >> >> Jan-Erik. > > For migration purposes they may be. > This cluster is being used for porting work. > > Does that make it a supported cluster configuration ? If so, I'm sorry, I must have missed that. Jan-Erik. ------------------------------ Date: Mon, 15 Oct 2007 06:41:07 -0700 From: IanMiller Subject: Re: SRVMISMATCH error fix available Message-ID: <1192455667.731797.295280@q3g2000prf.googlegroups.com> On Oct 15, 12:07 pm, Volker Halle wrote: > Ian, > > did you try MONI CLUSTER/NODE=(nodea,nodeb,...) to determine, which > remote node is triggering the error ? > > Volker. Its the V7.3-2 and V7.3 systems that cause the error. ------------------------------ Date: Mon, 15 Oct 2007 06:43:09 -0700 From: IanMiller Subject: Re: SRVMISMATCH error fix available Message-ID: <1192455789.805930.122420@e9g2000prf.googlegroups.com> On Oct 15, 12:30 pm, Jan-Erik S=F6derholm wrote: > IanMiller wrote: > > On Oct 15, 11:05 am, Jan-Erik S=F6derholm > > wrote: > >> Mixed I64/VAX clusters aren't supported, are they ? > > >> Jan-Erik. > > > For migration purposes they may be. > > > This cluster is being used for porting work. > > > > Does that make it a supported cluster configuration ? > If so, I'm sorry, I must have missed that. > > Jan-Erik. There is a comment in the docs about VAX & I64 clustered being supported for migration purposes. I don't suppose having thee architectures and four versions of VMS in the cluster is supported but it does work :-) ------------------------------ Date: Mon, 15 Oct 2007 16:46:47 +0000 (UTC) From: helbig@astro.multiCLOTHESvax.de (Phillip Helbig---remove CLOTHES to reply) Subject: Re: SRVMISMATCH error fix available Message-ID: In article <1192445492.379551.106510@z24g2000prh.googlegroups.com>, IanMiller writes: > On Oct 15, 11:05 am, Jan-Erik S=F6derholm > wrote: > > > > Mixed I64/VAX clusters aren't supported, are they ? > > > > Jan-Erik. > > For migration purposes they may be. This cluster is being used for > porting work. I'm pretty sure they're not---not even for migration. ------------------------------ Date: Mon, 15 Oct 2007 18:55:50 +1000 From: "O'Brien Paddy" Subject: RE: still not convinced global warming a hoax? Message-ID: <0A7046B0A95F2B41B3712F0C5FD1CDC303BC77@ex-tg2-pr.corporate.transgrid.local> This is a multi-part message in MIME format. ------_=_NextPart_001_01C80F09.2F729204 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable -----Original Message----- From: Richard B. Gilbert [mailto:rgilbert88@comcast.net] Sent: Mon 10/15/2007 2:12 PM To: Info-VAX@Mvb.Saic.Com Subject: Re: still not convinced global warming a hoax? JF Mezei wrote: > Neil Rieck wrote: >=20 >> Some scientists predicted that the long sought after "North West >> Passage" would be permanently open sometime before 2015. Guess what? >> It opened last month. >=20 >=20 > And this could have huge financial implications. >=20 > Panana just undertook a huge financial investment/gamble to widen the=20 > Panama canal to handle today's large ships. Northwest Passage could=20 > eliminate the need for the Panama canal at least during summer because=20 > it is a MUCH shorter shipping distance between Asia and eastern americas= =20 > and europe. >=20 > And lowering shipping costs could make asian products even cheaper. It=20 > would also reduce traffic at west coast USA/Canada ports as well as=20 > railway traffic. >=20 > There are also large implications for Canada, but because they involve=20 > the USA not respecting our borders, I can't discuss it without AEF=20 > accusing me of hating. american citizens. Why do you care what AEF thinks or says? ******** "says" -- For his knowledge of VMS. I just want to add my defense of a contributor from whom I have learnt a lot. Particularly his comments a while ago about the=20 ampersand. Though I will not use TO.COM and relatives from the Freeware CD= ,=20 I do read them for insights into VMS. I do agree with your possible implication that on OT topics he can often be belligerent. This to another contributor (going back to Compuserve days) whose=20 knowledge I have always read with interest. Regards, Paddy P.S. Again apologies if the format is wrong -- out of my control. *********************************************************************** Please consider the environment before printing this email. "This electronic message and any attachments may contain privileged and confidential information intended only for the use of the=20 addressees named above. If you are not the intended recipient of=20 this email, please delete the message and any attachment and advise the sender. You are hereby notified that any use, dissemination,=20 distribution, reproduction of this email is prohibited. If you have received the email in error, please notify TransGrid=20 immediately. Any views expressed in this email are those of the=20 individual sender except where the sender expressly and with=20 authority states them to be the views of TransGrid. TransGrid uses virus-scanning software but excludes any liability for viruses contained in any attachment." *********************************************************************** ------_=_NextPart_001_01C80F09.2F729204 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable RE: still not convinced global warming a hoax?

-----Original Message-----
From: Richard B. Gilbert [mailto:= rgilbert88@comcast.net]
Sent: Mon 10/15/2007 2:12 PM
To: Info-VAX@Mvb.Saic.Com
Subject: Re: still not convinced global warming a hoax?

JF Mezei wrote:
> Neil Rieck wrote:
>
>> Some scientists predicted that the long sought after "North W= est
>> Passage" would be permanently open sometime before 2015. Gues= s what?
>> It opened last month.
>
>
> And this could have huge financial implications.
>
> Panana just undertook a huge financial investment/gamble to widen the<= BR> > Panama canal to handle today's large ships. Northwest Passage could
> eliminate the need for the Panama canal at least during summer because=
> it is a MUCH shorter shipping distance between Asia and eastern americ= as
> and europe.
>
> And lowering shipping costs could make asian products even cheaper. It=
> would also reduce traffic at west coast USA/Canada ports as well as
> railway traffic.
>
> There are also large implications for Canada, but because they involve=
> the USA not respecting our borders, I can't discuss it without AEF
> accusing me of hating. american citizens.

Why do you care what AEF thinks or says?

********

"says" -- For his knowledge of VMS.

I just want to add my defense of a contributor from whom I have
learnt a lot.  Particularly his comments a while ago about the
ampersand.  Though I will not use TO.COM and relatives from the Freewa= re CD,
I do read them for insights into VMS.

I do agree with your possible implication that on OT topics he can often be=
belligerent.

This to another contributor (going back to Compuserve days) whose
knowledge I have always read with interest.

Regards, Paddy

P.S.  Again apologies if the format is wrong -- out of my control.

*******= ****************************************************************

Plea= se consider the environment before printing this email.

=

 <= /span>

"T= his electronic message and any attachments may contain privileged

and con= fidential information intended only for the use of the

address= ees named above. If you are not the intended recipient of

this em= ail, please delete the message and any attachment and advise

the sen= der. You are hereby notified that any use, dissemination,

distrib= ution, reproduction of this email is prohibited.

=

 <= /span>

If you = have received the email in error, please notify TransGrid

immedia= tely. Any views expressed in this email are those of the

individ= ual sender except where the sender expressly and with

authori= ty states them to be the views of TransGrid. TransGrid uses

virus-s= canning software but excludes any liability for viruses

contain= ed in any attachment."

=

 <= /span>

*******= ****************************************************************

 <= /span>

------_=_NextPart_001_01C80F09.2F729204-- ------------------------------ Date: Mon, 15 Oct 2007 04:54:54 -0700 From: ultradwc@gmail.com Subject: Re: still not convinced global warming a hoax? Message-ID: <1192449294.682200.46870@i13g2000prf.googlegroups.com> On Oct 15, 12:05 am, JF Mezei wrote: > Neil Rieck wrote: > > Some scientists predicted that the long sought after "North West > > Passage" would be permanently open sometime before 2015. Guess what? > > It opened last month. > > And this could have huge financial implications. > > Panana just undertook a huge financial investment/gamble to widen the > Panama canal to handle today's large ships. Northwest Passage could > eliminate the need for the Panama canal at least during summer because > it is a MUCH shorter shipping distance between Asia and eastern americas > and europe. > > And lowering shipping costs could make asian products even cheaper. It > would also reduce traffic at west coast USA/Canada ports as well as > railway traffic. > > There are also large implications for Canada, but because they involve > the USA not respecting our borders, I can't discuss it without AEF > accusing me of hating. american citizens. Canada and the US will soon be one in the same along with Mexico ... ------------------------------ Date: Mon, 15 Oct 2007 11:52:24 -0500 From: Ron Johnson Subject: Re: still not convinced global warming a hoax? Message-ID: On 10/14/07 21:45, Neil Rieck wrote: > On Oct 12, 9:00 am, koeh...@eisner.nospam.encompasserve.org (Bob > Koehler) wrote: >> Congrats to Al Gore and the UN panel on the environment on the >> Nobel Peace Prize. > > Some scientists predicted that the long sought after "North West > Passage" would be permanently open sometime before 2015. Guess what? > It opened last month. > > http://news.bbc.co.uk/1/hi/world/americas/6995999.stm How do you get from (quoting the article) "this summer's reduction has made the route navigable" to (your statement) "permanently open"? Shouldn't we wait *forever* to pronounce "permanently open"? Waiting until they send out some ships in *February* to pronounce "open year-round" would also be, ummm, scientifically accurate. But who wants accuracy when absolutes are so much easier. -- Ron Johnson, Jr. Jefferson LA USA Give a man a fish, and he eats for a day. Hit him with a fish, and he goes away for good! ------------------------------ Date: Mon, 15 Oct 2007 09:54:10 +0000 (UTC) From: david20@alpha2.mdx.ac.uk Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article , Kilgallen@SpamCop.net (Larry Kilgallen) writes: >In article , david20@alpha2.mdx.ac.uk writes: >> In article <5ZxME8OuXNUO@eisner.encompasserve.org>, Kilgallen@SpamCop.net (Larry Kilgallen) writes: >>>In article , david20@alpha2.mdx.ac.uk writes: >>>> In article , Kilgallen@SpamCop.net (Larry Kilgallen) writes: >>> >>>>>The ability to accept unauthenticated connections certainly is real >>>>>security. >>> >>>> Which if he wishes the system administrator can control using a stateful >>>> firewall either on dedicated hardware or on the box itself eg Linux Iptables. >>> >>>And one can protect an IP-only machine by fronting it with a machine >>>that speaks DECnet. So what ? >> Which is different from protecting a machine by specifying rules for the >> SAME protocol suite which with IPtables is done on the same machine. > >But exactly the same as having to buy another piece of gear. What exactly is unclear about IPtables, which comes as a standard on Linux, not requiring another box. David Webb Security team leader CCSS Middlesex University ------------------------------ Date: Mon, 15 Oct 2007 10:37:16 +0000 (UTC) From: david20@alpha2.mdx.ac.uk Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article <+kq29A1$EX+C@eisner.encompasserve.org>, Kilgallen@SpamCop.net (Larry Kilgallen) writes: >In article , david20@alpha2.mdx.ac.uk writes: >> In article , Kilgallen@SpamCop.net (Larry Kilgallen) writes: >>>In article , david20@alpha2.mdx.ac.uk writes: >>>> In article , koehler@eisner.nospam.encompasserve.org (Bob Koehler) writes: >>>>>In article , david20@alpha2.mdx.ac.uk writes: >>>>>> >>>>>> As far as I am aware the only authentication ever done with DECNET objects is >>>>>> to require the incoming connection to supply the target username and password >>>>>> or appropriate proxy information. This is no different from applications under >>>>>> TCPIP. >>>>> >>>>> This is very different. Any fool application programmer can open >>>>> an IP socket and accept connections without action by the system >>>>> admin, who might be or find someone competent to determine whether >>>>> the code is full of security holes. >>>>> >>>> Only to high port numbers not to well-known ports unless he has the required >>>> privileges. >>> >>>Restrictins on "well-known port numbers" only guard against impersonating >>>an official service. >>> >>>They do nothing to prevent a security-unaware user from programming >>>something that violates organization security policy by using a high >>>port number. >> >> Which I think is what I said in the statement above. There was another similar >> posting in which I answered more fully talking about protecting high-port >> numbers by the use of stateful firewalls (either on external boxes or on the >> system itself). > >The business about "well known ports" is a red herring. The issue we >were discussing was the ability of a random user of arbitrary motive >and competence to accept unauthenticated inbound connections. > If the user is unprivileged the application they have listening on the port will be unprivileged. >What percentage of TCP/IP machines are protected against that ? > >What percentage of DECnet machines are protected against that ? I'd hope most businesses have now moved their firewalls to a default-deny policy - I know we did (for both incoming and outgoing connections) years ago. Most home users with more than a single machine on their network (and lots of businesses) will be running on private addresses behind NAT which, although a side-effect of it's real function, in effect provides a default-deny firewall for incoming connections. Even windows from XP service Pack 2 onwards provides a personal firewall which by default blocks incoming connections (and for previous versions there are a number of free third-party personal firewalls). David Webb Security team leader CCSS Middlesex University ------------------------------ Date: 15 Oct 2007 06:42:23 -0500 From: briggs@encompasserve.org Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: <$4JHi09aW3Ww@eisner.encompasserve.org> In article , david20@alpha2.mdx.ac.uk writes: > In article , helbig@astro.multiCLOTHESvax.de (Phillip Helbig---remove CLOTHES to reply) writes: >>In article , david20@alpha2.mdx.ac.uk >>writes: >> >>> Well apart from setting up a firewall which stops externally originated >>> connections to those ports. (simply blocking them won't work of course since >>> they will be used to originate connections to external servers when using TCPIP >>> client programs and responses need to be let back). >> >>It is clear whether a connection is a new request or a response to >>another request. It is standard to block the former for specific ports >>and allow the latter. >> > Only on "modern" stateful firewalls not on a simple packet-filter. A simple packet filter without state is perfectly capable of distinguishing between an inbound TCP packet that contains an ACK or a RST and one that does not. The limitations of stateless packet filtering come into play with protocols such as FTP or SQL*Net where the application negotiates port numbers on the fly and a stateless packet filter can only: 1. Permit all possible negotiated ports (not very secure) 2. Block the negotiated ports (and break the application) A stateful firewall will typically eavesdrop on the negotiation and dynamically open the negotiated TCP ports. It will also typically be able to do stateful UDP. ------------------------------ Date: 15 Oct 2007 06:45:10 -0500 From: Kilgallen@SpamCop.net (Larry Kilgallen) Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article , david20@alpha2.mdx.ac.uk writes: > In article <+kq29A1$EX+C@eisner.encompasserve.org>, Kilgallen@SpamCop.net (Larry Kilgallen) writes: >>The business about "well known ports" is a red herring. The issue we >>were discussing was the ability of a random user of arbitrary motive >>and competence to accept unauthenticated inbound connections. >> > If the user is unprivileged the application they have listening on the > port will be unprivileged. But they will have the ability to export data to an unauthenticated correspondent, quite likely in violation of security policy. ------------------------------ Date: Mon, 15 Oct 2007 12:41:57 +0000 (UTC) From: david20@alpha2.mdx.ac.uk Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article , Kilgallen@SpamCop.net (Larry Kilgallen) writes: >In article , david20@alpha2.mdx.ac.uk writes: >> In article <+kq29A1$EX+C@eisner.encompasserve.org>, Kilgallen@SpamCop.net (Larry Kilgallen) writes: > >>>The business about "well known ports" is a red herring. The issue we >>>were discussing was the ability of a random user of arbitrary motive >>>and competence to accept unauthenticated inbound connections. >>> >> If the user is unprivileged the application they have listening on the >> port will be unprivileged. > >But they will have the ability to export data to an unauthenticated >correspondent, quite likely in violation of security policy. Only if the firewall rules allow it. If you are in the position of not wanting sensitive information to be made available to people outside the organisation then you have a lot more paths to block. David Webb Security team leader CCSS Middlesex University ------------------------------ Date: 15 Oct 2007 08:02:24 -0500 From: koehler@eisner.nospam.encompasserve.org (Bob Koehler) Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article , moroney@world.std.spaamtrap.com (Michael Moroney) writes: > > I did not know that! Is this DECnet IV or something new with V? This was years before V. We were using IV, but I think it goes back to III or II when DDCMP was more commonly used. ------------------------------ Date: 15 Oct 2007 08:05:01 -0500 From: koehler@eisner.nospam.encompasserve.org (Bob Koehler) Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article , david20@alpha2.mdx.ac.uk writes: > I thought we were talking about TCPIP protocol security compared to DECNET > protocol security not about the OS security of the systems connected. > Non-privileged users should only be able to setup non-privileged applications > running on those higher port numbers. The fact that a large number of > privileged applications can also be run on those high ports by those with > privileges is irrelevant. If your data is important you don't have to be privileged. Alteration of data via unauthorized but unprevented connection to an application on a higher number port is considered a security issue according to the security standards many of us work with. ------------------------------ Date: 15 Oct 2007 08:07:50 -0500 From: koehler@eisner.nospam.encompasserve.org (Bob Koehler) Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article , david20@alpha2.mdx.ac.uk writes: > If the user is unprivileged the application they have listening on the > port will be unprivileged. Which is not the same as having no security implications. ------------------------------ Date: Mon, 15 Oct 2007 13:46:16 +0000 (UTC) From: david20@alpha2.mdx.ac.uk Subject: Re: TCPIP SMTP receiver issues (SYSTEM-F-NOLINKS) Message-ID: In article , koehler@eisner.nospam.encompasserve.org (Bob Koehler) writes: >In article , david20@alpha2.mdx.ac.uk writes: > >> I thought we were talking about TCPIP protocol security compared to DECNET >> protocol security not about the OS security of the systems connected. >> Non-privileged users should only be able to setup non-privileged applications >> running on those higher port numbers. The fact that a large number of >> privileged applications can also be run on those high ports by those with >> privileges is irrelevant. > > If your data is important you don't have to be privileged. > Alteration of data via unauthorized but unprevented connection to an > application on a higher number port is considered a security issue > according to the security standards many of us work with. > In which case your firewall rules should be setup appropriately. This is no different from setting up appropriate DECNET objects. (and since all DECNET traffic is passed in the clear authenticated connections via passwords rather than proxies are as suspect as unauthenticated connections with DECNET and that applies equally to running privileged tasks). (You also need logging and security policies in place to deal with other vulnerabilities such as the unprivileged user allowing other people to access his account by sharing his password or since VMS is a multi-user discretionary access-control system by relaxing permissions on his directory). David Webb Security team leader CCSS Middlesex University ------------------------------ Date: 15 Oct 2007 08:11:55 -0500 From: koehler@eisner.nospam.encompasserve.org (Bob Koehler) Subject: Re: Translating $Status Message-ID: In article <1192194978.858658.187730@y27g2000pre.googlegroups.com>, BaxterD@tessco.com writes: > I seem to remember that there is a really simple command to > convert a $Status to a text message. > > i.e. I executed a copy command from node A to node B and it failed > with status "%X1067109A". I believe that there is a way to use this > status to see what the actual cause of the failure was, -- just cant > remember it. > > Can anyone jog my memory?? $ write sys$output f$message("%X1067109A") Many will also try "$ exit %X1067109A", but that's not guarranteed to produce a message and in this case it doesn't because the inhibit message bit is set. ------------------------------ Date: Mon, 15 Oct 2007 16:50:03 +0000 (UTC) From: helbig@astro.multiCLOTHESvax.de (Phillip Helbig---remove CLOTHES to reply) Subject: Re: Translating $Status Message-ID: In article , koehler@eisner.nospam.encompasserve.org (Bob Koehler) writes: > In article <1192194978.858658.187730@y27g2000pre.googlegroups.com>, BaxterD@tessco.com writes: > > I seem to remember that there is a really simple command to > > convert a $Status to a text message. > > > > i.e. I executed a copy command from node A to node B and it failed > > with status "%X1067109A". I believe that there is a way to use this > > status to see what the actual cause of the failure was, -- just cant > > remember it. > > > > Can anyone jog my memory?? > > $ write sys$output f$message("%X1067109A") In general, yes, but you might have to issue a $ SET MESSAGE command in some cases (not the case above). ------------------------------ Date: Mon, 15 Oct 2007 05:02:15 -0700 From: ultradwc@gmail.com Subject: Worlds top meteorologist calls Gores views ridiculous! Message-ID: <1192449735.237354.165690@e34g2000pro.googlegroups.com> http://www.smh.com.au/news/environment/gore-gets-a-cold-shoulder/2007/10/13/1191696238792.html ------------------------------ Date: Mon, 15 Oct 2007 06:00:07 -0700 From: kenneth.randell@verizon.net Subject: Re: Worlds top meteorologist calls Gores views ridiculous! Message-ID: <1192453207.384621.261630@e9g2000prf.googlegroups.com> On Oct 15, 8:02 am, ultra...@gmail.com wrote: > http://www.smh.com.au/news/environment/gore-gets-a-cold-shoulder/2007... Please consider using your writing talent to promote VMS. Considering how much time you spend being able to submit off-topic posts, and that must be related to how reliable VMS is, how about doing a testimonial? Surely you could use your time to promote your favorite operating system instead of wasting everyone's bandwidth. ------------------------------ Date: Mon, 15 Oct 2007 08:23:34 -0700 From: ultradwc@gmail.com Subject: Re: Worlds top meteorologist calls Gores views ridiculous! Message-ID: <1192461814.544406.136430@q3g2000prf.googlegroups.com> On Oct 15, 9:00 am, kenneth.rand...@verizon.net wrote: > On Oct 15, 8:02 am, ultra...@gmail.com wrote: > > >http://www.smh.com.au/news/environment/gore-gets-a-cold-shoulder/2007... > > Please consider using your writing talent to promote VMS. Considering > how much time you spend being able to submit off-topic posts, and that > must be related to how reliable VMS is, how about doing a > testimonial? Surely you could use your time to promote your favorite > operating system instead of wasting everyone's bandwidth. I have done that more than you know ... it is time for HP to handle that ... unless they want to give me ownership? ------------------------------ Date: Mon, 15 Oct 2007 07:42:55 -0700 From: Neil Rieck Subject: www.hp.com/go/openvms is still toast Message-ID: <1192459375.401370.216950@e34g2000pro.googlegroups.com> www.hp.com/go/openvms is still toast at of 10:40 this morning. It was off the air for most of Sunday too. If any HP people can read this, please make the necessary phone calls. Neil Rieck Kitchener/Waterloo/Cambridge, Ontario, Canada. http://www3.sympatico.ca/n.rieck/ ------------------------------ Date: Mon, 15 Oct 2007 16:04:46 GMT From: "John Vottero" Subject: Re: www.hp.com/go/openvms is still toast Message-ID: "Neil Rieck" wrote in message news:1192459375.401370.216950@e34g2000pro.googlegroups.com... > www.hp.com/go/openvms is still toast at of 10:40 this morning. It was > off the air for most of Sunday too. If any HP people can read this, > please make the necessary phone calls. It works for me. ------------------------------ Date: 15 Oct 2007 08:28:06 -0500 From: koehler@eisner.nospam.encompasserve.org (Bob Koehler) Subject: Re: [Q]Execute a command procedure from a detached process Message-ID: In article , Joseph Huber writes: > > Out of a program, sys$creprc is o.k., but if You want a CLI (DCL), then > the image to start must be the DCL login program > SYS$SYSTEM:LOGINOUT.EXE: it establishes a DCL environment with the usual > symbols and process logicals. As the input for the process specify a DCL > procedure which in turn should run the target image. This is exactlly what the $CREPRC documentation is supposed to say. I wonder what the OP actually tried. ------------------------------ End of INFO-VAX 2007.564 ************************