MPEX can make MPE
A whole lot easier
to live with
PRODUCTIVITY TOOL FOR HP 3000
Have you ever been forced to recompile 50 programs? Or perhaps list them out? Or RELEASE them and FCOPY them one by one? Now, with MPEX/3000, you can avoid the loss of precious time and the inevitable (and possible destructive) errors and perform these operators by merely typing a few lines.
EXAMPLES OF MPEX COMMANDS
An example is worth a thousand syntax diagrams. Here are only a few of the
things you can do with MPEX. We won't discuss each one in too great a detail
-- see the appropriate manual section for a complete explanation. (Remember
also that these examples are only the tip of the iceberg; there are many more
features discussed further in the manual.)
%ALTFILE @.@(CREATOR="JOHN"); CREATOR=MANAGER
After you purge the user JOHN, this command will change all of his files
to have creator ID (IDentification) MANAGER.
%ALTFILE @.DATA-CUST@.DATA(INTCODE=0); FLIMIT=EOF*1.5
Sets the file limit of the (MPE and KSAM) files in the DATA group (except
for files that start with CUST) to be 50% greater than the current EOF.
%ALTSPOOLFILE $STDLIST.@.@(SPOOL.JSNAME="MCOMPILE"); PRI=8
Changes to 8 the output priority of all $STDLISTs belonging to jobs that
logged on with job/session name MCOMPILE.
%COPY @.@.AP, @/=.@.APBACKUP; KEEPATTR
Copies all the files in the AP account into the APBACKUP account,
preserving file attributes (e.g. creator ID, file limit, lockword, etc.).
%COPY @.DATA, =.=; YES; DEV=ROBIN#
Copies all the files in the group DATA (including IMAGE databases and KSAM
files!) over a DSLINE (or NS LAN, etc.) to system ROBIN, purging any files
that already exist with the same name.
Deletes all the $STDLISTs that have output priority 2 or less.
%LISTF MYFILE, ACCESS
Shows all the accessors of MYFILE: accessing program name, access job
number/name, current record being accessed, etc.
%LISTF @.DATA, DISCUSE
Shows which devices the files in the "DATA" group reside on (invaluable if
you're interested in disc balancing).
%MPEXSTORE @.@.@ - @.@.SYS - @.@.VESOFT &
(ACCDATE<TODAY-90 and NOT ISPRIV); *T; SHOW
%MPEXSTORE / - /SYS/ - @.@.VESOFT &
(ACCDATE<TODAY-90 and NOT ISPRIV); *T; SHOW (POSIX)
Implements the sophisticated MPEX FILESETS (with multiple "-"s, combining
MPE & HFS syntax, selection criteria, etc.) on the MPE :STORE command.
%>ECHO -----Formatting !MPEXCURRENTFILE
Performs a user-specified set of commands (here ECHO and RUN) on a
Shows information on all $STDLISTs with output priority 1 in the system,
including job number, job name, ready date, etc.
Shows information on all the spool files created by a job that logged on
with job name COMP010 in the PROD account.
MANAGING DISC SPACE
%ALTFILE @.@.@; XLTRIM; KEEPAMDATES (MPE/iX)
%ALTFILE / ; XLTRIM; KEEPAMDATES (POSIX)
On MPE/iX systems, this command releases a lot of currently unused disc
space that has been allocated to files, without changing the capacity
(FLIMIT) of the files in any way. (The "KEEPAMDATES" option tells MPEX
not to change the last access/modify dates of any files it alters, so they
won't appear on your next partial backup.)
%COPY @.@.MFG, =.=.MFGBACK
Makes a backup copy of the MFG account to the MFGBACK account.
%LISTF @.DATA(ISASCII and SAVABLESECTORS>100),2
Lists all the MPE ("flat") files that have FLIMIT greater than EOF and/or
inefficient R/B (blocking factor); by SQUEEZEing and reblocking (BEST)
them one might save more than 100 sectors on each file.
%ALTFILE RPT@.DATA(ISASCII); SQUEEZE
"Squeezes out" all the unused space between EOF and file limit in all
blank-code files that start with RPT in the DATA group.
%EDIT @.SOURCE(CODE="EDTCT"), SET VARIABLE
Converts all EDITOR COBOL-format files in the SOURCE group to be variable
record length files, saving 30-50% of the disc space while still leaving
them editable, compilable, etc.
%LISTF @.@.@(ACCDATE<TODAY-120), 3
Finds all the files that haven't been accessed in the last 120 days and
lists their names, access dates, modify dates, etc.; also shows total
number of files and sectors.
Purges EDITOR K-files and system log files created more than a week ago.
Prompts you for confirmation before purging anything!
%PURGE @.@.@ - @.@.VESOFT(ACCDATE<TODAY-120 and NOT ISPRIV)
%PURGE / - @.@.VESOFT(ACCDATE<TODAY-120 and NOT ISPRIV) (POSIX)
Purges all the non-privileged (mostly non-IMAGE) files that haven't been
accessed in the last 120 days.
Compiles using COBOL and :PREPs all the AP@.SOURCE files into program
files with the same name in the PUB group. (Of course, the same works for
FORTRAN, PASCAL, RPG, etc.)
%PRINT @.SOURCE;SEARCH="ITEM-NUM" or "ITEM-NAME" or "ITEM-DESC";NUM
Finds all the occurrences of the strings "ITEM-NUM" or "ITEM-NAME" or
"ITEM-DESC" in all files in the SOURCE group. (Does your editor give you
this kind of power?)
%PRINT @.SOURCE;SEARCH=DELIM "MYVAR";PREV="PROCEDURE" or "FUNCTION"
Prints all occurrences of the string "MYVAR" -- for each occurrence, also
prints the last prior occurrence of the line that contains the strings
"PROCEDURE" or "FUNCTION"; in other words, shows you all the lines that
refer to "MYVAR" AND indicates what procedure they occur in!
The DELIM means that "MYVAR" will be searched for as a delimited string,
i.e. surrounded by special characters (e.g. lines containing "TEMPMYVAR"
or "MYVARIATION" will not be found).
%COBOL @.PRODSRC(FSEARCHEXP("'CUST-NO' or 'CUST-NAME'")>0), =.PUB
Recompiles all the files in PRODSRC that contain within them either the
string CUST-NO or the string CUST-NAME!
%EDITCHG @.SOURCE, "ITEM-NO", "ITEM-NUMBER"
Changes all occurrences of "ITEM-NO" to "ITEM-NUMBER" in all files in the
SOURCE group, /KEEPing only those files that were actually changed.
%LISTF @.PRODSRC(MODDATE>3/15/91), 3
Finds all the files in PRODSRC that have been modified since 3/15/91
(perhaps the last production release date).
%PRINT @.SOURCE; OUT=*LP; PAGEHEAD; NUM
Prints all the SOURCE group files to the line printer (with page headers,
nicely-formatted line numbers, etc.).
%COBOL @.PRODSRC(MODDATETIME>VEFINFO(FILE+".PUB").MODDATETIME), =.PUB
Compiles all the PRODSRC files whose modify dates (and times) are later
than the modify dates (and times) of files with the same name in the PUB
group (VEFINFO(FILE+".PUB").MODDATETIME). In other words, this recompiles
all the programs that have been modified but not recompiled into PUB.
%ALTFILE CUST?#.DB(DBSETTYPE="D"); DEV=2
%ALTFILE CUST?#.DB(DBSETTYPE<>"D"); DEV=3
These two commands move all detail datasets of the CUST database to device
2 and all non-detail datasets to device 3.
%ALTFILE @.@.AP(CREATOR<>"DBA" and ISPRIV); CREATOR=DBA
Changes the creator ID of all AP databases (ISPRIV) to be DBA, thus making
sure that DBA -- and only DBA -- can run DBUTIL, DBSTORE, etc. against
all those databases.
%COPY APDB@, DBNEW@; DEV=3
Copies the APDB database into a new database called DBNEW, moving all the
files onto disc device 3.
%DBADGALT @.DB(DBSETFULLNESS>.8 and MODDATE>TODAY-30), 0.6
%DBGENALT @.DB(DBSETFULLNESS>.8 and MODDATE>TODAY-30), 0.6
%DBMGRALT @.DB(DBSETFULLNESS>.8 and MODDATE>TODAY-30), 0.6
Use ADAGER, DBGENERAL/BRADMARK, or DBMGR/DISC to alter the capacity of all
datasets in the DB group that are currently more than 80% full (and have
been modified within the last 30 days) so that they will only be 60% full.
%LISTF @.@.AP(DBSETFULLNESS>.70 and MODDATE>TODAY-7), DB
Shows database information (dataset name, type, capacity, etc.) for all
datasets in the AP account that are more than 70% full and have been
modified in the past week.
%RENAME MYDB@(ISPRIV), NEWDB@
Renames a database.
FILE SYSTEM SECURITY
%LISTF @.@.@(ISPROG and PROG.PMCAP), 5
Finds all the privileged-mode program files in the system and lists their
program file information.
On Monday, this shows all files in the PAYROLL account that were accessed
over the weekend.
%SECURE @.@.@(ISPROG and ISRELEASED and DIRGROUP.CAP("PM"))
Secures all the :RELEASEd program files in privileged groups (which are a
SERIOUS THREAT to system security).
Shows the "true" access to the file, factoring in both the group- and
account-level restrictions as well as the file restrictions and the
JOB STREAM PROGRAMMING
%WHILE JSCOUNT("JOBB,MGR.PROD&BATCH")>0 DO
% PAUSE 120
If the job JOBB,MGR.PROD is logged on, waits until it logs off before
continuing execution of JOBA.
%WHILE VEFINFO("DATAFILE").OPENED DO
% PAUSE 120
If the file DATAFILE is opened, waits until it is closed before continuing
%SETVAR FNAME PRINTOPREPLY('Which file should we output to?')
%IF FEXISTS(FNAME) THEN
% IF PRINTOPREPLY('OK to purge file '+FNAME+'?')='Y' THEN
% PURGE !FNAME
Asks the console operator for feedback via the :REPLY command and uses it
to set up a :FILE-equation and possibly purge the file (if it already