1 New_Features

  o A /DELETE qualifier has been added for the INSERT and REPLACE
    commands to delete source files from your work directory after
    you replace them in the production directories.

  
! o A new ARCHIVE command has been added to back up software modules to
!   tape thus reducing disk space usage. See ARCHIVE for more information.

1 BugFixes

  o MCM now unconditionally processes make (.MAK) files during a
    /INSERT and optionally processes them on a /REPLACE. (Specify
    /NOMAKE if you do not wish the make file executed).

1 HELP
  MCM

  MCM (Morrison's Code Management) is a programmer's software maintenance
  tool which manages changes to software modules. MCM tracks changes to
  any human readable information including code in any programming
  language. It labels and records every change and maintains a complete
  history of all changes. MCM also provides a BUILD facility which allows
  for the easy re-building of programs which must be re-compiled due to 
  changes in record formats. It also can provide system-wide cross
  reference listings of particular field names, as well as selectively
  re-building specific modules.


  This is a proprietary program of Morrison Molded Fiber Glass (MMFG)
                Written and developed by J. Wren Hunt


1 LIST

  Lists all programs referencing a given external module such as
  CDD record definitions, include files, etc.

	LIST modulename


2  /OUTPUT
   /OUTPUT[=file-spec]
   /NOOUTPUT

    Controls where the output of the command is sent.   If  you  do  not
    enter  the  qualifier,  or  if  you  enter  /OUTPUT  without  a file
    specification, the output is sent to  the  current  process  default
    output stream or device, identified by the logical name SYS$OUTPUT.


2 Examples

	LIST CDD$TOP.PAYROLL.DTR.PERSONNEL_REC 

     This will result in showing all programs using the PERSONNEL_REC.

	LIST/OUTPUT=LPA0: CDD$TOP.ORDER_ENTRY.DTR.ORDERS_REC

     This outputs all occurrences of the orders_rec on the line printer
     LPA0:


1 ARCHIVE

  This backs up prior prior software versions to magnetic media for 
  archival storage and to reduce disk space usage.

        ARCHIVE [directory_name]

  If directory_name is omitted, the default is to archive the entire
  SYS$SYSDEVICE disk.

1 MODIFY

  This modifies existing programs in the MCM file allowing you to change
  the data stored there.

2 /MAKE

  Modifies the make file name used when re-building software modules.

2 /AUTHOR

  Modifies the program author name.

2 /DIRECTORY

  Modifies the MCM source directory name.

2 /GLASTRUSIONS

  Informs MCM that the specified software module is used by Glastrusions.
  

1 REPORT

  This provides information regarding software module status and 
  programmer productivity statistics.

2  /OUTPUT
   /OUTPUT[=file-spec]
   /NOOUTPUT

    Controls where the output of the command is sent.   If  you  do  not
    enter  the  qualifier,  or  if  you  enter  /OUTPUT  without  a file
    specification, the output is sent to  the  current  process  default
    output stream or device, identified by the logical name SYS$OUTPUT.

2 /ADDITIONS

  Shows only new program additions that have been added to the MCM
  program file.

2 /MODIFICATIONS

  Shows only program modifications recorded in the MCM program file.

2 /SINCE=datetime

  Shows only entries which have occured since the given datetime
  value.

2 /USER=username

  Shows only entries which were executed by the specified username.

2 /SORT

	Sorts the file on one of the following keywords:
		DIRECTORY, PROGRAM, AUTHOR

3 Example

	REPORT/ADDITIONS/SORT=DIRECTORY/OUTPUT=LPA0:

	Would sort the entire file keyed on directory name and output
	it to the line printer LPA0:
 
1 SET

2 DEFAULT

  Sets the current MCM default directory. This directory name is 
  copied into the process logical name MCM_DEFAULT_DIRECTORY.


1 CREATE

    Creates a new VMS directory on SYS$SYSDEVICE:[000000]

		CREATE [directory]

1 EXIT
  Terminates processing of MCM and returns you to DCL level.

1 SHOW

2 MODULES
  Shows all software modules in the current MCM default directory
  or optionally, in a directory you specify. SHOW MODULES is
  synonomous with SHOW PROGRAMS.

	SHOW MODULES [modulename]

2 PROGRAMS
  Shows all software modules in the current MCM default directory
  or optionally, in a directory you specify. SHOW PROGRAMS is
  synonomous with SHOW MODULES.

	SHOW PROGRAMS [modulename]

3 /FULL

   Displays a detailed status of the given module including an external
   references listing.

3 /REVISION_HISTORY

  Shows a complete revision history of the specified module displaying
  the most recent changes first.

2 VERSION

  Displays the current version number of the MCM image you are using.

2 RESERVE
  Displays outstanding reservations made by programmers to any software
  module. This command is synonomous with SHOW RESERVATIONS.

3 /USER
  Requests to see outstanding reservations made by a given user.

   		SHOW RESERVE/USER=username
3 /SINCE
  Requests to see outstanding reservations since a given date.

3 Examples

	SHOW RESERVE/SINCE=TODAY
		    /SINCE=YESTERDAY
		    /SINCE="2-SEP-1987"
2 RESERVATIONS

  Displays outstanding reservations made by programmers to any software
  module. This command is synonomous with SHOW RESERVE.

3 /USER
  Requests to see outstanding reservations made by a given user.

   		SHOW RESERVE/USER=username

3 /SINCE
  Requests to see outstanding reservations since a given date.

3 Examples

	SHOW RESERVE/SINCE=TODAY
		    /SINCE=YESTERDAY
		    /SINCE="2-SEP-1987"

2 HISTORY

  Displays a complete history log of all commands entered while in MCM.

3 /SINCE=datetime

  Shows only entries which have occured since the given datetime
  value.

3 /USER=username

  Shows history items only for the specified username.

1 RESERVE

  Reserves a specified software module for maintenance work so that it
  can not be modified by any other programmer until it is replaced by
  the original programmer.

		RESERVE modulename

1 CANCEL

  Cancels an outstanding reservation made by the same programmer so that
  the software module need not be replaced.

		CANCEL modulename

1 EXTRACT

  Extracts a copy of a software module without reserving it. Note that
  programs may not be replaced unless they are first reserved. You may
  optionally specify a different file name for the output file.

		EXTRACT modulename [output_file]


1 REPLACE

  Replaces a reserved software module back into the MCM library and 
  makes it available for other programmers to access. The replaced
  member must have been previously reserved by the same programmer.

		REPLACE modulename

2 /DEBUG
  /NODEBUG (D)

	Instructs MCM to compile and link with the option you specify.
	This is useful when handling code that uses ON SNAP.

2 /MAKE

	REPLACE/MAKE=makefile modulename

	Tells MCM the name of the make file to use when compiling and
	linking the given module.

2 /DELETE

	Deletes the source code from your work directory after
	replacing it into the production directory.

1 LOCK

	LOCK modulename

	Locks a module so that it can only be accessed by those knowing
	the lock password.

1 UNLOCK

	UNLOCK modulename

	Unlocks a software module given the correct lock password.


1 INSERT
 
  Inserts a new software module into an MCM library specified by the
  current MCM default directory.

		INSERT modulename
2 /DEBUG
  /NODEBUG (D)

	Instructs MCM to compile and link with the option you specify.
	This is useful when handling code that uses ON SNAP.

2 /MAKE

	INSERT/MAKE=makefile modulename

	Tells MCM the name of the make file to use when compiling and
	linking the given module.

2 /OPTIONS

	Specifies a VMS linker options file instead of linking the
	given module name alone. The /ROOT qualifier MUST be specified.

2 /ROOT
	
	Specifies the VMS root object module that is to be linked
	against to create the executable image.

2 /DTR

 	Inserts a Datatrieve procedure into the MCM program file.
        MCM will prompt you for the CDD root name and all CDD record
	definitions the procedure uses. Type CTRL/Z to exit from
        inputting module names.

2 /DELETE

	Deletes the source file from your work directory after
  	inserting it into the production directory.


1 DELETE

  Deletes a software module from the MCM libraries. Note that the actual
  source code is left intact.

		DELETE modulename

1 GRAPH

  Displays a graph showing programs by author. You may specify either a
  histogram or a pie graph.

		GRAPH
2 /HISTOGRAM

  Displays a histogram showing programs by author.

2 /PIE

  Displays a pie chart showing programs by author.

1 COMPILE

   Re-compiles, re-links and renames program sources which reference the
   user given module name. Programs utilizing TDMS need to have a .MAK file
   associated with them so that MCM can correctly replace the TDMS requests
   and re-build the libraries.

2   /SUBMIT (D)
    /NOSUBMIT
  
     The default mode for COMPILE is to send generated DCL statements to
     the batch queue (SYS$BATCH) to be executed in background mode. If 
     /NOSUBMIT is present, the default output goes to MCM_BATCH.COM in
     the current default directory.

2   /COMMENT

     Allows you to provide a short comment documenting why the MCM build
     was done. This qualifier is highly recommended for maintenance audit
     purposes.

3   Examples

	The following shows a hypothetical MCM build and the associated
	/COMMENT qualifier:

	 $ MCM COMPILE CDD$TOP.GENERAL_LEDGER.DTR.GENERAL_LEDGER_REC -
	 	/COMMENT = "Increased size of GL_AMOUNT for increased $"

2  Make file format

     Programs which need special processing over the built-in rules 
     available in MCM must have a MAKE file (.MAK) associated with them. 
     These files contain DCL commands that you would normally need to 
     execute interactively to build the program module to correct 
     specifications. A make file for a program utilizing TDMS might 
     look as follows:

     $ SET DEFAULT [PURCHASING.SOURCE]
     $ ASSIGN CDD$TOP.PURCHASING.TDMS CDD$DEFAULT
     $ RDU @PURCHASE_ORDER_REQUEST
     $ RDU BUILD LIBRARY PURCHASE_ORDER_RLB
     $ PLI/NOLIST PURCHASE_ORDERS_SCREEN
     $ LINK/NOMAP PURCHASE_ORDERS_SCREEN
     $ DELETE PURCHASE_ORDERS_SCREEN.OBJ;*
     $ RENAME PURCHASE_ORDERS_SCREEN.EXE [PURCHASING.RUNTIME]*.*

     A make file for a program needing special linking could look 
     like this:

     $ PLI/NOLIST MODULE_A
     $ PLI/NOLIST MODULE_B
     $ PLI/NOLIST MODULE_B
     $!
     $ LINK MODULE_DRIVER,MODULES/OPTIONS	! Bring in options file

2 /MAIL

   Using the /MAIL qualifier will send a VMS mail message to your account
   when the MCM COMPILE operation has successfully completed. This will
   let you know when it is finished without having to monitor SYS$BATCH.

1 MAKE

  Allows for the easy and error-free generation of MAKE files needed by
  MCM when re-building TDMS based code. The qualifiers /CDD, /REQUEST 
  and /RLB are all required. The syntax for the MAKE keyword is as
  follows:

	$ MCM MAKE [directory]program_name/CDD=cdd_name/RLB=rlb_name -
	$_		/REQUEST=request_name

2 /CDD

  The name of the Common Data Dictionary (CDD) node where the TDMS
  requests and library definition may be found. This is a required
  qualifier.

2 /REQUEST
 
  The name of the TDMS request which the source program references.
  This is a required qualifier.

2 /RLB

  The name of the TDMS Request Library Definition (RLB) which the
  program access at runtime. This is a required qualifier.

2 Examples

       To generate a MAKE (.MAK) file for the parts screen with
   Request name of PARTS_REQUEST, CDD TDMS node of CDD$TOP.PURCHASING.TDMS
   and Request library of name PARTS_RLB the following command may be
   used to completely generate the entire make file:

   $ MCM MAKE [PURCHASING.SOURCE]PARTS_SCREEN/REQUEST=PARTS_REQUEST -
   $_ /CDD=CDD$TOP.PURCHASING.TDMS/RLB=PARTS_RLB


1 XREF

  Provides a cross-reference listing of individual field names in a given
  CDD record. The default output is MCM.XRF in the current default
  directory.

2 /PRINT

  Prints a cross-reference listing on the system printer. If you use the
  /PRINT qualifier without the /OUTPUT qualifier, MCM creates a 
  temporary listing file and deletes it after the print operation is
  completed. /NOPRINT is the default.


2 Examples

     To see how many programs reference the field PART_NUMBER in the CDD
     record CDD$TOP.PURCHASING.DTR.PARTS_REC, the following command may
     be used:

      $ MCM XREF CDD$TOP.PURCHASING.DTR.PARTS_REC.PART_NUMBER

1 CHECK_DATE

   Ensures that the executable image (.EXE) has a higher creation date than
   that of the corresponding source file. If the source file has been modified
   without updating the image file, the default is to re-compile and re-link
   the program.

2 /REBUILD (D)
  /NOREBUILD

	Directs the CHECK_DATE keyword to rebuild the image.

2 Examples

	If a directory name is not given, MCM assumes that both the source
	and object modules exist in the same directory. (As when testing.)
	Thus if the source date is higher than its corresponding image date
   	the files are re-built but not renamed to the [xxx.RUNTIME] directory.

	$ MCM CHECK_DATE TEST.EXE

	If the image directory name is given, MCM will rename the new
	.EXE file to that directory upon completion.

	$ MCM CHECK_DATE [PURCHASING.RUNTIME]MATERIALS_SCREEN

1  VERIFY

	Verifies that all PL/I source programs (excluding programmer's
	personal libraries) have been entered into the ProgramLog 
	utility.

2  Parameters

	You may provide an optional VMS Source file directory name to
	search if you do not wish to search the entire disk.

2  Examples

	$ MCM VERIFY [PAYROLL.SOURCE]

	The above example would only search through the given directory
	for programs not present in the ProgramLog; not the entire disk.

	$ MCM VERIFY

	This command will search the entire disk (including [PAYROLL.SOURCE])

2  /RECORDS

        Verifies that all actual external records in the PL/I source program
	(e.g., %DICTIONARY) have been entered into the ProgramLog. Since
	this qualifier requires that MCM scan through every line of
	PL/I source code, it is recommended that if used, it should be
	submitted to the batch queue for execution.

2  /INSERT

	Causes any program entries not present in the ProgramLog to be 
	added to the log just as if they were entered interactively. Use
	of this qualifier is highly recommended for keeping the ProgramLog
	up to date.

2  /PLOG

  	Verifies that entries contained in the ProgramLog still exist on
	the disk. This is useful in determining which obsolete programs 
	have been physically removed but are still in the ProgramLog.
	Failure to delete them from the log file will result in errors
	in the event they are ever tried to be "re-built".
