Mercurial > public > html2wiki
view test/resources/sysman_handbook.html @ 15:494ca5643e1a
adjust h2 transformer for headings with arguments and added transformer for removing the empty contents table that is left as part of the conversion of the manuals.
author | ferrall@nwoca.org |
---|---|
date | Mon, 07 Feb 2011 11:44:10 -0500 |
parents | 22ed6d93442c |
children |
line wrap: on
line source
<html> <a name="first_page"></a> <!-- This file created using DECdocument Version V3.3h on 25-JAN-2011 20:18:10.51 --> <!-- TAG definitions version: V3.3h --> <!-- The SDML doctype is: SOFTWARE.REFERENCE --> <!-- The output destination was: HTML --> <!-- SDML file is: NWB:[SMITH.DEV.SDML]OECN10_SYSMAN_HANDBOOK.SDML --> <body> <head> <title>Ohio Educational Computer Network System (OECN)</title> <style> A:hover {color: green} A:active {color: red; background-color: white} </style> </head> <h1 align="center">Ohio Educational Computer Network System (OECN)</h1> <h1 align="center">System Manager Manual</h1> As Developed by: Ohio Department of Education, State Software Development Team <p align=center> <strong>Revision/Update Information: </strong> May, 2001 <p> <hr size=5> <h4>Copyright ©1992, 1995 Ohio Department of Education</h4> <p> Permission to reproduce this document is hereby granted, provided that all such reproductions include all of this document (including this copyright notice), and are not distributed for profit or resale. <p> <table border=5> <tr> <td width=120 align=center> <a href="oecn10_sysman_handbook_full_contents.html"><font size=+2>Contents</font></a> </td> </tr> </table> <a name="post_contents"></a> <p> <hr size=5> <a name="menu_processor"><h1>Menu Processor Theory and Implementation</h1></a> <br> <br> <p> This section contains 6 chapters which describe the OECN Menu Processor for the system manager. It includes a complete description of the theory and implementation of the menu processor on a VAX/VMS system. The 6 chapters are: <p> Introduction <br> Theory <br> Implementation <br> Invoking the Menu Processor <br> Modifying and Creating Menu Systems <br> Customizing Menus from the Distribution <p> <hr size=5> <a name="menu_intro"><h1>Introduction</h1></a> <p> The OECN Menu processor provides a flexible user menu interface to State Software programs. It also can be used to create menus for DCL commands, and other layered products. Menu definitions will be provided for all state software programs. Individual A-sites will be able to add customized menus to the default menu system provided. <a name="menu_features_head"><h1>Features</h1></a> <p> The Menu processor provides the following features: <ul> <li>User may access an item by its item number or label. <li>Abbreviations are allowed on the current menu. <li>Aliases are supplied for all items. The user may enter the label name for any item on any menu in the current menu system. <li>Help may be obtained for the current menu via the VMS Help utility. <li>Users will only see the items on the menu that they are authorized to access. </ul> <p> Features for the system manager: <ul> <li>May be used for CAPTIVE user accounts. <li>Menus or items may be easily added or removed. <li>Access to items and menus may be controlled with the standard OECN_xxxx VMS security identifiers. <li>The OSA utility may be used to customize security. <li>A menu system may consist of multiple menu files. This allows individual A-sites to add custom menus without modifying the menus included in the distribution. <li>By default, does not spawn a subprocess when executing a command. All commands execute in the current process. This prevents the excessive overhead associated with repeatedly spawning subprocesses. <li>Optionally, spawns most commands in a subprocess. Spawning commands may increase response time for larger VAX processors. This may be configured by the system manager. <li>May be used from batch if the third parameter to the OECN_MENU procedure is used. <li>Optional timeout feature that automatically exits the menu system if the user remains inactive for a specified period. </ul> <p> <hr size=5> <a name="menu_theory"><h1>Theory</h1></a> <p> The basic theory behind the Menu processor is fairly simple. The menu definitions are stored in an RMS indexed file. The menu definitions are flexible enough to allow creation of menus containing any combination of DCL commands, programs and information. <a name="menu_terms_head"><h1>Definition of Terms</h1></a> <p> First, it will be helpful to define some terms that will be used throughout the rest of this document. <p> <table border=3> <caption><a name="menu_terms_tab"><strong> Menu System Terms</strong></a></caption> <tr> <th align=center>Term </th> <th align=center>Meaning </th> </tr> <tr> <td> Menu Processor </td> <td> The program that the user runs to enter a menu system. </td> </tr> <tr> <td> menu </td> <td> A menu consists of the menu heading and the menu items on that menu. </td> </tr> <tr> <td> menu name </td> <td> The name of the menu as defined in the MENUEDT program. </td> </tr> <tr> <td> menu item </td> <td> An item on a menu. An item belongs to a specific menu and must have a label that is unique throughout the menu system. </td> </tr> <tr> <td> label </td> <td> A label is the unique name for an item. It is defined in the MENUEDT program and is the label the user will see on the actual menu. </td> </tr> <tr> <td> menu file </td> <td> A file created by MENUEDT that contains the menu definitions for one for more menus. </td> </tr> <tr> <td> menu system </td> <td> A menu system is a collection of menus that the user has access to. This is the <strong>logical</strong> menu system as viewed by a specific user. A system may consist of one or more physical menu files. </td> </tr> <tr> <td> menu specification </td> <td> A menu specification is the format for specifying a menu. The specification may contain a file and/or a menu name. </td> </tr> <tr> <td> alias </td> <td> For each item in the menu system an alias is created. It has the same name as the item's label. The alias is global to the entire menu system, i.e., it crosses all menu file boundaries. The alias must be unique within each menu system. </td> </tr> </table> <a name="menu_files_theory"><h1>How Menu Files Create a Menu System</h1></a> <p> <a href="oecn10_sysman_handbook_full.html#menu_system_fig">Figure 2-1</a> displays a graphical representation of a possible menu system. <a name="menu_system_fig"></a> <p> <strong>Conceptual View of a Menu system</strong> <hr> <p> <table border=0> <tr> <td> <br> <pre> +-----------------------Menu-System-------------------+ | +Menu-File+ | | | | +-Alias-File-+| | | +Menu+ | | || | | | | | | || | | +----+ | | || | +----+----+ | || | +-------+------------+ +------------+| | +---Menu+File--+ +Menu+File-+ +-Secur-File-+| | | +Menu+ | | | | || | | | | | | +Menu+ | | || | | +-+--+ | | | | | | || | | +------+ | | +----+ | | || | | +Menu+ +Menu+| +----+-----+ +------------+| | | | | | || +----+------+ | | | +----+ +-+--+| | | | | | +------+ | +Menu+File+ +Menu+File+ | | | +Menu+ +Menu+| | +Menu+ | | +Menu+ | | | | | | | || | | | | | | | | | | | +----+ +----+| | +----+ | | +----+ | | | +--------------+ +---------+ +---------+ | +-----------------------------------------------------+ </pre> </table> <p> You can see from <a href="oecn10_sysman_handbook_full.html#menu_system_fig">Figure 2-1</a> that a menu system as seen by the user may consist of multiple menu files, and a menu file may contain multiple menus. This provides considerable flexibility for designing and modifying a menu system. <p> The menu system that is included with the distribution will have a separate menu file for each OECN state software package. Additionally, each major package will have a <strong>local</strong> menu. This local menu will be in a separate menu file and left blank. You will be able to customize this local menu without disturbing the other menus. <p> A more detailed description of how to modify and create menus will follow later in this document. The method used to customize local menus will be discussed. <p> Each menu system has one alias file. This file is used to find an item's location if the user enters an alias. <p> Also, the menu system may have one local security file. This file is optional and created by the OSA utility. See the OECN Software Security for VAX/VMS System Manager manual for more information about security and the OSA utility. <a name="menu_specs_head"><h1>Menu Specifications</h1></a> <p> Throughout this document there are references to <strong>menu specifications</strong>. Wherever a menu specification is required the following syntax is allowed: <table border=0> <tr> <td> <br> <pre> @menu_file\menu_name </pre> </td> </tr> </table> <p> <table border=3> <tr> <th align=center>Parameter </th> <th align=center>Meaning </th> </tr> <tr> <td> @menu_file </td> <td> Name of a menu file that contains menu_name. If not specified then menu_name is assumed to exist in the current menu file. </td> </tr> <tr> <td> menu_name </td> <td> A menu within either the specified menu file or the current menu file. </td> </tr> </table> <p> A valid menu specification contains one or both of these components. <p> If a menu name is specified without a menu file then the menu is assumed to exist in the current menu file. If there is no current menu file then OECN$MENU is used. <p> If a menu file is specified without a menu name then the default menu of the menu file's header record is used. <p> If both the menu file and menu name are specified they must be separated by a backslash (\). <p> Examples: <table border=3> <tr> <th align=center>Specification </th> <th align=center>Result </th> </tr> <tr> <td> @BUD_MENU\USAS_PRC </td> <td> Goes to the USAS_PRC menu of the BUD_MENU file. </td> </tr> <tr> <td> @MAIN_MENU </td> <td> Goes to the default menu of the MAIN_MENU file. </td> </tr> <tr> <td> LOCAL </td> <td> Goes to the LOCAL menu of the current file. </td> </tr> </table> <a name="alias_file_head"><h1>The Alias File</h1></a> <p> Each menu system may have exactly one <strong>alias file</strong>. An alias file contains a record for each menu item in the menu system. This alias record contains a pointer to the proper menu file that contains the item. <p> When the user enters a label name that is not on the current menu, the alias file is checked for the label. If found then the item is located in the appropriate menu file, and, assuming the user has access to the item, it is executed. This allows the user to get to any item or menu in the menu system without navigating through the intervening menus. <p> The alias file is built automatically by the MENUUTL program. See <a href="oecn10_sysman_handbook_full.html#build_alias_head">Section 5.2.1, Building the Alias File</a> for more information about creating the alias file. <a name="option_exec_sect"><h1>Option execution</h1></a> <p> By default, the menu processor does <em>not</em> spawn subprocesses to execute user options. All commands are executed in the user's current process. This implies that menu processor image must exit and restart (activate) after each option has completed. This is called <strong>"terminate and execute"</strong> mode. This mode may provided optimal response time for smaller VAX processors, particularly machines with small memory configurations. <a name="heading_2.5.1"><h2>Spawning Options</h2></a> <p> Another mode that may be chosen by the system manager is "spawn and execute". In this mode, <em>most</em> commands are executed in a subprocess. The menu processor remains running in the main process and does not terminate. Spawning options may reduce response time for larger VAX machines with excess physical memory. <p> No firm guidelines can be provided to suggest which mode will provide optimal response time and resource utilization for a given system. Response time in both modes is determined by machine size, available memory, tuning, typical load on the system, etc. Trial and error under a typical work load is the only way to determine the best mode. If the time required to spawn a process is less than the time required to activate the menu image, then spawning is preferable. <p> To implement menu option spawning the system manager must be aware of the following: <ol start=1 > <li>Users must have a PRCLM Authorize quota of at least 1. If the user executes programs that also spawn processes (e.g., TPU/EVE, WPS) they may need a higher PRCLM quota. <li>Other user quotas also may need to be increased in order for the main and subprocess to have access to sufficient resources. <li>BALCSETCNT (balance set count) in SYSGEN must be large enough to handle the addition processes. <li>Some types of options must be executed in the main process (see below). </ol> <p> Prior to implementing spawning you must carefully consider whether any custom menu files contain any options that fall under #4 above. The subprocess that is created by the menu processor is temporary (i.e., the subprocess logs out as soon as the option has completed). This means that any commands performed in the subprocess will not be permanent. If you have options that change user logicals, create processes, etc. or anything that must affect both the main process and the subprocess, you must modify your custom menu files. <p> The MENUEDT program will allow you to define an item type "DP" (DCL command in Parent). These types of items will always be executed in the main process using "terminate and execute". These means that any commands executed in this way will affect both the main process and subprocess. These types of items should be used sparingly and will seldom be necessary. The only item in the menu files distributed by SSDT that need the "DP" item type was the DETPRT option of the LOCAL menu. All other SSDT menu items may be executed in a subprocess. <a name="heading_2.5.2"><h2>Selecting Execution Mode</h2></a> <p> To select either "terminate and execute" or "spawn and execute" mode, the system manager needs only define a single logical. The logical name is OECN$MENU_BEHAVIOR and may be defined in the SYSTARTUP procedure. The valid values are: TERMINATE or SPAWN. For example, if you want to use "spawn and execute", add the following line the SYSTARTUP procedure: <p> <table border=0> <tr> <td> <br> <pre> $ DEFINE/SYSTEM OECN$MENU_BEHAVIOR "SPAWN" </pre> </table> <p> This logical also can be defined at the group or process level. If the logical is not defined, the default is "TERMINATE". <a name="timeout_head"><h1>Inactivity Timeout</h1></a> <p> The menu processor has an optional feature that will cause it to automatically exit if the user does not enter a command after a specified period of time. This might be a useful security feature for user users who remain idle in the menu for long periods of time or forget to logout. <p> The system manager may add a command to the OECN$MENU_BEHAVIOR logical that will enable the timeout feature. The following syntax may be used: <p> <table border=0> <tr> <td> <br> <pre> $ DEFINE/SYSTEM OECN$MENU_BEHAVIOR "TIMEOUT=n" </pre> </table> <p> Where <em>n</em> is the number minutes to wait with no activity. After the timeout period expires without any options being entered, the menu processor will exit automatically. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> The menu processor simply exits the menu and returns to DCL it does not log the user off the system. It is up to the local captive login procedure or other mechanism to log the user off. </td> </tr> </table> </center> <p> <hr size=5> <a name="menu_implentation_chap"><h1>Implementation</h1></a> <p> Several steps are required in order to implement the Menu Processor on your system. The steps are briefly outlined below, detailed explanations follow: <ol start=1 > <li> Install the OECN, MENU and HELP distribution packages with OECN_INSTALL. <li> Establish the necessary OECN logicals. <li> Move the menu files and VMS Help libraries from the distribution directories to the appropriate directories on your system. <li> Create the OECN_MENU symbol. <li> Use the VMS Install utility to make the Menu Processor a known, shared image. </ol> <a name="installation_head"><h1>Installation</h1></a> <p> The Menu Processor uses files from the OECN, MENU and HELP packages. Install these packages as usual using OECN_INSTALL. For further information about OECN_INSTALL see OECN_INSTALL.DOC in the VAX manager documentation directory. <a name="logicals_head"><h1>Establish OECN Logicals</h1></a> <p> Several logicals are used by the Menu Processor to locate the menu files and VMS Help libraries. <p> <table border=3> <caption><a name="logicals_tab"><strong> Menu Logicals</strong></a></caption> <tr> <th align=center>Logical </th> <th align=center>Purpose </th> </tr> <tr> <td> OECN$MENU$FILES <sup>1</sup> </td> <td> Device and directory where the menu files are located. </td> </tr> <tr> <td> OECN$MENU <sup>2</sup> </td> <td> Default menu file if none is specified by the user when the Menu Processor is invoked. </td> </tr> <tr> <td> OECN$ALIAS <sup>2</sup> </td> <td> Default alias file that is used if none is specified when the Menu Processor is invoked. </td> </tr> <tr> <td> OECN$SECUR </td> <td> Local security file. Optional. Created by OSA utility to define local security. </td> </tr> <tr> <td> OECN$HELP <sup>1</sup> </td> <td> Device and directory where the VMS Help libraries are located. </td> </tr> <tr> <td> OECN$MENU_HELP <sup>2</sup> </td> <td> Default menu help library. Used when the user presses <kbd>[PF2]</kbd> or ?. </td> </tr> <tr> <td> OECN_MENU_PROMPT </td> <td> Default prompt to be used in the Menu Processor. Optional. May be overridden by the user with a SET PROMPT command. </td> </tr> <tr> <td> OECN_MENU_MODE </td> <td> Default mode. Optional. May contain the "MENU" or "COMMAND". May be overridden by the user with a SET MODE command. </td> </tr> <tr> <td> OECN$MENU_BEHAVIOR </td> <td> Optional logical that may contain commands to control how the menu processor behaves at run-time. This logical is defined by the system manager. See <a href="oecn10_sysman_handbook_full.html#behavior_logical">3.2.1</a>. </td> </tr> </table> <hr> <sup>2</sup> Defined by the OECN_STARTUP procedure. <br> <sup>1</sup>May be defined as a search list. <br> <hr> <p> OECN$MENU$FILES and OECN$HELP must be defined in either the SYSTARTUP or individual LOGIN.COM files. These logicals may be defined at the system, group or process level. For example, the OECN$MENU logical may be defined for each user to provide a different default menu. <a name="behavior_logical"><h2>Specifying options with OECN$MENU_BEHAVIOR logical</h2></a> <p> This section describes the commands that may be placed in the OECN$BEHAVIOR logical. The syntax for the logical definition is: <p> <table border=0> <tr> <td> <br> <pre> $ DEFINE/SYSTEM OECN$MENU_BEHAVIOR "command[,command]..." </pre> </table> <p> Where <em>[command]</em> is one of the commands in the following table. The command(s) must be enclosed in quotes and be in uppercase. When multiple commands are specified they must be separated by commas (,). This logical can be defined at the system, group, job or process level. <p> <table border=3> <caption><a name="Table_3-2"><strong> Behavior Options</strong></a></caption> <tr> <th align=center>Command </th> <th align=center>Description </th> </tr> <tr> <td> TERMINATE </td> <td> Causes the processor to use the " terminate and execute " method for executing options. This is the default behavior. </td> </tr> <tr> <td> SPAWN </td> <td> Causes the processor to spawn all DCL and Program type action items in a subprocess. </td> </tr> <tr> <td> TIMEOUT=n </td> <td> Sets the inactivity timeout interval to n minutes. </td> </tr> <tr> <td> NOTIMEOUT </td> <td> Disables inactivity timeout. This is the default behavior. </td> </tr> </table> <p> For example, to specify the spawn option and a timeout of 30 minutes use the following command: <p> <table border=0> <tr> <td> <br> <pre> $ DEFINE/SYSTEM OECN$MENU_BEHAVIOR "SPAWN,TIMEOUT=30" </pre> </table> <a name="move_files_head"><h1>Move Files to Appropriate Directories</h1></a> <p> Move the menu files (OECN$ROOT:[MENU.DIST]*.DAT) to the directory referenced by OECN$MENU$FILES. <p> Move the VMS Help libraries from the HELP package distribution directory to the directory referenced by OECN$HELP. <p> The users of the Menu Processor must have read access to the above files. <p> Also move the following files to the OECN$ directory: <blockquote> OECN$ROOT:[OECN.V1P0.DIST]MENU.EXE <br>OECN$ROOT:[OECN.V1P0.DIST]OECN_MENU.COM </blockquote> <p> The users must have execute access to these files. <a name="add_symbol_head"><h1>Add Global Symbol</h1></a> <p> Add the following symbol to either your SYLOGIN.COM or each user's LOGIN.COM who will be using the system: <p> <table border=0> <tr> <td> <br> <pre> $ OECN_MENU :== $OECN$:MENU </pre> </table> <p> This creates a foreign command that the OECN_MENU.COM procedure uses to invoke the Menu Processor. Other symbols may be necessary to make it easier for your users to invoke a menu. These symbols will be discussed in the <a href="oecn10_sysman_handbook_full.html#invoking_chap">Chapter 4, Invoking the Menu Processor</a>. The OECN_MENU symbol is the only required symbol. <a name="install_head"><h1>Install the Menu Processor</h1></a> <p> Although it is not necessary for proper execution of the Menu Processor, it is <strong>strongly</strong> recommended that you install the Menu Processor as a known image. <p> Because the Menu Processor does not spawn a subprocess it must be reactivated after each time the user selects a menu item. If the image is not installed, image activation will cause a noticeable delay in the Menu Processor. <p> The recommended method of installing the image is to add the following commands to your SYSTARTUP.COM: <p> <table border=0> <tr> <td> <br> <pre> $ INSTALL :== $INSTALL/COMMAND_MODE $ INSTALL ADD OECN$:MENU.EXE/OPEN/SHARED/HEADER </pre> </table> <p> <hr size=5> <a name="invoking_chap"><h1>Invoking the Menu Processor</h1></a> <p> The Menu Processor must be invoked via a command procedure that is provided as part of the OECN package. The Menu Processor depends on this command procedure to perform several vital functions and to actually execute any items selected by the user. Absolutely nothing useful will happen if the Menu Processor is invoked directly. <p> Additionally, the Menu Processor is invoked by the command procedure with a foreign command. Therefore the following symbol definition is required. See <a href="oecn10_sysman_handbook_full.html#add_symbol_head">Section 3.4, Add Global Symbol</a>. <p> <table border=0> <tr> <td> <br> <pre> $ OECN_MENU == "$OECN:MENU" </pre> </table> <p> To invoke the menu processor the following command must be used: <p> <table border=0> <tr> <td> <br> <pre> $ @OECN$:OECN_MENU [menu spec] [alias file] [menu_option] </pre> </table> <p> The OECN_MENU.COM command procedure is provided with the distribution and must be used to invoke the menu processor. <p> The first parameter is an optional menu specification that specifies the default menu file and menu to be used. If the menu specification is not supplied then OECN$MENU is used by default. See <a href="oecn10_sysman_handbook_full.html#menu_specs_head">Section 2.3, Menu Specifications</a> for more information about menu specifications. <p> The second optional parameter is the alias file for the menu system being invoked. If not specified then OECN$ALIAS is used by default. <p> The third optional parameter is a menu command, option or alias to be executed. If this parameter is specified then the menu processor will execute the option and return to DCL, the user will <strong>not</strong> be left in the menus after the option has finished executing. This could be used as a replacement for the DCL RUN command, particularly for batch procedures. This would insure that batch procedures do the same security checking as interactive processes. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> The menu processor will operate properly in batch only if the third parameter is supplied. If the parameter is not specified the menu processor will not function in batch. </td> </tr> </table> </center> <p> This command may be defined in a global symbol, invoked from a captive login procedure or from inside another procedure. No restrictions are placed on the method of invoking the Menu Processor. <a name="invoke_example_head"><h1>Examples</h1></a> <p> For most users the following symbol definition is sufficient: <p> <table border=0> <tr> <td> <br> <pre> $ MENU == "@OECN$:OECN_MENU" </pre> </table> <p> This will invoke the Menu Processor with the default menu and alias file. This will normally, unless changed by you, be the MAIN_MENU file, which contains menu items for all state software packages. <p> If users will be using the third parameter (or it will be used from batch) then the following symbol might be used: <p> <table border=0> <tr> <td> <br> <pre> $ MENU == "OECN$:OECN_MENU """" """" " </pre> </table> <p> This will leave the first two parameters as null (accepting the default menu and alias files) and allow the third parameter to be specified after the MENU symbol. <p> As another possibility, suppose that you have a payroll user that would rather be started out in the USPS menu. In this case put this symbol in that user's LOGIN procedure: <p> <table border=0> <tr> <td> <br> <pre> $ MENU == "@OECN$:OECN_MENU @PAY_MENU" </pre> </table> <p> This will put the user in the PAY_MENU directly. Note that this does not restrict the user to the PAY_MENU, it just starts them out in that menu. <p> <hr size=5> <a name="modifying_menus_chap"><h1>Modifying and Creating Menu Systems</h1></a> <p> The MENUEDT program is a fully functional maintenance program for modifying and creating menu files. Another program, MENUUTL, provides several necessary and useful utilities when manipulating the files, such as building the alias file and reporting functions. <p> <table border=3> <caption><a name="menu_type_tab"><strong> Menu Record Types</strong></a></caption> <tr> <th align=center>Record Type </th> <th align=center>Function </th> </tr> <tr> <td> File Header Record </td> <td> Contains information about the entire menu file. There is only one file header record per file. </td> </tr> <tr> <td> Menu Header Record </td> <td> Contains information specific to one menu. There is no structural or logical limit to the number of menus that may exist in a menu file. </td> </tr> <tr> <td> Item Record </td> <td> Contains the actual item that appears on a menu. Each item record belongs to one and only one menu. The number of items is limited by the Menu Processor to 50 items (about 4 screens). </td> </tr> </table> <p> The menu files and records form a <em>loose</em> hierarchy. That is, the hierarchy is created by the person developing the menu system. The hierarchy is not enforced by the MENUEDT program or even the Menu Processor. The menus can be connected in an almost limitless number of combinations. It is impossible for the MENUEDT program to know exactly what the runtime environment will be for the menu file. Thus, very little error checking is performed or even attempted. This means that menus that you modify or create should be tested thoroughly before being made available to your users. <a name="using_edt_head"><h1>Using MENUEDT</h1></a> <p> When you first run the MENUEDT program it will prompt you for the name of the menu file to modify. If the file does not exist it will be created. <p> <table border=3> <caption><a name="edt_options_tab"><strong> MENUEDT Main Menu Options</strong></a></caption> <tr> <th align=center>Option </th> <th align=center>Function </th> </tr> <tr> <td> Add </td> <td> Adds new records of any type. </td> </tr> <tr> <td> Change </td> <td> Enters change mode for the current record. </td> </tr> <tr> <td> Delete </td> <td> Deletes the current record. </td> </tr> <tr> <td> Top </td> <td> Goes to top of file (File header record). </td> </tr> <tr> <td> Find </td> <td> Finds a record by menu or item name. </td> </tr> <tr> <td> Next </td> <td> Goes to the next record. </td> </tr> <tr> <td> Simulate </td> <td> Simulates how the menu will look to the user. The simulation is approximate since the MENUEDT upper window is smaller than in the Menu Processor. </td> </tr> <tr> <td> Open </td> <td> Closes the current menu file and prompts for a new menu file to open. </td> </tr> <tr> <td> Exit </td> <td> Exits MENUEDT. </td> </tr> </table> <a name="menu_type_head"><h2>Menu File Record Types</h2></a> <p> This section and the following sections show sample screens that are used by MENUEDT to modify the various record types. After each screen is a detailed explanation of each field and its purpose. <a name="file_header_head"><h2>File Header Record</h2></a> <p> The first record in each menu file must be a File Header record and each file must contain exactly one Header record. <p> <table border=0> <tr> <td> <br> <pre> Menu File Header Record: 1. Desc: 2. Default menu: 3. Modify default security identifiers </pre> </table> <p> <table border=3> <caption><a name="file_header_fld_tab"><strong> File Header Record Fields</strong></a></caption> <tr> <th align=center>Field </th> <th align=center>Description </th> </tr> <tr> <td> Desc </td> <td> This description is used in the heading for all menus in this file. </td> </tr> <tr> <td> Default Menu </td> <td> Is the default menu for this file if the user does not specify a menu when the file is invoked. This menu will normally be the top-level menu for this file. </td> </tr> <tr> <td> Modify default security identifiers </td> <td> Enters the <em>Security Id Maintenance</em> screen to allow default security identifiers to be placed on the menu file. See <a href="oecn10_sysman_handbook_full.html#secur_id_screen_head">Section 5.1.5</a> for more information about security identifiers. </td> </tr> </table> <a name="menu_header_head"><h2>Menu Header Record</h2></a> <p> The Menu Header record contains information about each menu in the file. There must be exactly one Header record for each menu contained in the file. <p> <table border=0> <tr> <td> <br> <pre> Menu header record: 1. Menu Name : 2. Description : 3. Heading Type: 4. Help file : 5. Help topic : 6. Parent Menu : 7. Modify Security Identifiers </pre> </table> <p> <table border=3> <caption><a name="menu_header_fld_tab"><strong> Menu Header Fields</strong></a></caption> <tr> <th align=center>field </th> <th align=center>Description </th> </tr> <tr> <td> Menu Name </td> <td> Name of the menu. This is the name that will be displayed in the menu heading. </td> </tr> <tr> <td> Description </td> <td> This description is used in the heading for this menu. </td> </tr> <tr> <td> Heading Type </td> <td> Indicates what type of menu heading to use for this menu. <table border=3> <tr> <td> A </td> <td> Heading contains both the file description and the menu description. </td> </tr> <tr> <td> B </td> <td> Heading contains only the menu heading description. </td> </tr> </table> </td> </tr> <tr> <td> Help File </td> <td> The VMS Help file that will be used if the user enters HELP at this menu. </td> </tr> <tr> <td> Help topic </td> <td> The initial topic string used when the user enters HELP. </td> </tr> <tr> <td> Parent Menu </td> <td> Must contain the parent menu specification for this menu. This is the menu that the user will return to when they enter /EXIT or ^. If this field is blank then the menu is assumed to be the top level menu of the menu system. </td> </tr> <tr> <td> Modify security identifiers </td> <td> Enters the <em>Security Id Maintenance</em> screen to allow security identifiers to be placed on the menu. See <a href="oecn10_sysman_handbook_full.html#secur_id_screen_head">Section 5.1.5</a> more information about security identifiers. </td> </tr> </table> <a name="menu_item_head"><h2>Menu Item Record</h2></a> <p> One menu item record must be specified for each desired item on a menu. A menu can contain a maximum of 50 item records. If there are less than 8 items then the menu will be double spaced, otherwise the menu will be single spaced. If there are more items than will fit on one screen then the menu will be divided into multiple screens. <p> An item may be of one of four types, the value and meaning of the Action field is determined by the Item Type field. The four possible types and the meaning of the Action field are defined in <a href="oecn10_sysman_handbook_full.html#item_types_tab">Table 5-5</a>. <p> <table border=3> <caption><a name="item_types_tab"><strong> Menu Item Types</strong></a></caption> <tr> <th align=center>Item Type </th> <th align=center>Interpretation of Action Field </th> </tr> <tr> <td> D </td> <td> DCL command to execute </td> </tr> <tr> <td> DP </td> <td> DCL command to execute in Parent process </td> </tr> <tr> <td> P </td> <td> Program filespec to execute </td> </tr> <tr> <td> M </td> <td> Menu specification </td> </tr> <tr> <td> T </td> <td> Ignored </td> </tr> </table> <p> <table border=0> <tr> <td> <br> <pre> Menu Item record: 1. Menu Name: 2. Label : 3. Desc : 4. Item Type: 5. Action : 6. Item order#: 7. Modify Security Identifiers </pre> </table> <p> <table border=3> <caption><a name="menu_item_tab"><strong> Menu Item Fields</strong></a></caption> <tr> <th align=center>Field </th> <th align=center>Description </th> </tr> <tr> <td> Menu Name <sup>1</sup> </td> <td> Name of the menu that this item belongs to. </td> </tr> <tr> <td> Label <sup>1</sup> </td> <td> Label of this item that the user will use to reference this item. </td> </tr> <tr> <td> Desc </td> <td> Description displayed for this item. </td> </tr> <tr> <td> Item Type </td> <td> Indicates what type of item this is: <table border=3> <tr> <td> D </td> <td> DCL command </td> </tr> <tr> <td> DP </td> <td> DCL in Parent process </td> </tr> <tr> <td> P </td> <td> Program to be executed </td> </tr> <tr> <td> M </td> <td> Menu item </td> </tr> <tr> <td> T </td> <td> Text Item </td> </tr> </table> </td> </tr> <tr> <td> Action </td> <td> Contains the action to be performed when this item is selected. See <a href="oecn10_sysman_handbook_full.html#action_values_head">Section 5.1.4.1</a> for more information. </td> </tr> <tr> <td> Item order # </td> <td> This field is used to order the items on the menu. By default the items are in alphabetical order by Item Label. If you want to change the order of the items then you may put a number in the Item Order# field. This number does not affect the number that the user will use to invoke the item, it only affects the physical order of the items on the menu. </td> </tr> <tr> <td> Modify security identifiers </td> <td> Enters the <em>Security Id Maintenance</em> screen to allow security identifiers to be placed on the item. See section <a href="oecn10_sysman_handbook_full.html#secur_id_screen_head">Section 5.1.5</a> for more information about security identifiers. </td> </tr> </table> <hr> <sup>1</sup>Key fields of the menu file. However the MENUEDT program allows these fields to be changed. <br> <hr> <a name="action_values_head"><h3>Values for Action Field</h3></a> <p> Much of the Menu Processor's flexibility is provided by the values that may be placed in the Action field. The Action field and the Item Type field together determine what will happen when the user chooses an item from a menu. <p> <strong>Item Type D (DCL)</strong> <br> <p> If Type = "D" then Action must contain a valid DCL command. Any DCL command may be specified, including command procedures. These commands may be executed in subprocess depending on the setting of OECN$MENU_BEHAVIOR (See <a href="oecn10_sysman_handbook_full.html#option_exec_sect">Section 2.5</a>). For example, the following are valid for Action: <blockquote> MAIL <br>@PURGE_TEXT_FILES <br>Write sys$output "Hello there." </blockquote> <p> If the DCL command requires or allows parameters to be specified you may place a tilde (~) at the location where the parameters should be placed. <p> As a simple example, assume that you have a print procedure that allows the filename and the number of copies as parameters. Item Label is PRINT and the name of the command procedure is OECN$UTL:PRINT.COM. On the PRINT item record you would put the following in the Action field: <p> <table border=0> <tr> <td> <br> <pre> @OECN$UTL:PRINT ~ ~ </pre> </table> <p> When the user enters the PRINT item from the Menu Processor they may specify the parameters on one line. For example, the user could enter: <p> <table border=0> <tr> <td> <br> <pre> Menu> PRINT MYFILE.TXT 10 </pre> </table> <p> The DCL command that would be executed by the Menu Processor would be: <p> <table border=0> <tr> <td> <br> <pre> $ @OECN$UTL:PRINT MYFILE.TXT 10 </pre> </table> <p> Up to 8 parameters may be specified. Parameters containing spaces must be enclosed in quotes. (Parameters may not contain quotes.) Lowercase characters are preserved inside of quotes. Parameters are replaced from left to right. No other parsing of the parameters is done. Parameters are always considered to be optional, if the user does not specify a parameter then the tilde (~) will be replaced by a space. <p> <strong>Item Type DP (DCL in Parent)</strong> <br> <p> Type "DP" is identical to type "D" except that the Action line is always executed in the parent process. This only has an effect if the menu processor is in "spawn and execute" mode (See <a href="oecn10_sysman_handbook_full.html#option_exec_sect">Section 2.5</a>). <p> This item type should be used sparingly and only when the command <em>must</em> be executed in the parent process. This is only necessary when the commands being executed must affect both the parent and subprocess. Examples of such commands are: <ul> <li>Commands that change security identifiers <li>Commands that modify menu logicals or modes <li>Commands that spawn subprocesses with the /NOWAIT qualifier </ul> <p> <strong>Item Type P (Program)</strong> <br> <p> If Type = "P" then the Action field contains the full VMS file specification for an executable image to be executed by the DCL RUN command. The distinction between programs and DCL commands is made primarily for compatibility with the HP version of the Menu Processor. However, future VAX releases may take advantage of this distinction. <p> <strong>Item Type M (Menu)</strong> <br> <p> If Type = "M" then the Action field must contain a valid menu specification. This type of item allows the user to move from one menu to another at a lower level. The menu specified may be in the current menu file or may specify a completely different menu file. See <a href="oecn10_sysman_handbook_full.html#menu_specs_head">Section 2.3</a> for more information about menu specifications. <p> <strong>Item Type T (Text)</strong> <br> <p> If Type = "T" then the action line is ignored. Text items are used to put information or subheadings on a menu. For text items, the Description field is simply displayed on the menu without a label or an option number. <a name="secur_id_screen_head"><h2>Menu Security Screen</h2></a> <p> The <strong>Modify Security Identifier</strong> screen allows you to require that the user has specific VMS identifiers before they are allowed access to certain menu elements. <p> Security may be placed on any level: File, Menu or Item. If the user does not have access to a menu item, it will not appear on the menu. <p> Three levels of access can be specified for each identifier that appears on the Security Identifier screen: Read-only, Standard or Group Manager. See <a href="oecn10_sysman_handbook_full.html#security_ids">Section 5.1.5.1</a> for more information about how these identifiers are derived. <p> The following screen shows an example of a menu element that requires the user to have read-only access to the OECN_PPS identifier or standard access to the OECN_SALSIM identifier. Note that the user must only have one of the selected identifiers. Of course, users with OECN_SYSMAN access have access to all menu elements regardless of these identifiers. <p> <table border=0> <tr> <td> <br> <pre> 1) OECN_EDCIMS 9) OECN_SYSMAN 2) OECN_EIS 10) OECN_USAS 3) OECN_OECN 11) OECN_USPS R 4) OECN_PPS 12) OECN_VIS 5) OECN_PVS 13) OECN_USER1 S 6) OECN_SALSIM 14) OECN_USER2 7) OECN_SECIMS 15) OECN_USER3 8) OECN_SECIMS_GRPMAN 16) OECN_USER4 (R = Read-Only, S = Standard, G = Group Manager) </pre> </table> <p> Security will be propagated through the menu structure. If security is not specified for a menu element, then security will be inherited from the level above it. The following list details the rules that are used to determine how security is inherited. <ol start=1 > <li>If a menu item has no security specified for it, then security will be inherited from the menu header record to which the item belongs. <li>If a menu header has no security, then it will inherit its security from its parent's menu header record. This occurs until a parent record is found that contains security information, or the top-level menu is found within the current menu file. <li>The top-level menu of each menu file, will inherit security from the file header record. <li>If no security is specified, after rule #3 above, then there is no security required to access the menu element. </ol> <p> The identifiers OECN_USER1 through OECN_USER4 are for use locally at the A-sites. You may assign these identifiers in any manner you wish. For example, you may want to allow specific users to access VMS Mail. You could use OECN_USER1 to restrict a MAIL menu item to those users. These identifiers will not be used by SSDT in any State Software programs. <p> If four identifiers are not enough for your site, you may add new ones. Up to 16 identifier positions have been reserved for use at the A-site level. See OECN_IDS.LIB in OECN$LIB: for instructions. <a name="security_ids"><h3>Security Identifiers</h3></a> <p> The security identifiers that appear on the Security Identifier screen are the "standard" identifiers. Three possible identifiers exist for each standard identifier, which are used to specify three levels of access. These alternate identifiers are derived by adding a suffix to the standard identifier. <p> The following table lists the three access levels, in order of lowest level access to the highest. <p> <table border=3> <caption><a name="security_level_tbl"><strong> Security Access Levels</strong></a></caption> <tr> <th align=center>Access Level </th> <th align=center>Suffix </th> <th align=center>Description </th> </tr> <tr> <td> Read-Only </td> <td> _RO </td> <td> If a user holds the identifier then read-only access is granted. This user may execute read-only programs or have access to read-only functions within programs. </td> </tr> <tr> <td> Standard </td> <td> none </td> <td> If a user holds this identifier then the user is granted "standard" access to the identifier. This user is assumed to be a standard read-write user of the corresponding package. </td> </tr> <tr> <td> Group Manager </td> <td> _GM </td> <td> Users that hold this identifier are granted access to "group manager" functions. This user is assumed to hold special privileges within the corresponding package. </td> </tr> </table> <p> For example, for the OECN_USPS identifier there are really three identifiers that may be granted to a user. These identifiers are: <blockquote> OECN_USPS_RO <br>OECN_USPS <br>OECN_USPS_GM </blockquote> <p> All these access levels, and therefore all the identifiers, exist for all packages, even if the package itself does not implement the identifiers. In other words, the Menu Processor will test for all the identifiers, even if the individual package does not. <p> It also should be noted that the access levels will be applied to the A-site specific identifiers. That is, there will also be OECN_USER1_RO and OECN_USER1_GM identifiers available for use at the A-site level. <a name="menuutl_head"><h1>Using MENUUTL</h1></a> <p> The MENUUTL program provides some necessary functions for building, maintaining and documenting a menu system. The options provided are: <ol start=1 > <li>Build the Alias File <li>Simulated Menu Listing <li>Detailed Menu Report <li>Hierarchical Menu Listing </ol> <a name="build_alias_head"><h2>Building the Alias File</h2></a> <p> The first and the most important option of MENUUTL is the alias file build option. The alias file contains a pointer for each menu item in the system. Therefore, whenever you add or remove menu items from a menu file you must rebuild the alias file. <p> MENUUTL makes this process rather simple. All you have to do is run MENUUTL and choose option 1. MENUUTL will ask the following questions: <p> <table border=0> <tr> <td> <br> <pre> Physical name of top level menu file:___________ </pre> </table> <p> Enter the physical filespec of the top-level menu file. This is the current physical location of the top-level menu file. <p> <table border=0> <tr> <td> <br> <pre> Logical name of top level menu file:_____________ </pre> </table> <p> Enter the logical filespec of the top level menu file. This should be the logical name of the file that will be used when the user accesses the menu system. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> The physical and logical name should normally be the same. </td> </tr> </table> </center> <p> <table border=0> <tr> <td> <br> <pre> Enter new alias filename: ___________________ </pre> </table> <p> Enter the name of the new alias file to be built. The alias file is always rebuilt from scratch and a new version is created. <p> After prompting for these values, MENUUTL will begin reading through the specified menu file and add an alias for each item found. It will also search for references to other menu files. If such references are found, MENUUTL will search those files for menu items and add aliases for each one. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Important</strong></font></center><hr size=1 noshade> MENUUTL uses the OECN$MENU$FILES logical to search for the menu files in the same manner as will be used by the Menu Processor. Therefore, the runtime environment for MENUUTL must be the same as when the Menu Processor will be invoked. </td> </tr> </table> </center> <p> As stated earlier, all aliases must be unique across the entire menu system. If MENUUTL finds a duplicate alias name, an error message will displayed and the duplicate will not be added. Processing will continue and the alias file will be usable, but the alias for the duplicate item will not exist. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> You may also use the OECN$:BUILD_ALIAS.COM command procedure to build the alias file. This procedure will automatically build a new alias file using the current values of OECN$MENU$FILES, OECN$MENU and OECN$ALIAS. You can run this procedure after installing a new distribution or customizing menu files. If you frequently modify menu files, you could even run the procedure periodically in batch to ensure that the alias file is always up-to-date. </td> </tr> </table> </center> <a name="simulate_list_head"><h2>Simulated Menu Listing</h2></a> <p> This option will read through the specified menu file and create a simulated menu listing. The listing will display the menu in as close an approximation as possible on a hardcopy printer. The option will only report on one menu file at a time and will be sorted in alphabetical order by menu name. <a name="detailed_list_head"><h2>Detailed Menu Listing</h2></a> <p> The detailed menu report lists all available information about the specified menu file. This report is particularly useful for double checking the action fields and security. <a name="hier_list_head"><h2>Hierarchical Listing</h2></a> <p> This report will display the structure of the menu system. The menus are listed in the proper order as they appear on the menu. This option will prompt for the top level menu file and menu where the listing is to start. You need not necessarily start at the top of the entire menu system. <a name="osa_head"><h1>OSA</h1></a> <p> The OSA, OECN Security Authorization, Utility may be used in conjunction with the OECN Menu Processor to fine tune security access. OSA can be used to enable user's access to individual programs to be granted or denied. This <em>local security</em> is defined by each A-site and is maintained separately from the menu system included on the OECN distribution. (See also VMS Manager's Guide) <p> <hr size=5> <a name="custom_chap"><h1>Customizing Menus from the Distribution</h1></a> <p> This chapter describes the recommended procedure for customizing the menu files from the distribution. Following this procedure will ensure that you can install future releases with minimum effort and maintain a consistent user interface across the state. <p> Each major package has its own menu file. The file name for the primary menu file ends with _MENU and has an extension of .DAT. For example, the USAS menu file is named BUD_MENU.DAT. On the main menu of each package there is an item that links to a <em>local</em> menu file. This local menu file is an empty menu file that you may customize as you wish. The local menu filenames end with _LCL. Therefore, the USAS local menu is named: BUD_LCL.DAT. <p> It is recommended that you only modify the *_LCL menu files. If you modify the other primary menu files, you will not be able to install updated menu files in the future without making all of your modifications over again. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> Security for all menu items may be customized, even if they are part of the distribution, without modifying the menu files. This is accomplished by using the OECN Security Authorization (OSA) utility. See the <em>OECN Software Security for the VMS System Manager</em> manual for information about the OSA utility and local security. </td> </tr> </table> </center> <a name="local_head"><h1>Modifying a Local Menu File</h1></a> <p> Following is the recommend procedure for modifying one or more menu files. <ol start=1 > <li>Redefine the OECN$MENU$FILES to be a search list. <li>Modify the Menu Files <li>Build a New Alias File <li>Redefine OECN$MENU$FILES permanently </ol> <a name="redefine_logical_head"><h2>Redefine the OECN$MENU$FILES logical</h2></a> <p> The first step is to redefine OECN$MENU$FILES as a search list. For consistency with other customized files, it is recommended that you use OECN$CUSTOM. However, you may use any directory that you wish. The rest of this chapter assumes that you are placing the customized menu files in OECN$CUSTOM. For example: <p> <table border=0> <tr> <td> <br> <pre> $ DEFINE/SYSTEM OECN$MENU$FILES - _$ OECN$CUSTOM,DUA0:[ODE.MENU.DIST] </pre> </table> <p> This will cause the Menu Processor and MENUUTL to search first through OECN$CUSTOM and then the distribution menu files. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> You may want to make this logical assignment in your current process, instead of at the SYSTEM level, while changing the menu files. This will prevent any users from getting into a half completed menu. </td> </tr> </table> </center> <a name="heading_6.1.2"><h2>Modify the Menu Files</h2></a> <p> Copy the *_LCL.DAT menu files that you want to modify from the distribution into OECN$CUSTOM. Then use MENUEDT to make the desired modifications. By making all modifications in OECN$CUSTOM: will insure that installing future releases will not overlay your customized local menus. <p> Use the Menu Processor and MENUUTL to test the new menus as needed. If you're creating new menus, be sure that the users have read access to the new files. <a name="heading_6.1.3"><h2>Build a New Alias File</h2></a> <p> After all desired changes have been made, use MENUUTL to rebuild the alias file. You may put the alias file in OECN$CUSTOM or simply replace the current alias file in OECN$ALIAS. If you change the location of the alias file be sure to redefine the OECN$ALIAS logical. <p> You may build the alias file manually by running MENUUTL, or you may use the BUILD_ALIAS.COM procedure in the OECN$ directory. <a name="heading_6.1.4"><h2>Redefine OECN$MENU$FILES Permanently</h2></a> <p> If you have not already done so, define the logical OECN$MENU$FILES to be a search list as above at the SYSTEM level. <p> At this point your users should have access to the customized menus. <a name="heading_6.2"><h1>After a Distribution</h1></a> <p> If you modify the local menu files in this way, your changes will not be affected by any future releases. Changes made by SSDT will automatically be installed when you copy the distribution menu files to the OECN$MENU$FILES directory. <p> However, you will have to rebuild the alias file after installing each distribution. After a package has been installed and the menu files moved to thier proper location, you must rebuild the alias file. <p> You may build the alias file manually by running MENUUTL, or you may use the BUILD_ALIAS.COM procedure in the OECN$ directory. The BUILD_ALIAS.COM procedure will automatically build a new alias file using the files in OECN$MENU$FILES. You can run the procedure interactvely by typing: <p> <table border=0> <tr> <td> <br> <pre> $ @OECN$:BUILD_ALIAS </pre> </table> <p> Or you can submit it for batch processing using DCL SUBMIT. By default, BUILD_ALIAS will rebuild the default menu system based on the current values of OECN$MENU$FILES, OECN$MENU and OECN$ALIAS logicals. If you have other menu systems on your system, you can pass parameters to BUILD_ALIAS to indicate the location and names of the menu and alias files. See the comments in BUILD_ALIAS.COM for more information about using this procedure. <a name="intercept_head"><h1>Intercepting Menu Actions</h1></a> <p> Sometimes it is desirable, or necessary, to redefine the action associated with a menu item. For instance, you may want to force certain actions prior to running a particular program or force certain options to run in batch. <p> This may be done by intercepting the action line of specific options <em>without</em> modifying the menu files supplied by SSDT. You must write a DCL command procedure that will replace the action line you are going to intercept. Then assign a special logical to point to this command procedure. <p> The logical must be defined as follows: <p> <table border=0> <tr> <td> <br> <pre> $ DEFINE/SYSTEM OECN$MENU_ACTION_label filespec </pre> </table> <p> Where <em>label</em> is the menu option label that you want to intercept and <em>filespec</em> is the full filespec of the DCL command procedure. The logical may be defined at the system, group or process level, so you may intercept the action line for different classes of users. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> If the logical is defined system-wide it will affect all menu systems that you have active on your system. If you have multiple menu systems that contain the same label then they will all be affected. If this is not what you want you may need to define this logical at the group or process level. </td> </tr> </table> </center> <p> After this logical is defined the command procedure will be executed <em>instead of</em> the action line defined by the menu file. <p> The following parameters will be passed to the command procedure : <table border=3> <tr> <td> P1 </td> <td> Menu label name that invoked the procedure </td> </tr> <tr> <td> P2 </td> <td> Original action line defined by the menu file </td> </tr> <tr> <td> P3-P8 </td> <td> Other parameters entered by the user </td> </tr> </table> <p> The procedure may use these parameters as it wishes or ignore them. <p> For example, suppose that you want to automatically execute a backup of the USPS files prior to the user running BUDDIS. The following procedure, called PAY:BUDDIS_ACTION, might be used: <p> <table border=0> <tr> <td> <br> <pre> $! $! PAY:BUDDIS_ACTION.COM -- Procedure used by the BUDDIS menu option $! $ on error then exit $ $ @PAY:SAVEPAY ! A-site procedure to perform disk backup set of $ ! USPS files. $ $ DEFINE/USER SYS$INPUT SYS$COMMAND $ RUN OECN$PAY:BUDDIS $ $ EXIT </pre> </table> <p> The following logical definition would be made to intercept the BUDDIS action for all users: <p> <table border=0> <tr> <td> <br> <pre> $ DEFINE/SYSTEM OECN$MENU_ACTION_BUDDIS PAY:BUDDIS_ACTION </pre> </table> <p> <hr size=5> <a name="batch_mail_chap"><h1>Batch Mail Message System Manager Guide</h1></a> <a name="heading_7.1"><h1>Overview</h1></a> <p> The command procedure BATCH_MAIL_MESSAGE.COM can be used to send a VMS mail message via a batch job. This is useful for messages with large audiences where the user does not wish to tie up their terminal for an extended period of time. <a name="heading_7.2"><h1>Sending a Mail Message via Batch</h1></a> <p> To use the command procedure for generic mail messages: <p> Create the desired mail message using a text file. <p> Submit the procedure as follows supplying the necessary parameter values: <p> <table border=0> <tr> <td> <br> <pre> $ SUBMIT OECN$:BATCH_MAIL_MESSAGE/PARAMETER=("P1","P2","P3","P4") </pre> </table> <p> Where: <ul> <li>P1 - Name of the text file to be mailed. <li>P2 - VMS mail address the text file will be sent to. <li>P3 - Text that is to be displayed on the Subject Line of the message. <li>P4 - Y/N (yes/no) flag that indicates whether or not to delete the text file containing the message after it is sent. </ul> <p> <hr size=5> <a name="oecn_view_chap"><h1>OECN VIEW Utility</h1></a> <a name="heading_8.1"><h1>Overview</h1></a> <p> The OECN_VIEW utility allows users to view text files on the screen. It can be used for report files produced by OECN state software or other text documents. OECN_VIEW is a TPU based product, layered on DEC/EVE. <p> By default, OECN_VIEW will search for files in OECN$OUT which have the following extensions: *.TXT, *.LIS, *.DOC, *.RPT, *.LPT, *.RPT. These are the only files that OECN_VIEW will show to the user when they use the "Go_File" function or invoke VIEW without a file name. <p> However, A-sites may customize both the directory and/or the extension if desired. Define the OECN_VIEW_DIRECTORY logical to define the directory(ies) to be searched. It may be a search-list. The default for OECN_VIEW_DIRECTORY is OECN$OUT. <p> In order to change the file extensions, define the logical OECN_VIEW_FILES to be a search list containing the filespecs to search. Each entry in the search list must refer to OECN_VIEW_DIRECTORY. <p> Examples of the logicals are given below: <a name="heading_8.2"><h1>OECN_VIEW.COM</h1></a> <p> The OECN_VIEW.COM command procedure is found in OECN$. It is used to define the two logicals, OECN_VIEW_DIRECTORY and OECN_VIEW_FILES. Observe the following notes from this procedure. <p> <table border=0> <tr> <td> <br> <pre> $!+ $! Notes: $! $! This procedure is a shell for the OECN_VIEW utility. It provides $! defaults for the file directory and file types that the user may view. $! $! A-sites can configure VIEW to behave differently if desired by defining $! the following logicals: $! $! OECN_VIEW_DIRECTORY = Defines the directory OECN_VIEW will search $! when user uses the 'Go File' command or invokes $! VIEW without a file name. This logical may $! be a search list. The default is OECN$OUT. $! $! OECN_VIEW_FILES = Filespecs which user can see when the use $! 'Go file'. The logical should be a searchlist $! containing wildcard specfications for the files $! names or types the user can view. Each $! equivalence string must refer to OECN_VIEW_DIRECTORY $! for the device/directory. That is, OECN_VIEW_FILES $! should specify just the wildcard filename and type. $!- </pre> </table> <a name="heading_8.2.1"><h2>Customizing OECN VIEW</h2></a> <p> The following sample command file shows how to customize the directories and the file extensions to be viewed. <p> <table border=0> <tr> <td> <br> <pre> $!+ $! VIEW_EXAMPLES.com $! $! Example of using OECN_VIEW to view shared documents. This $! command procedure may be added to a local menu to allow $! users to view documents on-line. $! $! In this example, users are given the ability to view internet documents. $! Allows users to view *.TXT and *.DOC files in the directory $! PUB:[INTERNET_DOCS]. $! $! - $ set noon $ set noverify $ $ define/user OECN_VIEW_DIRECTORY PUB:[PUBDOM.NWOCA.INTERNET_DOCS] $ $ define/user OECN_VIEW_FILES OECN_VIEW_DIRECTORY:*.TXT,- OECN_VIEW_DIRECTORY:*.DOC $ $ @oecn$:oecn_view $ $exit </pre> </table> <a name="heading_8.2.2"><h2>Creating a DCL Command</h2></a> <p> The VIEW utility works automatically from the MENU. However, you could define a symbol to execute VIEW from DCL. <p> For example, define: <p> <table border=0> <tr> <td> <br> <pre> LOOK := = @OECN$:OECN_VIEW </pre> </table> <p> Then use the LOOK command from the $ prompt. <a name="heading_8.2.3"><h2>OECN_EDIT</h2></a> <p> The OECN_VIEW utility uses a special editor called OECN_EDIT. Its purpose is to provide I/O routines to allow TPU to automatically read and translate VFC files into text. Please see <a href="oecn10_sysman_handbook_full.html#oecn_edit_chap">Chapter 9, OECN EDIT Utility</a>, for more details. <p> <hr size=5> <a name="oecn_edit_chap"><h1>OECN EDIT Utility</h1></a> <a name="heading_9.1"><h1>Overview</h1></a> <p> OECN_EDIT is a foreign command replacement for the EDIT/TPU DCL command. It is completely command line (qualifier and parameter) compatible with EDIT/TPU. Its purpose is to provide I/O routines to allow TPU to automatically read and translate VFC files into text. When using OECN_EDIT, all VFC files read by TPU are converted into text with form-feed and line-feed characters to preserve formatting. All other file types are NOT affected by OECN_EDIT and are read normally by TPU. This is different from the default TPU editor, which ignores VFC formatting. OECN_EDIT is used by the OECN_VIEW.COM procedure to allow VFC files to be viewed correctly. However, it may also be used with any TPU section file as an editor. <a name="heading_9.2"><h1>Using OECN_EDIT</h1></a> <p> In order to use OECN_EDIT as your interface to TPU, define the following symbol: <p> <table border=0> <tr> <td> <br> <pre> $ EDIT := = $OECN$:OECN_EDIT/TPU </pre> </table> <p> Note: The /TPU qualifier is required. <p> You may also include other qualifiers which you would normally use with EDIT/TPU, such as /SECTION, /UNIT, etc. OECN_EDIT will use the normal EVE section and initialization files by default. <p> <hr size=5> <a name="oecn_keymap_chap"><h1>OECN KEYMAP Utility</h1></a> <a name="heading_10.1"><h1>Overview</h1></a> <p> The OECN_KEYMAP utility allows users to select a terminal emulator, such as REFLECTIONS, EXCURSIONS, or PERSONA. Using this utility defines the logical OECN$KEY_MAP to point to a .INI file containing the desired keymapping. The mapping allows you to re-label the standard function keys. You cannot actually reassign the program functions to different keys. That is, from the programs point of view, the user is required to press a VT200 F11 for the "Find" function. However, you can assign F11 to any PC key you wish in the emulator and then relabel F11 on the screen to match the PC keyboard. <a name="heading_10.2"><h1>Using KEYMAP</h1></a> <p> Upon selecting the KEYMAP option from the OECN menu the user is given a list of keymapping options to select from. This menu of options is built by searching for all files named OECN$KEYMAP*.INI in either the OECN$ or the OECN$CUSTOM directory. If the same filename is found in both directories, only the one in OECN$CUSTOM will be used. The description used in the menu will be determined by whether or not a "DESCRIPTION=xxx" command is used. If the command is found in the .INI file, the description will be used for the menu, otherwise the filename will be used in the menu. <p> When a user selects their option, the name of the .INI file selected is recorded in a file called OECN$KEYMAP.DAT in their SYS$LOGIN directory. If keymapping is turned off, the OECN$KEYMAP.DAT file is deleted from the SYS$LOGIN directory. <p> The OECN_LOGIN procedure has been modified to look for the existence of this file and define the OECN$KEY_MAP logical to point to the .INI file found in the .DAT file. After selecting their option in KEYMAP, OECN_LOGIN will be immediately executed causing the logical to be defined for that process. Then, each time the user logs in, OECN_LOGIN will check for the OECN$KEYMAP.DAT file and set the OECN$KEY_MAP logical appropriately for that process. <p> The following standard .INI files have been created: <ul> <li>OECN$KEYMAP_EXCURSIONS.INI <li>OECN$KEYMAP_PERSONA.INI <li>OECN$KEYMAP_REFLECTIONS_MAC.INI <li>OECN$KEYMAP_REFLECTIONS_PC.INI </ul> <p> These files may be used as a starting point to create other .INI files for other terminal emulators that may be in use by districts or to support customized key mappings for districts. Instructions are included at the top of the .INI files which explain how the files need to be formatted and which keys are able to be mapped. It is recommended that the new .INI file be placed in the OECN$CUSTOM directory and be given a different name if it is to be an additional menu option. It is also recommended that the description inside the .INI file be changed to something meaningful to the user as this is what they will see in the KEYMAP menu. <p> <hr size=5> <a name="oecn_setupenv_chap"><h1>OECN SETUPENV Utility</h1></a> <a name="heading_11.1"><h1>Overview</h1></a> <p> SETUPENV is a general purpose utility for establishing or switching to user environments. The goal of the utility is to provide a single place to configure the software environment (primarily logicals) for given entities and allow user processes to configure based on these environment settings. <p> The concept for SETUPENV is similar to the BUNNY/FROG utilities available from NOACSC. However, it is intended to be more flexible and capable of configuring multiple environments. SETUPENV is not tailored to any particular software product. It may be used in the configuration of state software, McSIS, InfOhio, or any other software that requires logicals in establishing a user's environment. <p> The general goals of the utility are as follows: <ol start=1 > <li>To provide a single location for all configuration information. <li>To provide a means for processes to establish a default context during login. <li>To provide a means for users to change contexts using an interactive (or DCL) interface. <li>To allow DAS personnel the ability to switch to any context using the same rules as a user's process. <li>To provide compatibility with BUNNY, FROG, and USE to make the transisition to the new utility easier. <li>To provide DCL and API interfaces which allow other utilities the ability to find and establish contexts. <li>To provide support for common OpenVMS configuration methods in use by DA Sites, including group tables and shared logical tables. </ol> <a name="heading_11.2"><h1>Getting Started</h1></a> <p> The SETUPENV utility is very flexible allowing the capability to deal with the variety of possible setups in use at the OECN DA Sites. This flexibility leads to a significant number of options in both the DCL command interface and options available in the OECN$SETUP initialization file. However, it is unlikely that any one DA Site will need all of the features provided by SETUPENV. Most sites will only need a limited set of options. <p> To get started with SETUPENV it is recommended that a simple OECN$SETUP file with a minimal set of options for just a few entities be created. Starting small will give the opportunity to experiment with the utility to see how, or if, it can fit into your environment. <a name="heading_11.2.1"><h2>Entity Types</h2></a> <p> SETUPENV manages a user's context by assuming that any given process will have one context in each of the four entity "types". The current types of entities are: <ul> <li>DISTRICT <li>BUILDING <li>LIBRARY <li>OTHER </ul> <p> Therefore, a user may have one entity selected in each of these types and change the context for one entity without affecting the others. For example, a user might have a context in DISTRICT_A and BLG_B but be eligible to switch into several different LIBRARY entities. SETUPENV will allow the user to switch into different libraries without affecting the current district and building. <p> Entities can be linked together to form logical hierarchies. For example, a district entity might define the context for USPS, USAS, and EMIS. A building entity might define the context for McSIS. When a user selects a building, it may be desirable for the user's process to also select the corresponding district entity so that the EMIS logicals are switched automatically. SETUPENV can handle these relationships using the PARENT attribute in the OECN$SETUP file. Please refer to the PARENT attribute for more information. <p> <a name="heading_11.2.2"><h2>DCL Command Syntax</h2></a> <br> <p> SETUPENV must be defined as a foreign command: <br> <p> <table border=0> <tr> <td> <br> <pre> $ SETUPENV :== $OECN$:SETUPENV </pre> </table> <p> Syntax: <br> <p> <table border=0> <tr> <td> <br> <pre> $ SETUPENV [entry_code...] [/MENU] [/NEXT] [/RESET] [/LOGIN[=([SIS],[INFOHIO],[BY_ACCESS],[USERNAME[=n]])] [/TYPE={DISTRICT,BUILDING,OTHER,ALL] [/LOG] [/[NO]PROMPT] [/CATEGORIES={wildcard}] [/APPLICATION={application}] [/ARCHIVE=[archive_code]] [/[NO]RESTRICT_IRNS] [/PRINT] [/USE] [/BUNNY] [/FROG] </pre> </table> <ul> <li><strong>ENTRY_CODE</strong> indicates the entry(s) to be selected from the OECN$SETUP.INI file. The INI file indicates the environment to be established for each entry. Multiple entries may be set by enclosing the entry codes in quotes separated by commas. When setting multiple entries, the first entry is considered to be the primary entry. <li><strong>/MENU</strong> indicates the user should be presented a menu to select an entry based on their process security. /MENU is the default for interactive processes when there are no other qualifiers and no parameter specified. <li><strong>/RESET</strong> attempts to reset the current process to it's original state. Any "reset" entries existing on the INI file are used to determine which logicals should be reset. If there are no reset entries on the INI file, the LNM$FILE_DEV logical will be the only one returned to it's original state. <li><strong>/LOGIN</strong> instructs SETUPENV to attempt to determine the user's default login context. If a specific entry code(s) is specified with /LOGIN, the specified entry will override the defaults. The following flags may be included to control how SETUPENV/LOGIN determines the default entries: <ul> <li><strong>SIS</strong> searches the process' rightslist for identifiers in the format SIS_x. For the first such identifier "x" is used as the default entry. <li><strong>INFOHIO</strong> searches the process' rightslist for identifiers in the format INFOHIO_x. For the first such identifier "x" is used as the default entry. In order to avoid potential conflicts with SIS entry codes, SETUPENV will first look for an entry named "x_LIB". If and x_LIB entry is found, it will be used as the default InfOhio entry, otherwise just "x" will be used. <li><strong>BY_ACCESS</strong> indicates that SETUPENV should determine the user's default entry by checking security access to the entries. SETUPENV will scan OECN$SETUP file and find the first entry of each type (DISTRICT, BUILDING, LIBRARY, OTHER) to which the user has access making this the default. BY_ACCESS should only be used by DA Sites who have carefully placed proper identifiers on entries to allow access to appropriate users. <li><strong>USERNAME=n</strong> uses the first "n" characters of the username as the entry code. This is useful for sites who use a username prefix to indicate districts and who have set up matching entry codes in the OECN$SETUP file. </ul> <br>SETUPENV/LOGIN will also (unconditionally) search for an identifier called "SETUPENV_xxx". If the user has such an identifier, then it is always used as the default entry, superceding the default provided by the above flags. This serves as a means to provide a specific default for users who may have access to multiple entries. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> When /LOGIN is specified, SETUPENV will not issue errors if a default entry can not be found. This allows SETUPENV/LOGIN to be used in system-wide login procedures even for users who do not normally need a specific software context. </td> </tr> </table> </center> <li><strong>/NEXT</strong> indicates that the next entry should be selected based on the current or specified entry. If an entry is specified as a parameter, then the entry selected will be the one immediately following it. Otherwise, the values of the OECN$SETUP_CURRENT_* logicals are used to determine the current entry. The primary purpose of /NEXT is to allow DCL procedures to process all or selected entries sequentially. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> If /TYPE is not specified to indicate the type of the next entry, then the /TYPE defaults to the same type as the current entry (OECN$SETUP_ENTRY). That is, by default, /NEXT moves to the same type of entry as the current entry. If there is no current entry, then the default is DISTRICT. </td> </tr> </table> </center> <li><strong>/TYPE</strong> may be used in conjunction with /NEXT or /MENU to determine the type of entry that may be considered. For example, if /TYPE=DISTRICT is specified with /NEXT, then only district entries will be considered. The default for /NEXT is DISTRICT. The default for /MENU is ALL. <li><strong>/CATEGORIES</strong> may be used with /NEXT or /MENU to select only entries where the CATEGORIES attribute matches the specified wildcard. <li><strong>/APPLICATION</strong> may be used with /NEXT to select only entries containing the specified application. Only one application may be specified and it must exactly match an application specified on the entries APPLICATION attribute. <li><strong>/[NO]PROMPT</strong> causes the user's DCL prompt and OECN Menu prompt to be set to a value representing the entry(s) selected. /NOPROMPT is the default. <li><strong>/LOG</strong> indicates an informational message should be displayed indicating the entry selected. If multiple entries are set as a result of the command, only the primary entry is displayed. <li><strong>/ARCHIVE[=archive_code]</strong> indicates which archive is to be selected. If a specific archive is provided and it exists for the entry, then the logical and table definitions for the archive will be set. If no archive is specified, then the first archive for the selected entry will be used. If /ARCHIVE is specifed with /MENU, the archvives will be presented to the user as seperate choices on the menu. <li><strong>/RESTRICT_IRNS</strong> determines if SETUPENV should attempt to define the OECN$EMIS_RESTRICT_IRNS logical. This logical is set by checking all the entries which have a relationship (parent, child, or sibling) based on the PARENT attributes. For each such entry, the users access to the entries is checked (based on the IDENTIFIER attributes). If the user has access to the entry, then the IRN of the entry is added to the OECN$EMIS_RESTRIC_IRNS logical. <li><strong>/PRINT</strong> attempts to determine the user's default printer using a convention from NOACSC. The "owner" field for the current user is retrieved from SYSUAF. If the owner field contains a slash (/) the characters after the slash are tested to see if it contains a valid queue name. If not, "$PRINT" is appended to the string from the owner field and is again tested as a queue. If either value translates to a valid queue name (other than SYS$PRINT), then SYS$PRINT is defined as a logical to point to the queue. The OECN_PRT symbol is also defined to print to the queue. <li><strong>/EMIS</strong> places SETUPENV in "EMIS" mode. In this mode, SETUPENV simulates the behavior of EMIS_SELECT.COM. The OECN$EMIS_DBS file is read and handled in the same manner as EMIS_SELECT. In this mode, the meaning of the "entry code" parameter is the DBS code of the EMIS database, instead of a SETUPENV entry code. The following qualifiers are valid with /EMIS: <ul> <li>/NEXT <li>/RESET <li>/MENU <li>/CATEGORIES <li>/LOG </ul> <br>See the "EMIS_SELECT Compatibility" section for more information. <li><strong>/USE, /BUNNY, /FROG</strong> provide compatibility with the corresponding NOACSC's utilities. When one of these qualifiers is specified, the utility accepts the corresponding utilitie's qualifiers and converts them to the nearest SETUPENV equivalent. See the "NOACSC Compatibility" section for more information. </ul> <h2>Usage Notes</h2> <p> When /NEXT is used, if the specified or next entry cannot be found SETUPENV exits with an error severity. <p> After successfully selecting an entry, OECN_LOGIN.COM is executed to ensure the users OECN$x logicals are set correctly. If the DAS has established the OECN_LOGIN_EPILOGUE procedure, it will subsequently be executed. This provides a means for the DAS to customize the behavior and do any additional processing after an entry is selected. <p> Likewise, when /EMIS is specified, EMIS_SELECT_EPILOGUE and EMIS_SWITCH_FY will be invoked after successfully selecting a database. <a name="heading_11.3"><h1>Logicals Created By SETUPENV</h1></a> <p> After successfully selecting an entry, SETUPENV establishes a series of logicals (OECN$SETUP_*) to describe the current context and to maintain it's own context for subsequent invocations of SETUPENV. These logicals may be used by DCL procedures but should never be modified or deassigned (use SETUPENV/RESET to deassign the logicals if necessary). <p> The logical OECN$SETUP_ENTRY contains the current selected entry. This is the primary entry that was specified as a parameter, selected via the menu, or selected using /NEXT. <p> The logical OECN$SETUP_ARCHIVE contains the archive code if one was selected using /ARCHIVE or the menu. <p> One logical is defined for each of the entry types that has been selected. A user can have one context in up to four different "types" of entries: DISTRICT, BUILDING, LIBRARY, OTHER. For each type that has been selected, the corresponding logical will be defined: <ul> <li>OECN$SETUP_CURRENT_DISTRICT <li>OECN$SETUP_CURRENT_BUILDING <li>OECN$SETUP_CURRENT_LIBRARY <li>OECN$SETUP_CURRENT_OTHER </ul> <p> The logical will not exist for types that have not been selected. <p> The value of the OECN$SETUP_CURRENT_* logicals is a string that describes the selected entry. The format for the string entry is: <p> <table border=0> <tr> <td> <br> <pre> "entry_code,irn,categories,applications" Where: entry_code the entry for this type irn from IRN attribute categories space delimited list of categories from CATEGORIES attribute applications space delimited list of applications from APPLICATIONS attribute </pre> </table> <p> This string is formatted in a manner that is easily parsed using the F$ELEMENT lexical function. <p> The following logicals may also be defined depending on the selected entries relationship with other entries: <ul> <li><strong>OECN$SETUP_PARENT</strong>---Contains the PARENT entry for the current entry <li><strong>OECN$SETUP_CHILDREN</strong>---Contains a list, separated by commas, of the children for the current entry. That is, a list of entries which contain a PARENT pointing to the current entry. <li><strong>OECN$SETUP_SIBLINGS</strong>---Contains a list, separated by commas, of "siblings" (excluding the current entry). That is, a list of entries that share the same parent entry. </ul> <p> Any of the logicals that do not apply to an entry will not be defined (e.g. for a parent entry, the siblings logical will not be defined). <a name="heading_11.4"><h1>OECN$SETUP.INI</h1></a> <p> The OECN$SETUP initialization file defines the environment for various entities which use OECN (or other) software products. The default filename is OECN$CUSTOM:OECN$SETUP.INI. OECN$SETUP may be defined as a logical to override the location and filename. <p> Each "section" in the INI file describes an "entity". An entity might be a district, building, library or other entity where a specific context needs to be established. When the SETUPENV utility is executed to select an entity, the context is defined as specified in the rules for that section. <p> The parameters and formats for each section are as follows: <ul> <li><strong>SECTION={entity_code}</strong> <br>The SECTION statement begins a new entity definition. The entity code may be up to 12 alphanumeric digits. This is the code used to select the entry and is seen on the menu. This code must uniquely identify each entity regardless of type (i.e. You must not specify a district and building entity with the same code). <li><strong>DESCRIPTION="text"</strong> <br>Text description for menu <li><strong>TYPE={DISTRICT|BUILDING|LIBRARY|OTHER}</strong> <br>Indicates the type of entity. If TYPE is not specified, the default is DISTRICT. A user can have context in each of these types at one time. <li><strong>CATEGORIES="string"</strong> <br>An unformatted string that may further define the entry. Except where otherwise indicated, the categories are site defined. It might be used as flags to indicate processes that may be run against the entry. Entries may be selected by category using the /CATEGORIES qualifer. The categories for each selected type is also returned to DCL via the OECN$SETUP_CURRENT_* logicals. <li><strong>APPLICATIONS={app}[,...]</strong> <br>List of applications used by the entry. Each application is a site defined code of up to 10 characters. Five applications may be specified on each APPLICATIONS line. Multiple APPLICATIONS lines may be specified if needed. <br><strong>Note:</strong> Although the applications are site defined, the SSDT and other software providers may require specific application codes. It is recommended that you use these codes for established applications: <blockquote> USPS <br> USAS <br> EMIS <br> EIS <br> VIS <br> SIS (McSIS) <br> INFOHIO </blockquote> <li><strong>IRN={irn}</strong> <br>Optional IRN for the entry. Returned to DCL via the OECN$SETUP_CURRENT logical and optionally used in the OECN$EMIS_RESTRICT_IRNS logical. <li><strong>PROMPT="prompt string"</strong> <br>Optionally specifies the prompt string to be used if this entry is selected. This value overrides the default prompt. The default prompt is the list of entry codes currently selected. <li><strong>ARCHIVE={archive_code},[description],[table]...</strong> <br> Declares this entity to have an "archive". Archives can be selected using the /ARCHIVE qualifier. If a code is specified on the /ARCHIVE qualifier, then the corresponding archive items are also processed when the entry is selected. When /ARCHIVE is used with /MENU, then the archive definitions are listed on the menu as separate items which the user can select. <br>The optional table parameter indicates additional table(s) which should be placed in the LNM$FILE_DEV search path. If specified, they will be placed on the path before the other shared tables (TABLE and GROUP_TABLE). This permits definitions for archive logicals to be placed in special shared logical tables for use as an archive. <br>A multiple ARCHIVE attributes might be included for each fiscal year, or it may be a generic archive setting which requires an additional step (outside of SETUPENV) to complete establishing the archive environment. The usefulness of this attribute depends largely on how the DAS currently has archives defined and whether/how they are user selectable. <li><strong>LOGICAL={logical_name[@archive_code]}[,CONCEALED] [,IF_EXISTS],[values]...</strong> <br> Specifies a process logical to define. Multiple values may be included to define a search list. If a logical name is specified without any values, then the logical will be deassigned. <br> If the CONCEALED keyword is included, then the logical will be concealed. <br><strong>Conditional Logicals</strong> <br>The IF_EXISTS keyword causes the logical to be defined conditionally based on the presence of the file specified in the value. The logical will only be created if the file specified in the first value exists. In this case, the value should contain a complete filespec. For example an EMIS entry might specify: <p> <table border=0> <tr> <td> <br> <pre> LOGICAL=OECN$EMIS_STU_SEARCH,IF_EXISTS,OECN$EMIS$DTA:EMSALT.IDX LOGICAL=OECN$EMIS$DTA,CONCEALED,EMIS_ROOT:[LIVE] </pre> </table> <br> In this case, OECN$EMIS_STU_SEARCH will only be defined if the OECN$EMIS$DTA:EMSALT.IDX file exists. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> SETUPENV defines logicals in the reverse order that they appear in the section. Therefore, conditional logicals should be placed prior to any logicals which they refer to. </td> </tr> </table> </center> <br><strong>Archive Logicals</strong> <br>If an optional archive code is included after the logical name (by specifying the archive code after an "@") then the logical will only be defined if the corresponding ARCHIVE code is selected (via the /ARCHIVE qualifier or the menu). Logicals which contain the archive code will be processed after any normal logicals and therefore will supercede any previous definition of the same logical. <br> The archive code on each logical should match an archive code specified in an ARCHIVE attribute. The ARCHIVE attribute will provide the description for the menu when the archive is displayed. <li><strong>SYMBOL={symbol_name}[,symbol_value]</strong> <br>Sets a global symbol. If a value is not specified, then the symbol is deleted. <strong>Note:</strong> The symbol and value must be made up of printable characters. Non-printable values may not be included (in the current version of SETUPENV). <li><strong>PARENT={entry}</strong> <br>Indicates a parent entry of this entry. Parent entries may be nested (i.e. parents of an entry may themselves have a parent). This facility allows multiple entries to share another entry as a parent. For example, if all buildings share the district definition of EMIS_ROOT, then EMIS_ROOT can be defined in the district entry and each building specify the district as PARENT. <br>When the user selects an entry which contains the PARENT attribute, then settings for the parent will be set prior to the logicals for the selected entry. Therefore, selecting a building entry will also automatically select the corresponding district (parent) entry. <li><strong>GROUP_TABLE={octal_group_number}</strong> <br>Specifies this entry uses a GROUP logical name table for some of it's logical definitions. This setting only applies if someone outside the group attempts to set this entry. If so, the entry's group table will be added to the process' LNM$FILE_DEV path. Otherwise, if the user is in the specified group, it's assumed that the default definition of LNM$FILE_DEV already includes LNM$GROUP. <li><strong>TABLE={logical_name_table},...</strong> <br>Indicates that this entry uses a sharable logical name table(s) (other than a group table) for some of its logicals. When this entry is selected, the logical table will be added to the processes LNM$FILE_DEV logical path. Up to four tables may be specified. <li><strong>IDENTIFIER={ident_specification}</strong> <br>Indicates an ACE entry used to control access to the entry. This is used when /MENU is specified to control which entries the user is allowed to see. It is also used when determining which entry to select as default when /LOGIN=BY_ACCESS is specified. <br>The format of the identifier specification is the same as the "IDENTIFIER=" portion of a standard identifier ACE entry. If the specification includes a comma then the specification must be enclosed in quotes. Multiple IDENTIFIER lines may be included for an entry. If so, standard ACL processing applies for determining access. Examples: <blockquote> IDENTIFIER="[101,*]" <br>IDENTIFIER=SIS_BLDA <br>IDENTIFIER="OECN_USAS+ARCHBOLD_FISCAL" </blockquote> <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> IDENTIFIER does not necessarily restrict users from selecting a specific entry. If a specific entry is specified on the command line (manually or via a DCL procedure), SETUPENV will establish the context regardless of the IDENTIFIER attributes. This is useful for sites who do not need, or do not desire, to code specific identifiers into the OECN$SETUP file. </td> </tr> </table> </center> </ul> <a name="heading_11.4.1"><h2>Special "Reset" Entries</h2></a> <p> Prior to setting any given entry, SETUPENV will attempt to process special sections named "$RESET_type". If a $RESET section of the appropriate type exists in the INI file, it will be processed prior to setting an entry. <p> The following reset sections may be specified: <ul> <li>$RESET_DISTRICT <li>$RESET_BUILDING <li>$RESET_LIBRARY <li>$RESET_OTHER </ul> <p> When a user selects an entry of a specific type, the corresponding reset section is invoked prior to setting the environment for the selected entry. <p> This is useful in cases where some entries specify a process logical but others use a group logical. In order to switch from one entry to another, it is necessary to deassign the common logical from the process table prior to switching to the group logicals. <p> For example, consider that DISTRICT_A has a process logical definition of OECN$DTA. But DISTRICT_B has a group logical for OECN$DTA. Switching from DISTRICT_A to DISTRICT_B requires that the OECN$DTA be deassigned so the group logical is visable. SETUPENV does not attempt to keep track of this, rather it permits you to create a $RESET entry for each type to deassign logicals appropriate for your site. For example, $RESET could be defined as: <blockquote> SECTION=$RESET_DISTRICT <br>LOGICAL=OECN$DTA <br>LOGICAL=OECN$OUT,"SYS$DISK:[]" </blockquote> <p> The above entry would cause SETUPENV to deassign OECN$DTA and define OECN$OUT to the default directory prior to setting any valid entry. In general, you should explicitly deassign any logicals in the reset section that are defined in any entry of the same type. <a name="heading_11.4.2"><h2>Sample OECN$SETUP File</h2></a> <p> Below is a very simple OECN$SETUP.INI file which defines entries for one district and two buildings. The setup file can contain many such entries for as many districts and buildings provided that the entry codes are unique. <p> <table border=0> <tr> <td> <br> <pre> SECTION=SAMPLE TYPE=DISTRICT DESCRIPTION="Sample City Schools" LOGICAL=EMIS_ROOT, FSA:[EMIS_SAMPLE.],CONCEALED LOGICAL=OECN$DTA, FSA:[SAMPLE] LOGICAL=OECN$FORM_DIRDEP, OECN$PAY:DIRPRT.FRM SECTION=SAME TYPE=BUILDING DESCRIPTION="Sample Elementary School" PARENT=SAMPLE TABLE=SIS_SAME IDENTIFIER=SIS_SAME SECTION=SAMH TYPE=BUILDING DESCRIPTION="Sample High School" PARENT=SAMPLE TABLE=SIS_SAMH IDENTIFIER=SIS_SAMH SECTION=$RESET_DISTRICT LOGICAL=EMIS_ROOT LOGICAL=OECN$DTA LOGICAL=OECN$FORM_DIRDEP </pre> </table> <p> In this example, the buildings point to the district using the PARENT attribute. This creates the appropriate relationship. When the user selects one of the buildings, the corresponding logicals from the district entry will also be set. <p> Also notice that the district entry uses LOGICAL's to define the individual logicals. But the building entries use shared logical tables created outside of SETUPENV. <p> The special $RESET_DISTRICT section is provided to ensure that the district logical get reset appropriately prior to setting an entry. <a name="heading_11.4.3"><h2>Special "APPLICATION" Entries</h2></a> <p> If an entry is defined with one or more APPLICATION attributes, then SETUPENV will search for an entry named "$APP_app", where "app" is the application code. This allows logicals, symbols or tables that are common for an application to be grouped into shared entries. Consider the following example: <p> <table border=0> <tr> <td> <br> <pre> SECTION=DISTRICT_A TYPE=DISTRICT APPLICATION=USAS LOGICAL=DISTRICT_ROOT,CONCEAL,DISK1:[DISTRICT_A.] SECTION=DISTRICT_B TYPE=DISTRICT APPLICATION=USAS LOGICAL=DISTRICT_ROOT,CONCEAL,DISK1:[DISTRICT_B.] SECTION=DISTRICT_C TYPE=DISTRICT LOGICAL=DISTRICT_ROOT,CONCEAL,DISK1:[DISTRICT_C.] SECTION=$APP_USAS LOGICAL=OECN$DTA,DISTRICT_ROOT:[DATA] </pre> </table> <p> In this example, the DISTRICT_ROOT logical would be defined for all three districts. However, OECN$DTA would only be defined for DISTRICT_A and DISTRICT_B because they have APPLICATION=USAS. DISTRICT_C does not have the application attribute and so would not invoke the $APP_USAS entry. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> Note: The above is for example only. In practice, OECN$DTA might be more efficiently defined as a system logical. </td> </tr> </table> </center> <p> Application entries do not have a corresponding "reset" section. Logicals defined in this manner may need to be included in the appropriate "$RESET_type" section to ensure they are reset. <a name="heading_11.4.4"><h2>Special "INCLUDE" Section</h2></a> <p> A special section may be specified in any INI file called $INCLUDE. This section may specify other INI files to be included and processed with the primary INI file. The $INCLUDE section may only contain "FILE" attributes to indicate the file(s) to be included. <p> The $INCLUDE section permits INI files to be split into manageable segments or for INI files to be generated automatically. For example, you might create one INI file for each district and it's associated buildings. Or a separate utility may have information for creating subsets of the INI file. For example, the primary OECN$SETUP.INI might have: <p> <table border=0> <tr> <td> <br> <pre> SECTION=$INCLUDE FILE=OECN$CUSTOM:DISTRICT_A.INI FILE=OECN$CUSTOM:DISTRICT_B.INI FILE=OECN$CUSTOM:DISTRICT_C.INI </pre> </table> <p> Each INI file may also have an $INCLUDE section to indicate other files to be included. There is a maximum of 100 files that may be included throughout all INI files. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> There is a performance penalty incurred for splitting INI files into many parts. SETUPENV must read the primary and all included files each time it is invoked. </td> </tr> </table> </center> <p> Duplicate entries are handled by merging the entries together. For example, if two included files both contain an entry for DISTRICT_A, then the attributes (e.g. LOGICAL attributes ) from both sections will be combined into a single entry. If duplicate entries specify attributes that only occur once per entry, then the last INI file to be loaded supercedes the previous value. <p> The INI files are NOT processed as they are encountered in the file. Rather they represent a list of INI files that need to be processed. SETUPENV will complete processing of the current file prior to begin processing the next file. Therefore, included INI files will always be processed after the file that included it (although perhaps not immediately after). In general, you should not depend on files being processed in any particular order. <a name="heading_11.4.5"><h2>Limits</h2></a> <p> Certain limits which apply to the OECN$SETUP.INI file are shown in the table below. Limits are 'per entry' unless otherwise noted. <p> <table border=3> <caption><a name="Table_11-1"><strong> wide</strong></a></caption> <tr> <th align=center>Attribute </th> <th align=center>Maximum Length </th> <th align=center>Limit </th> </tr> <tr> <td> FILE (in $INCLUDE section) </td> <td> 50 </td> <td> 100 total in all files </td> </tr> <tr> <td> SECTION </td> <td> 12 </td> <td> 500 total in all files </td> </tr> <tr> <td> DESC </td> <td> 40 </td> <td> 1 </td> </tr> <tr> <td> TYPE </td> <td> 12 </td> <td> 1 </td> </tr> <tr> <td> IRN </td> <td> 6 </td> <td> 1 </td> </tr> <tr> <td> CATEGORIES </td> <td> 40 </td> <td> 1 </td> </tr> <tr> <td> APPLICATIONS </td> <td> 10 </td> <td> 15 (five per line) </td> </tr> <tr> <td> ARCHIVE </td> <td> 6 </td> <td> 20 </td> </tr> <tr> <td> ARCHIVE (tables) </td> <td> 32 </td> <td> 3 per archive </td> </tr> <tr> <td> PROMPT </td> <td> 40 </td> <td> 1 </td> </tr> <tr> <td> IDENTIFIERS </td> <td> 80 </td> <td> unlimited * </td> </tr> <tr> <td> LOGICAL (name) </td> <td> 50 </td> <td> unlimited * </td> </tr> <tr> <td> LOGCIAL (value) </td> <td> 80 </td> <td> 4 per logical </td> </tr> <tr> <td> SYMBOL (name) </td> <td> 24 </td> <td> unlimited * </td> </tr> <tr> <td> SYMBOL (value) </td> <td> 50 </td> <td> 1 per symbol </td> </tr> <tr> <td> TABLE </td> <td> 50 </td> <td> unlimited * </td> </tr> <tr> <td> GROUP </td> <td> Octal Value </td> <td> 1 </td> </tr> <tr> <td> PARENT </td> <td> 12 </td> <td> 1 </td> </tr> </table> <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> * = Attributes which are "unlimited" are limited by virtual memory available to the user. Very large INI files with large numbers of logicals or symbols may exhaust virtual memory. </td> </tr> </table> </center> <a name="heading_11.5"><h1>EMIS_SELECT Compatibility</h1></a> <p> The /EMIS qualifier provides functional compatibility with the EMIS_SELECT.COM procedure. In this mode, SETUPENV will read the existing OECN$EMIS_DBS file and convert it to equivalent setup entries. The primary advantage of using SETUPENV over EMIS_SELECT is it's ability to use the /NEXT qualifier to process databases sequentially. SETUPENV also provides a slightly improved user interface over the DCL version. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> SETUPENV/EMIS can be used even if the DAS has not created an OECN$SETUP.INI file. </td> </tr> </table> </center> <p> When SETUPENV/EMIS reads the OECN$EMIS_DBS, it creates a special entry which is equavalent to: <p> <table border=0> <tr> <td> <br> <pre> SECTION=$EMIS_dbscode DESCRIPTION=description from DBS CATEGORIES=RP_x FY_fy flags ! See below LOGICAL=OECN$EMIS$DTA,dev:[dir] ! From DBS line IDENTIFIER=OECN_SYSMAN ! If the DBS line contained "HIDE" </pre> </table> <p> The CATEGORIES is constructed based on the optional reporting period and flags parameter from the DBS line. The CATAGORIES value will always be in the format "RP_x FY_fy flags". Where x is the reporting period and "fy" is the fiscal year from the EMIS configuration. If the DBS included any additional flags (other than HIDE), they will also be included in the categories. <p> One implication of the above is that the /CATEGORIES qualifier can be used to select specific reporting periods. For example: <p> <table border=0> <tr> <td> <br> <pre> $ SETUPENV/EMIS/NEXT/CATEGORIES="*RP_N*" </pre> </table> <p> Would select the next EMIS database for reporting period N. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> SETUPENV will invoke the DA Site's EMIS_SELECT_EPILOGUE procedure if it exists. However, the EMIS_SELECT_PROLOGUE is not supported. DA Sites that depend on the prologue procedure should contact the SSDT for a work around. </td> </tr> </table> </center> <a name="heading_11.5.1"><h2>Converting OECN$EMIS_DBS to OECN$SETUP</h2></a> <p> It is possible to completely convert from using the OECN$EMIS_DBS file to corresponding entries in OECN$SETUP.INI. To do so, simply create sections in the OECN$SETUP file as shown in the previous section. The entry code must be prefixed with "$EMIS_". The corresponding code should be removed from OECN$EMIS_DBS, otherwise they will both be processed. <p> To retain compatibility with EMIS_SELECT, you should be certain to define the CATEGORIES attribute in the same format as shown. When entries are stored in the OECN$SETUP file, SETUPENV will not access the EMIS database to retrieve the fiscal year, therefore you should explicitly include FY_fy in the CATEGORIES attribute. <p> One advantage of converting DBS entries into OECN$SETUP is that the entry definitions are not limited to defining a single logical (OECN$EMIS$DTA). The $EMIS_ entries can contain any other valid attribute types, including TABLE, APPLICATION, SYMBOL, etc. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> At the time of this writing, the original EMIS_SELECT.COM procedure is still invoked by the EMIS_SELECT menu option. Therefore, if you wish to switch to SETUPENV immediately, you would have to modify the EMIS menu or customize the EMIS_SELECT.COM procedure. In the future, EMIS_SELECT.COM will be modified by the SSDT to use SETUPENV/EMIS instead of the current DCL procedure. </td> </tr> </table> </center> <a name="heading_11.6"><h1>NOACSC Compatiblity</h1></a> <p> SETUPENV is similar to the USE, BUNNY, and FROG utilities provided by NOACSC. In some respects SETUPENV is based on these utilities. While SETUPENV is not 100% compatible with these utilities, it does attempt to simulate most of the behaviors and should be able to co-exist with them. <p> To provide an easier transition for sites who are using NOACSC's utilities, SETUPENV also provides command line compatibility with the utilities. The following sections provide information regarding compatibility with each of the utilities. <p> Symbols may be established for each of the utilities to invoke SETUPENV in the appropriate compatibility mode: <p> <table border=0> <tr> <td> <br> <pre> USE :== $OECN$:SETUPENV/USE BUNNY :== $OECN$:SETUPENV/BUNNY FROG :== $OECN$:SETUPENV/FROG </pre> </table> <p> This should allow SETUPENV to be used without modifying any existing command procedures. <a name="heading_11.6.1"><h2>USE Compatibliity</h2></a> <p> If /USE is specified as the first qualifier to SETUPENV, then the original USE qualifiers are accepted. The table below lists the USE qualifiers and the corresponding qualifier/behavor for SETUPENV. /PROMPT is the default for /USE. <p> The SETUPENV /PRINTER qualifier is the default. However, instead of defining SYS$PRINT, LCL$PRINT is defined to point the queue from the owner field. <table border=3> <tr> <th align=center>Qualifier </th> <th align=center>SETUPENV Implementation </th> </tr> <tr> <td> /OUTPUT </td> <td> Not implemented </td> </tr> <tr> <td> /ARCHIVE=nnnn </td> <td> /ARCHIVE=nnnn </td> </tr> <tr> <td> /HOME </td> <td> /RESET </td> </tr> <tr> <td> /PRIMARY_RUN </td> <td> /LOGIN=(SIS,INFOHIO,USERNAME=2)/NOPROMPT </td> </tr> </table> <h2>Notable Differences:</h2> <ul> <li>The USE default for /ARCHIVE is provided by the .CLD file (which is changed annually to provide a new default). SETUPENV's default is the first ARCHIVE for the entry. Therefore, to remain compatible with USE, archives should be placed with the most recent year first in the entry's section. <li>USE determines which logicals to set based on the security identfiers held by the user (e.g. OECN$EIS$DTA is only set if OECN_EIS is held). SETUPENV sets all logicals specified for the entry regardless of security identifiers. <li>SETUPENV does not set PMDF_SIGNATURE. Sites depending on this should add the following line to SYLOGIN: <p> <table border=0> <tr> <td> <br> <pre> $ if f$search("SYS$LOGIN:PMDF_SIGNATURE.DOC").nes."" - then define PMDF_SIGNATURE "@SYS$LOGIN:PMDF_SIGNATURE.DOC" </pre> </table> </ul> <a name="heading_11.6.2"><h2>BUNNY Compatibility</h2></a> <p> If /BUNNY is specified as the first qualifier to SETUPENV, then the original BUNNY qualifiers are accepted. <p> The SETUPENV defaults when /BUNNY is specified are: <p> <table border=0> <tr> <td> <br> <pre> $ SETUPENV/BUNNY/PROMPT/EMIS=NORESTRICT_IRNS </pre> </table> <p> These defaults are affected by the original BUNNY qualifiers per the following table. <p> <table border=3> <tr> <th align=center>Qualifier </th> <th align=center>SETUPENV Implementation </th> </tr> <tr> <td> /ARCHIVE=nnnn </td> <td> /ARCHIVE=nnnn </td> </tr> <tr> <td> /CURRENT_BUILDING </td> <td> not implemented </td> </tr> <tr> <td> /EMIS </td> <td> not implemented (logicals defined by entry) </td> </tr> <tr> <td> /INFOHIO </td> <td> /LOGIN=INFOHIO </td> </tr> <tr> <td> /PRIMARY_RUN </td> <td> /LOGIN=(SIS,INFOHIO)/NOPROMPT </td> </tr> <tr> <td> /LOGICAL_ONLY </td> <td> /NOPROMPT </td> </tr> <tr> <td> /RESTRICT_IRNS </td> <td> EMIS=RESTRICT_IRNS </td> </tr> <tr> <td> /SCHEDULE_BUILDER </td> <td> Chains to SIS$EXE:SISMENU_CMSB.EXE </td> </tr> </table> <p> For interactive processes, if neither /PRIMARY_RUN nor /LOGICALS_ONLY is specified then SETUPENV/BUNNY chains to SISMENU.EXE, unless overridden by /SCHEDULE_BUILDER. <h2>Notable Differences:</h2> <ul> <li>SETUPENV does not define the ESC, PROFF or T80. These symbols cannot be placed in the OECN$SETUP SYMBOL attributes because they contain non-printable characters (not supported). Therefore, these symbols must be placed in a SYLOGIN procedure. <li>/CURRENT_BUILDING is not supported. SETUPENV does not have ability to set an entry based on the value of an existing logical. <li>If /ARCHIVE is specified without a value, the default is the first ARCHIVE attribute for the selected entry. </ul> <a name="heading_11.6.3"><h2>FROG Compatibility</h2></a> <p> If /FROG is specified as the first qualifier to SETUPENV, then the original FROG qualifiers are accepted. <p> The SETUPENV defaults when /BUNNY is specified are: <p> <table border=0> <tr> <td> <br> <pre> $ SETUPENV/FROG/PROMPT </pre> </table> <p> These defaults are affected by the original BUNNY qualifiers per the following table. <table border=3> <tr> <th align=center>Qualifier </th> <th align=center>SETUPENV Implementation </th> </tr> <tr> <td> /CURRENT_BUILDING </td> <td> Not implemeneted </td> </tr> <tr> <td> /LOGICALS_ONLY </td> <td> /NOPROMPT </td> </tr> <tr> <td> /PRIMARY_RUN </td> <td> LOGIN=INFOHIO </td> </tr> <tr> <td> /PRINTER </td> <td> /PRINTER (see below) </td> </tr> <tr> <td> /OPAC=RESTRICTED </td> <td> Chains to "@LIS_MGR:OPAC" </td> </tr> <tr> <td> /OPAC=UNRESTRICTED </td> <td> Chains to "@LIS_MGR:OPAC R" </td> </tr> </table> <p> For interactive processes, if neither /PRIMARY_RUN nor /LOGICALS_ONLY is specified then SETUPENV/FROG chains to "@LIS_MGR:LISMENU SYSADM.M"., unless overridden by /OPAC <h2>Notable Differences:</h2> <ul> <li>/PRINTER behaves the same as SETUPENV's /PRINT qualifier, except that /FROG/PRINTER attempts to find a queue named entry$PRINT where "entry" is the selected entry. If found, entry$PRINT is assigned to SYS$PRINT. If the user has a queue definition in their SYSUAF Owner field, it overrides the entry$PRINT queue. <li>For non-DAS staff, SYS$PRINT is unconditionally assigned to LCL$PRINT as a job logical (which might be occluded). <li>SETUPENV/FROG does not attempt to define the large number of symbols created by FROG. These should either be placed in an $APP_INFOHIO entry, or moved to a global login procedure. Symbols containing non-printable characters (e.g. CLEAR) must be moved to a global procedure. </ul> <p> <a name="heading_11.7"><h1>OECN$SETUPENV API</h1></a> SETUPENV provides a callable API which can be used by programs to select entries. The API parallels the qualifier functions and syntax. <a name="heading_11.7.1"><h2>Working Storage Field(s)</h2></a> <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> Picture for string field are maximum sizes that will be used by OECN$SETUPENV. The string fields are based by descriptor, so the field sizes are not required to be the exact size. </td> </tr> </table> </center> <p> <table border=0> <tr> <td> <br> <pre> 01 WS-FUNCTION PIC S9(4) COMP VALUE 0. 88 SET-DB VALUE 0. 88 NEXT-DB VALUE 1. 88 RESET-DB VALUE 2. 88 MENU-SELECTION VALUE 3. 88 LOOKUP-DB VALUE 4. 88 LOGIN-DEFAULTS VALUE 5. 01 WS-FLAGS. 03 WS-SIS-DEFAULT PIC X. 03 WS-INFOHIO-DEFAULT PIC X. 03 WS-BY-ACCESS PIC X. 03 WS-BY-USERNAME PIC X. 03 WS-EMIS-RESTRICT PIC X. 03 WS-EMIS-SELECT PIC X. 03 FILLER PIC X(26). 01 WS-SELECTED-DB PIC X(40). 01 WS-SEL-TYPE PIC X(25). 01 WS-SEL-CATEGORIES PIC X(40). 01 WS-SEL-APPLICATION PIC X(10). 01 WS-SEL-ARCHIVE PIC X(6). 01 WS-TYPE PIC X(25). 01 WS-DESC PIC X(40). 01 WS-IRN PIC X(6). 01 WS-CATEGORIES PIC X(40). 01 WS-APPLICATIONS PIC X(80). 01 WS-PROMPT-STRING PIC X(40). 01 WS-ARCHIVE PIC X(6). 01 WS-STATUS PIC S9(9) COMP. 88 OECN__NORMAL VALUE EXTERNAL OECN__NORMAL. 88 OECN__NOMORE VALUE EXTERNAL OECN__NOMORE. 88 OECN__NOTFOUND VALUE EXTERNAL OECN__NOTFOUND. 01 WS-RELATIONSHIPS. 03 WS-RELATION-COUNT PIC S9(4) COMP. 03 WS-RELATIONSHIP OCCURS 0 TO 40 TIMES DEPENDING ON WS-RELATION-COUNT. 05 WS-RELATION-TYPE PIC X. 88 WS-RELATION-PARENT VALUE "P". 88 WS-RELATION-SIBLING VALUE "S". 88 WS-RELATION-CHILD VALUE "C". 05 WS-RELATION-ENTRY PIC X(12). </pre> </table> <p> <a name="heading_11.7.2"><h2>COBOL Call Arguments</h2></a> <table border=0> <tr> <td> <br> <pre> CALL "OECN$SETUPENV" USING WS-FUNCTION BY DESCRIPTOR WS-FLAGS BY DESCRIPTOR WS-SELECTED-DB BY DESCRIPTOR WS-SEL-TYPE BY DESCRIPTOR WS-SEL-CATEGORIES BY DESCRIPTOR WS-SEL-APPLICATION BY DESCRIPTOR WS-SEL-ARCHIVE BY DESCRIPTOR WS-TYPE BY DESCRIPTOR WS-DESC BY DESCRIPTOR WS-IRN BY DESCRIPTOR WS-CATEGORIES BY DESCRIPTOR WS-APPLICATIONS BY DESCRIPTOR WS-RELATIONSHIPS BY DESCRIPTOR WS-PROMPT-STRING BY DESCRIPTOR WS-ARCHIVE GIVING WS-STATUS. </pre> </table> <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> The arguments passed by descriptor may be OMITTED if the return value is not desired. However, the argument list must not be shortened, that is, the caller should explictly include the OMITTED keyword. </td> </tr> </table> </center> <a name="heading_11.7.3"><h2>Argument Descriptions:</h2></a> <blockquote> <strong>WS-FUNCTION (read)</strong> <blockquote> Indicates the function to perform. Behavior matches the corresponding DCL qualifiers. <br>The LOOKUP-DB function is specific to the API and not implemented via the DCL command. LOOKUP-DB returns the information about the specified entry without actually setting the logicals. This allows a program to retrieve information about an entry without switching contexts. </blockquote> <br> <br><strong>WS-FLAGS</strong> <blockquote> List of one character flags which modify the behavior of the API. Unless noted otherwise, the flags should either contain a spaces or a "Y" if the flag is on. <br>The following flags are applicable when the LOGIN-DEFAULTS function is requested: </blockquote> <p> <table border=0> <tr> <td> <br> <pre> WS-SIS-DEFAULT Same as /LOGIN=SIS WS-INFOHIO-DEFAULT Same as /LOGIN=INFOHIO WS-BY-ACCESS Same as /LOGIN=BY_ACCESS WS-BY-USERNAME If set, just contain an ascii numeric value indicating the number of characters to use from the username as the entry code. e.g. Placing "2" in this flag, is the same as /LOGIN=USERNAME=2 WS-EMIS-RESTRICT Same as /RESTRICT_IRNS WS-EMIS-SELECT is the same as /EMIS </pre> </table> <br> <br><strong>WS-SELECT-DB (modify, by descriptor)</strong> <blockquote> Entry(s) from INI file to select. Optional if MENU or NEXT functions are being performed. The actual entry selected is also returned in this parameter. </blockquote> <br> <br><strong>WS-SEL-TYPE (read, by descriptor)</strong> <br> <br><strong>WS-SEL-CATEGORIES (read, by descriptor)</strong> <blockquote> Values to restrict entries by type and/or categories. <br>Same as /TYPE and /CATEGORIES qualifiers. </blockquote> <br> <br><strong>WS-SEL-APPLICATION (read, by descriptor)</strong> <blockquote> Value to select by application. Same as /APPLICATION qualifier. </blockquote> <br> <br><strong>WS-TYPE (write, by descriptor)</strong> <br> <br><strong>WS-DESC (write, by descriptor)</strong> <br> <br><strong>WS-IRN (write, by descriptor)</strong> <br> <br><strong>WS-CATEGORIES (write, by descriptor)</strong> <blockquote> Return values which describe the entry. Same values that are also placed in the OECN$SETUP_CURRENT Logical. </blockquote> <br> <br><strong>WS-APPLICATIONS (write, by descriptor)</strong> <blockquote> Space delimited list of appliations associated with the current entry. </blockquote> <br> <br><strong>WS-PROMPT-STRING (write, by descriptor)</strong> <blockquote> The string SETUPENV would use to create the DCL and Menu prompt if /PROMPT is specified. Note: The API never sets the prompt. The calling routine may use this string to set the prompts, if desired. </blockquote> <br> <br><strong>WS-RELATIONSHIPS (write, by descriptor)</strong> <blockquote> A structure that describes the selected entries relationship to other entries based on the PARENT attributes. Currently three types of relationships are defined: Parent, sibling or children. The types of entries returned in this table will vary depending on the entry selected. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> Calling routines should not assume that only these three types of relationships exist. Future versions of the API may return other relationships. </td> </tr> </table> </center> <br> <br><strong>WS-ARCHIVE</strong> <blockquote> Contains code of archive if one was selected. </blockquote> </blockquote> <a name="heading_11.7.4"><h2>Return Status</h2></a> <p> OECN$SETUP returns one of the following conditions: <table border=3> <tr> <td> OECN__NORMAL </td> <td> = </td> <td> Function completed successfully (Item selected or reset) </td> </tr> <tr> <td> OECN__NOMORE </td> <td> = </td> <td> When using "next" function, no more matching entries were found. </td> </tr> <tr> <td> OECN__NOTFOUND </td> <td> = </td> <td> Specified entry was not found. </td> </tr> <tr> <td> OECN__INVNEXT </td> <td> = </td> <td> Invalid combination of TYPE and current entry for NEXT function. Must specify a starting entry or valid select type. </td> </tr> </table> <a name="heading_11.7.5"><h2>Description</h2></a> <p> The OECN$SETUPENV routine does basically everything that the SETUPENV DCL interface does; however, there are some notable exceptions. Here is a list that the callable interface does NOT provide: <ol start=1 > <li>Does not simulate /USE, /BUNNY or /FROG behaviors. Those qualifiers are handled by the SETUPENV utility and are not exposed to the callable interface. <li>Does not modify the Menu or DCL prompts (a string is returned for setting the prompt if desired). <li>Does not invoke OECN_LOGIN or EMIS_SWITCH_FY to ensure that the correct state software logicals are defined based on the version of the data files. If the calling program depends on files/programs in any of the OECN$x logicals, it should take it's own action to ensure the correct version is selected (or contact the SSDT if this is important). <li>Does not implement the function of /PRINTER </ol> <p> <hr size=5> <a name="sysman_ump_chap"><h1>Installing and Using UMP - User Mail Profile System</h1></a> <a name="heading_12.1"><h1>Overview</h1></a> <p> The UMP package provides a means for DA-sites to maintain user e-mail profiles in a standard way. This will provides an efficient means of sending mail to a large variety of users across the state. It will also allows for the creation of an electronic "white pages phone directory" which permits an easy way to lookup an e-mail address for any user on the OECN network. <a name="heading_12.1.1"><h2>Feature List</h2></a> <p> UMP provides the following features: <ul> <li>Ability to add/modify user profiles. <li>Allows end-user to modify their own profile. <li>Permits 'group managers' to manage other user profiles within their group <li>Imports an existing distribution list and creates a basic user profile (NM or PMDF style distribution lists). <li>Ability to provide complete 'centralized naming' facility for both local and remote addresses, including ability to create user aliases independent of username or mailbox address. <li>Exports user profiles into the following formats: <blockquote> - NM <br>- PMDF style distribution lists <br>- PMDF DIRECTORY DAEMON format </blockquote> <li>Handles OECN standard distribution lists and allows local distribution lists to be added. <li>Includes a utility to create distribution lists based on VMS identifiers. <li>Includes a utility to check UMP profiles against SYSUAF. <li>Includes a utility to run during login to determine if user has modified their own profile. <li>Includes a utility to transmit UMP data into the CSO white pages directory. <li>Tracks whether the user has modified/updated their own profile. Optionally, users who have not updated their own profile will be asked if they wish to update their user mail profile during login. </ul> <a name="heading_12.1.2"><h2>Web Attachments for OECN state-wide mail</h2></a> <p> A special feature of the OECN state-wide lists is the ability to "web-ify" attachments send to the OECN lists. As messages addressed to the OECN lists pass through the central OECN mail server, they are inspected for certain attachment types. If a suitable attachment type is discovered, it is placed on a public web site and the original attachment is replaced by a web link (URL) pointing to the documents location. Thus, only a single copy of each attachment must be stored on the OECN web server and will not be delivered to each user's mailbox. <p> Each user subscribed to UMP has the option of receiving the original message with the attachments or the version containing web links instead of attachments. Most users will benefit from receiving web links instead of attachments (reduced local storage, shorter download times and reduce risk of viruses. However, some users may prefer the original attachments, especially if they download their mail for disconnected (off-line) reading. <p> The benefit of web attachments to DA Sites can be signficant. Without web attachments, any message containing a large attachment must be delivered to each user's mailbox separately consuming considerable disk space and computer resources to deliver. <p> However, each DA Site may decide how, and if, to implement OECN web attachments for their users. Converting existing users to web attachments may cause confusion or concerns. Therefore, DA Sites are encouraged not to switch existing users to web attachments without training or notification. <a name="heading_12.1.2.1"><h3>Enabling Web Attachments</h3></a> <p> Web attachments are only enabled for each DA Site upon request. If you wish your users to have the ability to request web attachments, you must set ENABLE_OECN_WEBATTACH to "YES" and send mail to listmaster@oecn.k12.oh.us. The listmaster will verify the correct configuration of your UMP configuration and enable web attachments if appropriate. Your request may be denied if you have a non-standard UMP configuration. In that case, the listmaster will explain the problem(s) with your configuration. <p> To see if web attachments are enabled for your site, look for the SITE command in OECN$UMP_STANDARD.INI and see if the "webatt" parameter is set for your domain. If this parameter is set, then web attachments are already enabled. Note: You can not change OECN$UMP_STANDARD.INI yourself. Only the OECN listmaster can make the change that affects the OECN mail server. <a name="heading_12.1.3"><h2>Files</h2></a> <p> The following sections describe the files used and produced by the UMP system. <p> <strong>Files and Procedures Used</strong> <br> <table border=3> <tr> <th align=center>File/Procedure </th> <th align=center>Use </th> </tr> <tr> <td> OECN$UMP_LOCAL.INI </td> <td> Contains A-site specific information and list codes. </td> </tr> <tr> <td> OECN$UMP_STANDARD.INI </td> <td> Contains OECN_wide list codes and definitions. </td> </tr> <tr> <td> IMPORT_NM_LISTS.COM </td> <td> Used to import data from NM style distribution lists into user profiles. </td> </tr> <tr> <td> IMPORT_PMDF_LISTS.COM </td> <td> Used to import data from PMDF style distribution lists into user profiles. </td> </tr> <tr> <td> EXPORT_LISTS.COM </td> <td> Used to generate both NM and PMDF style distribution lists. </td> </tr> <tr> <td> EXPORT_DD.COM </td> <td> Used to generate a file suitable for loading into a PMDF DIRECTORY DAEMON database. </td> </tr> <tr> <td> UMP_SEND_CSO.COM </td> <td> Used to transmit UMP data to the CSO white pages directory. </td> </tr> </table> <p> <strong>Files Created</strong> <br> <p> The table below describes the files created by UMP. Unless otherwise specified, the files are created in OECN$UMP:. <table border=3> <tr> <th align=center>File </th> <th align=center>Description </th> </tr> <tr> <td> MAIL_*_A.DIS </td> <td> One file for each distribution list. This file contains addresses of users who have requested to receive original attachments sent to an OECN list.. </td> </tr> <tr> <td> MAIL_*_W.DIR </td> <td> One file for each distribution list. This file contains addresses of user who have requested web links to attachments sent to the an OECN lists. </td> </tr> <tr> <td> MAIL_ALIASES.DAT </td> <td> Alias file defining aliases for UMP generated lists. This file is intended to be loaded into the PMDF alias database or included into the PMDF alias file. </td> </tr> <tr> <td> USER_ALIASES.TXT </td> <td> Alias file defining aliases for UMP remote users to create centralized naming. This file is intended to be loaded into the PMDF alias database. </td> </tr> <tr> <td> USER_RESERVE.TXT </td> <td> File containing reversing entries for users to create centralized naming. This file is intended to be loaded into the PMDF reverse database. </td> </tr> </table> <a name="heading_12.2"><h1>UMP Menu and Profile Screen</h1></a> <p> The program may be executed by typing: <p> <table border=0> <tr> <td> <br> <pre> $RUN OECN$:UMP </pre> </table> <p> at the $ prompt or from the menu system, type: <p> <table border=0> <tr> <td> <br> <pre> Menu>UMP </pre> </table> <p> <strong>The Main UMP Menu</strong> <br> <p> The following menu will appear: <p> <table border=0> <tr> <td> <br> <pre> ___________________________________________________________________ | | | UMP - User Mail Profile Maintenance | | ------------------------------------------------------------- | | 1. PERSONAL - Modify Personal Profile | | 2. MAINTAIN - Maintain User Profiles | | 3. EXIT - Exit program | | | | | | | | | | | | | | | | | | Menu: UMP Option> | | | | XXX Accept XX Help XX Exit XXX Next | |_________________________________________________________________| </pre> </table> <p> <strong>Profile Screen</strong> <br> <p> When you execute the UMP program and select the MAINTAIN option, a User Mail Profile screen similar to the following will appear: <p> <table border=0> <tr> <td> <br> <pre> ___________________________________________________________________________ | | | Updated 12-DEC-1995 16:26 | | | | Username DOE Group Node NWOCAC User Type STAFF | | Internet Host/Mailbox NWOCA.ORG | | Name Doe, John Phone | | Title NBEC/NWOCA SSDT Documentalist/Supp Fax | | Position Code Cell/Pager | | Alternate | | District IRN | | Building IRN | | County Henry | | District/Organization NBEC/NWOCA | | Street Address | | City, State, Zip | | Comment | | URL | | Site information | | Management Groups | | | | | | UMP: User Mail Profile for OECN Users | | XX Top XXX Find XXX Lockmode | | XX Help XXX Add XXX Set Defaults | | XX Exit XXX Delete XXX Email Lists | | XXX Next XXX Modify | |_________________________________________________________________________| </pre> </table> <p> <strong>EMAIL Lists</strong> <br> <p> In order to view the Email lists you currently subscribe to, press the <kbd>[Email Lists]</kbd> key. A screen similar to the following will appear giving both OECN statewide and local distribution lists. <p> <table border=0> <tr> <td> <br> <pre> ___________________________________________________________________________ | User DOE Name Doe, John | | Subscribe by name _________________ | | Receive OECN attachments as web links? Y | |Subscribed? -- Subscribed Distribution Lists -- | | -- OECN lists -- | | Y MAIL_STAFF DAS Staff [Restricted] | | Y MAIL_SUPT_PUB Superintendents-Pub [Restricted] | | Y MAIL_TREAS Treasuere [Restricted] | | -- NWOCA lists -- | | Y MAIL_SSDT SSDT Staff | | Y MAIL_STAFF_EMIS EMIS Staff | | Y MAIL_STAFF_FIS Fiscal Staff | | | | | | | | | | | | Press <Show All Lists> to see all available lists | | | | UMP: E-mail Distribution Lists 1 of 1 | | XXX Accept (Resort) XX Cancel XX Prev Screen | | XX First Screen XXX Last Screen XX Next Screen | | XX Help XXX Show All Lists | | XX Exit Dist Lists XXX Exit Dist Lists | | | |_________________________________________________________________________| </pre> </table> <p> The field "Receive OECN attachments as web links?" indicates if the user wishes to receive links, instead of attachments, for files sent to the OECN state-wide lists. <p> You may subscribe or unsubscribe to any unrestricted list by entering the name of the list in the indicated field at the top of the screen and pressing the <kbd>[Accept]</kbd> key. <p> <strong>Table of Email Distribution Lists</strong> <br> <p> In order to see the available distribution lists, press the <kbd>[Show All Lists]</kbd> key. A set of screens such as the following will appear: <p> <table border=0> <tr> <td> <br> <pre> ___________________________________________________________________________ | | | User DOE Name Doe, John | | Subscribe by name _________________ | | Receive OECN attachments as web links? Y | | Subscribed? -- All Available Distribution Lists -- | | -- OECN lists -- | | MAIL_CSTAFF C-site staff (obsolete) | | MAIL_EMIS EMIS Coordinators [Restricted] | | _ MAIL_LIBRARIAN Librarian | | MAIL_PRINC_NONPUB Principals-Nonpublic [Restricted] | | MAIL_PRINC_PUB Principals-Public [Restricted] | | MAIL_PRINC_ELEM Principals-Elementary [Restricted] | | MAIL_PRINC_SEC Principals-Secondary [Restricted] | | _ MAIL_SPECED Special Education | | Y MAIL_STAFF DAS Staff [Restricted] | | MAIL_SUPT_NONPUB Superintendents-Nonpublic [Restricted] | | Y MAIL_SUPT_PUB Superintendents-Pub [Restricted] | | MAIL_SUPT_CITY Superintendents-City [Restricted] | | MAIL_SUPT_COUNTY Superintendents-County [Restricted] | | This is the first screen | | | | UMP: E-mail Distribution Lists 1 of 6 | | XXX Accept (Resort) XX Cancel XX Prev Screen | | XX First Screen XXX Last Screen XX Next Screen | | XX Help XXX Show Subscribed | | XX Exit Dist Lists XXX Exit Dist Lists | |_________________________________________________________________________| </pre> </table> <a name="heading_12.3"><h1>Startup Procedure</h1></a> <p> Follow the steps below to install UMP on your system: <ol start=1 > <li>Create the system logical OECN$UMP to point to the device and directory where profile and distribution lists will be created. You should NOT use the same directory as your NM: or OECN$MAIL directories. You should create a new directory to contain these files. <li>Use OECN_INSTALL and INSTALL PACKAGE as usual to install the OECN package. <li>If installing for the first time, copy OECN$UMP_LOCAL.INI to OECN$UMP with world:read protection. <br> <br> Modify OECN$UMP_LOCAL.INI to contain A-site specific information. You must specify A-site name, DECnet node, and internet host names, etc. See the .INI file for more information. <li>Run the UMP.EXE program and choose the MAINTAIN option. Then exit the program. This will create empy .IDX files in OECN$UMP. Set the protections on the *.IDX files to W:RW. </ol> <p> <a name="heading_12.4"><h1>Loading Initial Data</h1></a> Load existing distribution lists. If using NM style distribution lists, then use: <br> $ @OECN$:IMPORT_NM_LISTS <p> If using PMDF style lists created by SWOCA's PUBDOM OECNMAIL utilities, then use: <br> $ @OECN$:IMPORT_PMDF_LISTS <p> Then run OECN$:UMP/MAINTAIN to review the user profiles. It should have set, at least, the username, DECnet node, and host/domain. If the NM lists were loaded, it will also have the name, district and county from the NM lists. If a user was on more than one list, the user profile will have multiple list codes. <p> After running the import, the protection on the UMP*.IDX files should be set to W:RW. <p> You may, if desired, import from both the NM and PMDF style lists. Unique usernames will only be added once, and a user will not be assigned to the same list more than once. Running both imports essentially "merges" the NM and PMDF lists. This might be useful if you are uncertain which of your lists is more correct. <a name="heading_12.5"><h1>Importing Other Lists</h1></a> <p> The IMPORT_NM_LISTS.COM and IMPORT_PMDF_LISTS.COM only import the standard NM lists or lists created by SWOCA's OECN$MAIL utilities. If you have other local lists which contain users you want to assign to a list (either a standard list or a local list), you can use the UMPIMPORT.EXE utility directly. <p> The UMPIMPORT utiltiy can read an existing list (either NM or PMDF format) and assign the users to the distribution list code you specify. The UMPIMPORT utility takes three parameters in the following form: <br> <p> <table border=0> <tr> <td> <br> <pre> $ UMPIMPORT :== $OECN$:UMPIMPORT $ UMPIMPORT {NM|PMDF} {code} {file} </pre> </table> <p> The first parameter indicates if the list to be imported is a NM list or a PMDF list. NM style lists must contain at least the DECnet address. PMDF style lists must contain internet addresses. The second parameter is the distribution list code to assign to the users. The code must be defined in either OECN$UMP_STANDARD.INI or OECN$UMP_LOCAL.INI. The final parameter is the file to import. See either IMPORT_NM_LISTS.COM or IMPORT_PMDF_LISTS.COM for examples of using UMPIMPORT.EXE. <p> <a name="heading_12.6"><h1>INI File Commands</h1></a> The following INI commands are used in either the OECN$UMP_LOCAL.INI or the OECN$UMP_STANDARD.INI files. The following is a summary of these commands. See either of these files for more examples of their use. <p> <table border=3> <caption><a name="Table_12-1"><strong> Table of INI File Commands</strong></a></caption> <tr> <th align=center> </th> <th align=center>Command </th> <th align=center> </th> <th align=center>Fields </th> <th align=center>Explanation </th> </tr> <tr> <td> * </td> <td> SET_ASITE </td> <td> = </td> <td> "{Asite}" </td> <td> A-site acronym. Required field. </td> </tr> <tr> <td> * </td> <td> SET_NODE </td> <td> = </td> <td> "{Node}" </td> <td> Default DECnet node, cluster prefered. Required field. </td> </tr> <tr> <td> * </td> <td> SET_DOMAIN </td> <td> = </td> <td> "{Domain}" </td> <td> Default domain. Used as default for user profile and PMDF aliases. For example, SET_DOMAIN = "NWOCA.ORG". Required field. </td> </tr> <tr> <td> * </td> <td> SET_USER_TYPE </td> <td> = </td> <td> "{Code}" </td> <td> Default for "User Type" field. </td> </tr> <tr> <td> * </td> <td> LOCAL_LIST_PREFIX </td> <td> = </td> <td> "{Prefix}" </td> <td> Alias prefix for local distribution lists. Example, LOCAL_LIST_PREFIX = "Local_". May be null if local lists are not to be prefixed. </td> </tr> <tr> <td> </td> <td> LOCAL_HOST </td> <td> = </td> <td> "{hostname}" </td> <td> This parameter defines host name(s) which should be considered "local" to the current system. You may include multiple LOCAL_HOST lines if needed. If a users "internet mailbox/host" field contins a local address, then a user alias will not be created for them. Use this parameter if you change the domain specified by SET_DOMAIN but you still have user profiles which refer to the old address. Without this parameter, UMP will consider profiles with the old domain to be remote users and will create aliases for them. </td> </tr> <tr> <td> * </td> <td> PROCESS_CHANNEL </td> <td> = </td> <td> "{process_channel_name}" </td> <td> This parameter may be used to set the name of the reprocess channel to be used for processing UMP distribution lists. By default, UMPEXPORT will assume the reprocess channel is named reprocess.domain_name where domain_name is the domain from the SET_DOMAIN parameter. </td> </tr> <tr> <td> * </td> <td> DIRECTORY_DOMAIN </td> <td> = </td> <td> "{directory_daemon_domain}" </td> <td> This parameter may be used to specifically set the name of the directory daemon domain, if any. If this parameter is not specified then UMPEXPORT will assume that the directory daemon is named PO.domain_name where domain_name is the deomain from the SET_DOMAIN parameter. </td> </tr> <tr> <td> </td> <td> REWRITE </td> <td> = </td> <td> "{user@host}","{To_Domain}" </td> <td> Used by the UMPEXPORT to rewrite a particular domain to a "pseudo_domain" for public use in the CSO (White Pages) and for address reverals. The pseudo_domain may be name of your directory channel or an alias for the local host. For example, REWRITE = *,"po.nwoca.org". In this example, the command would cause all of NWOCA's users to have an email address of "username@po.nwoca.org" regardless of their real host name. In this way, remote users will not learn the real host name (which may change). REWRITE supports full wildcarding on the "From" domain portion of the parameter. The user@host may be a wildcard pattern which matches user email address from the UMP profiles. The new_host is the domain that the address will be rewritten to. This parameter allows you better control over how addresses are published in the CSO database (OECN White Pages) and address reversal </td> </tr> <tr> <td> </td> <td> CSO_REWRITE </td> <td> = </td> <td> Synonym for REWRITE </td> <td> </td> </tr> <tr> <td> * </td> <td> ERRORS_TO </td> <td> = </td> <td> "{Email_Address}" </td> <td> Address for "errors-to" parameter on mailing lists. If not preset, the "errors_to" address defaults to "postmaster". </td> </tr> <tr> <td> * </td> <td> EMPTY_ADDRESS </td> <td> = </td> <td> "{Email_Address}" </td> <td> Email address to place in any empty distribution list to prevent bounces to mail sent to an empty list. Defaults to "empty@bitbucket" which is suitable if the default "bitbucket" channel is defined. </td> </tr> <tr> <td> * </td> <td> ENABLE_OECN_WEBATTACH </td> <td> = </td> <td> {YES|NO} </td> <td> Enables users to request and receive "web attachments" sent to the OECN lists. Default is "YES". Set to "NO" to prevent users from requesting web attachments. </td> </tr> <tr> <td> * </td> <td> OECN_WEBATTACH_DEFAULT </td> <td> = </td> <td> {YES|NO} </td> <td> Specifies the "web attachment" default for new users. By default, new users will receive web links instead of attachments. Set this to NO if you wish new users to recieve the original attachments. </td> </tr> <tr> <td> * </td> <td> ALLOW_USER_ALIAS </td> <td> = </td> <td> {YES|NO} </td> <td> Indicates whether the 'Alias' and 'From' fields should be activated. When set to NO (the default), the alias and from fields will be disabled. When set to YES, the fields will be active. Note: When set to YES, the DAS must customize thier procedures to load the USER_ALIASES.TXT and USER_REVERSE.TXT file into the appropriate PMDF database. </td> </tr> <tr> <td> </td> <td> LISTPARMS </td> <td> = </td> <td> "{named parameter}" </td> <td> Specifies named parameter(s) to added to the MAIL_ and local aliases created by UMP. Multiple named parameters may be specified using multiple LISTPARMS lines. The named parameters will be included on all MAIL_* and local UMP aliases. See the PMDF Managers Guide for information about named parameters. Note: Too many named parameters may prevent the alias from fitting in the PMDF Alias database. In that case, the MAIL_ALIASES.DAT file must be included into the PMDF alias file and the configuration compiled nightly. </td> </tr> <tr> <td> * </td> <td> PROTECT_SITE_INFO </td> <td> = </td> <td> [YES|NO] </td> <td> Protect "Site Info" field in UMP. The default is "YES". </td> </tr> <tr> <td> </td> <td> TYPE </td> <td> = </td> <td> {Type},"{Description}" </td> <td> Defines a distribution list type. Types 01---0z are reserved for OECN use. Types 10---zz are available for DAS use. Types must be defined prior to using a DEFINE_CODE line. </td> </tr> <tr> <td> </td> <td> DEFINE_CODE </td> <td> = </td> <td> [Type-],{Code},"{Description}", {List_Name},[User_Modifiable], [Master_Code] </td> <td> Type is a two digit no., considered above. Code is a 1 to 8 character code used in the UMP maintenance program. List_Name is the file name suffix used to create the distribution list filename. User_Modifiable (Y,N) allows the user to subscribe or unsubscribe to the list. The default is "NO", which means that the list is restricted. Master_Code contains the master list code to which a sublist refers. In the case of a master list, this field also contains the master list code. See the section, Defining Local Distribution Lists, for more details. <p>The default list type for codes in the OECN - wide file is 01. e.g. in the OECN$UMP_STANDARD.INI file, DEFINE_CODE=COUN,... is equivalent to DEFINE_CODE=01-COUN,... <p>If the first character of the distribution codes is a hyphen (--), the distribution list is obsolete and should be phased out. This means that the export routines will not force creation of an alias pointing to empty distribution lists and will not assign these empty lists as a sub-list of a master list. </td> </tr> <tr> <td> </td> <td> TYPE_RESTRICT </td> <td> = </td> <td> {Type},{Method},{Value} </td> <td> For example, TYPE_RESTRICT= 02,SUBSCRIBED,01-STF, restricts type 02 lists to users who are also subscribed to the list 01-STF. See the section below on Restricting Types, for more information and kinds of restrictions. </td> </tr> <tr> <td> </td> <td> CONVERT </td> <td> = </td> <td> {From_Code},{To_Code} </td> <td> This command will automatically convert an "old" distribution list code to a "new" one. For example, CONVERT = 01-PM,02-PM. The "From_Code" is the old (original) distribution list code, and "To_Code" is the new distribution list code. Note, that codes must specify both the type and code (e.g. 01-PM). You should NOT rely on the default prefix when specifying conversions. See the section below for more information on conversions. </td> </tr> <tr> <td> </td> <td> NM_MAP </td> <td> = </td> <td> {From_Code},{To_Code} </td> <td> The command causes codes to be mapped to produce a single old-style NM distribution list for compatibility with NM_SEARCH. </td> </tr> <tr> <td> </td> <td> SITE </td> <td> = </td> <td> "{Domain}",{CSO_ID} </td> <td> This command defines the OECN DAS host name. Each SITE in this section will be included in the OECN_xxxx distribution lists. It also specifies each site's CSO white pages identifiers. A range of CSO ids has been allocated to each site. These fields should not be modified. This command should not be placed in the OECN$UMP_LOCAL.INI file. </td> </tr> </table> <hr> <blockquote> * This command can appear at most one time in the Local INI file. </blockquote> <hr> <p> <a name="heading_12.7"><h1>Export NM and PMDF Style Lists</h1></a> A procedure called OECN$:EXPORT_LISTS.COM to is used to create the NM and PMDF style distribution lists and associated aliases. It is recommended that each DAS write a custom DCL procedure which invokes EXPORT_LIST.COM which also contains any local commands to add aliases, etc. This procedure should be scheduled to run nightly to keep the aliases and distributions lists up to date. See <a href="oecn10_sysman_handbook_full.html#exam_build_proc">Section 12.18</a> for an example procedure which takes advantage of most of UMP's features. <p> To run the procedure: <br> <p> <table border=0> <tr> <td> <br> <pre> $ @OECN$:EXPORT_LISTS "{options}" </pre> </table> <p> The P1 parameter should specify one or more of the following options separated by commas: <table border=3> <tr> <th align=center>Option </th> <th align=center>Description </th> </tr> <tr> <td> REBUILD </td> <td> Rebuild the PMDF alias database from scratch using the alias file(s) from UMPEXPORT. Use REBUILD if you allow UMP to control all the aliases in your database, or if you add additional aliases after EXPORT_LISTS.COM is executed. </td> </tr> <tr> <td> MERGE </td> <td> (Default) Merge the UMP aliases with the existing PMDF_ALIAS_DATABASE. Use this option if you control/rebuild the alias files prior to executing EXPORT_LISTS.COM Note: If this option is used then UMP will always add aliases and old UMP aliases will not be deleted unless you are rebuilding the database yourself elsewhere. </td> </tr> <tr> <td> </td> <td> Note: REBUILD and MERGE are mutually exclusive. </td> </tr> <tr> <td> USER </td> <td> Indicates that the USER_ALIASES.TXT and USER_REVERSE.TXT should be loaded into PMDF_ALIAS_DATABASE and PMDF_REVERSE_DATABASE, respectively. This should option should be specified if the DAS is using remote addresses or user alias features of UMP. </td> </tr> <tr> <td> DEFER </td> <td> Defers placing updated PMDF databases back into the PMDF production directories. This permits the DAS procedure to add additional aliases to the database before being used by PMDF. If this option is specified then the DAS's procedures are responsible for moving the databases back into the PMDF production directories. The PMDF database files created are: OECN$UMP:ALIASES.DAT (Alias database) OECN$UMP:REVERSE.DAT (reverse database). </td> </tr> </table> <p> If you are using UMP as your only source of PMDF database aliases, you should specify REBUILD. This will ensure that any old or obsolete aliases are not retained in your database. <p> However, if you have other aliases which you are building into your local PMDF alias database, you must take local action to periodically rebuild the PMDF alias database using your own aliases. This is necessary to ensure that old aliases are not retained in your PMDF alias database. <p> If you are unfamilar with how aliases work in PMDF and how the alias database (PMDF_ALIAS_DATABASE) and the alias file (PMDF_ALIAS_FILE) interact, we recommend that you do the following: <ul> <li>Allow UMP's EXPORT_LISTS.COM to rebuild the alias database from scratch (by specifying the REBUILD option). This will give UMP complete control over the aliases and ensure that no obsolete aliases are retained. <li>Place any local aliases (those not created by UMP) in your PMDF_ALIAS_FILE. This file is not used by UMP and will allow you to create local aliases without them being wiped out by UMP. Alternatively, you can specify the DEFER option in EXPORT_LIST and write procedure which adds additional aliases prior to moving the databases into PMDF_TABLE:. </ul> <a name="heading_12.7.1"><h2>Centralized Naming</h2></a> <p> This section describes several ways in which UMP can be used to provide centrialized naming in a PMDF configuration. Centralized naming provides means to provide stable user email addresses regardless of where the users mail is actually being delivered. This section assumes you are already familar with the basic concepts of centralized naming in PMDF. <a name="heading_12.7.1.1"><h3>Remote Mail Boxes</h3></a> <p> UMP can provide centralized naming for users who have "remote" mailboxes. Using UMP's centralized naming, a user can have an address such as USER@das.org even if thier mail is being delivered to a different address (mailbox), regardless of where that mailbox resides. The centralized naming may be used to deliver mail to remote systems on behalf of the user, or simply as a means of forwarding mail without resorting to VMS Mail forwarding. <p> Examples of "remote" users include: <ul> <li>Users who wish to have thier OECN mail delivered to a different account (e.g. on the same system or on a third-party ISP) <li>Users who's mailbox exists on a school district mail server or another DAS mail server. <li>Users who's mailbox is in PMDF popstore </ul> <p> The primary benefit of centralized naming is that it permits a user to have a stable mailing address even if the actual mailbox changes in the future. Everyone with an DAS can have the same host name in thier address regardless of where the mailbox reside. <p> UMP determines if a user requires an alias based on the "Internet Host/Mailbox" field on the profile. If the "Internet Host/Mailbox" field contains a different mailbox or a "remote" hostname, then the user is considered "remote" and an alias is generated. The definition of "remote" is if the host name portion of the address does not match the value of SET_DOMAIN or any LOCAL_HOST in the OECN$UMP_LOCAL.INI. For each user which UMP determines requires an alias, an line is written to USER_ALIASES.TXT. A line is also written to USER_REVERSE.TXT. USER_REVERSE.TXT contains the appropriate "address reversal" entry which allows PMDF to adjust the user's "From:" address for outgoing mail. <p> Both USER_ALIASES.TXT and USER_REVERSE.TXT are suitable for loading into the PMDF_ALIAS_DATABASE and PMDF_REVERSE_DATABASE, respectively. The use of these files is optional and is up to each DAS to determine if they are useful in their configuration. EXPORT_LIST will not load the files into PMDF by default. You must either set the USER option in EXPORT_LISTS or write a custom procedure to load these files after EXPORT_LISTS is executed. <p> Please note, the USER_REVERSE.TXT is only effective if mail sent by the user is routed through your system. For remote systems running mailers which send internet mail directly (such as a remote VMS system running PMDF), you must use that system's mechanisms for rewriting "From" address lines. For instance, on a remote PMDF system, adding a REVERSE mapping to the PMDF_MAPPING_FILE may be appropriate. Alternatively, you could take steps to ensure that all outgoing mail is routed through the system containing the UMP reversing entries. <p> When exporting CSO, the user's real mailbox will be exported by default. You can control this by using the REWRITE line in the local INI file to rewrite addresses to either the DAS domain, a host alias, or the directory channel. If you do this, be sure that you are loading the appropriate file into either PMDF_ALIAS_DATABASE or your directory channel. An address rewritten in this manner will be rewritten back to the username or alias on the UMP profile (not the username in the mailbox field). <a name="heading_12.7.1.2"><h3>User Aliases</h3></a> <p> UMP provides the ability to create a user-specific alias independent of the username or actual mailbox. For example, a username of "SMITH@nwoca.org" could have an alias of "dave.smith@nwoca.org". Furthermore, the user alias may optionally be used as the user's backward pointing (From:) address. This permits the user to have an easier to remember address as well as obscuring the actual username for security purposes. <p> The user aliases in UMP are implemented as two fields on the UMP profile called "Alias" and "From". The alias is a 32 character field which may consist of letters, digits or dots (.). The alias is required to have a least one dot to avoid duplicates with VMS usernames. The 'From' field is a flag indicating if the alias should be used as the profile's official "From:" address. If the "From" flag is set to 'N', then the alias is merely an alternative address for the user and will be published in the CSO (White Pages). If the flag is set to 'Y', then an entry will be added into the USER_REVERSE.TXT to reverse the backward pointing addresses for any mail sent by the user. <p> The 'Alias' and 'From' fields may only be modified by a system or group manager. That is, end-users cannot specify thier own alias or reversal. This allows the appropriate manager to control the alias standards. It also prevents users from changing thier alias or 'From:' address frequently without understanding the implications or attempting to forge mail messages. <p> Group managers are required to specify an "alias prefix" which matches one of the group codes they are responsible for. For example, if a group manager is responsible for the groups "AA,AB", then they may only specify aliases beginning with "aa." or "ab.". This helps ensure uniqueness in the mailbox namespace when multiple group managers are responsbile for different groups of profiles. <p> Since the DAS must take additional configuration steps in PMDF to implement aliases and address reversal, the 'Alias' and 'From' fields are disabled by default. The DAS must take explicit action (see below) to implement this feature. <a name="heading_12.7.1.2.1"><h4>Implementing User Aliases</h4></a> <p> The following steps must be performed in order to activate the user alias and address reversal using UMP: <ol start=1 > <li>Configure PMDF to use the 'reverse database' on the appropriate channels. This feature is enabled by default in a standard PMDF configuration. See the PMDF documentation for more information. <li>Set ALLOW_USER_ALIAS to YES in OECN$UMP_LOCAL.INI. This flag enables the 'Alias' and 'From' fields in UMP. <li>Invoke EXPORT_LISTS.COM using the USER option to cause the USER_ALIASES.TXT and USER_REVERSE.TXT files to be loaded into the appropriate database. See <a href="oecn10_sysman_handbook_full.html#exam_build_proc">Section 12.18, Example Procedure for Periodic Rebuilds</a> for an example procedure which invokes EXPORT_LISTS.COM. </ol> <a name="heading_12.8"><h1>Distribution List Codes</h1></a> <p> Each distribution list code has a "type" prefix. The type value allows distribution lists to be organized into subsets independent of the list's name and allows restrictions to be placed on lists so users only see lists that may apply to them. The type codes also ensure that lists defined by the OECN do not conflict with those created by the DAS. <p> This version uses an 8 character code in the following format: <br> TT-CCCCCC <p> Where TT is the distribution list "type" (or category) and CCCCCC is the distribution list code. The following types are predefined by UMP: <table border=3> <tr> <td> </td> <td> 01 </td> <td> OECN-wide user distribution lists </td> </tr> <tr> <td> </td> <td> 02 </td> <td> OECN DAS staff-only lists </td> </tr> <tr> <td> </td> <td> 10 </td> <td> Default type for lists defined by DAS </td> </tr> </table> <p> Types beginning with "0" are reserved for OECN use. All other types (any type not starting with "0) are available for use by the DAS. Currently, a maximum of 100 types can be defined. <p> Type 10 is predefined and available for DAS use. To add additional types add a line to the local ini file, like: <br> TYPE=tt,"description" <p> For example: <br> TYPE=11,"NWOCA Staff Lists" <p> Once a type has been defined, you may use the type in subsequent DEFINE_CODE lines, for example: <br> DEFINE_CODE = 11-STFRCP, "Staff Recipes", STAFF_RECIPIES <br> DEFINE_CODE = 11-STFJOK, "Staff Jokes", STAFF_JOKES <p> This creates two lists called MAIL_STAFF_RECIPIES and MAIL_STAFF_JOKES. When displayed in UMP, they will be sorted and displayed under a subheading called "NWOCA Staff lists". <p> <strong>Restricting Types to Particular Users</strong> <br> <p> Using types allows you to organize your lists into categories for presentation to the user. But it may also be useful to restrict categories of lists to particular types of users. UMP allows you to apply several types of restrictions based on the user's profile information. <p> Note that type restrictions do NOT affect whether or not a user can subscribe or unsubscribe from a given list. Each DEFINE_CODE line determines whether a list is user-subscribable. The type restrictions only limit whether the user can see a list or not. <p> Please note that the type restrictions are not intended as rigid security. Since some of the criteria is based on user modifiable fields, it is possible for a user to enter incorrect information and get assigned to the wrong lists. For example, a user might enter another district's IRN which allows them to subscribe to another districts lists. However, if the user changes the IRN back to the correct value, UMP will remove them from any incorrectly assigned lists. <p> To apply a restriction to a type value, use one of the following commands in the local ini file: <br> <table border=3> <tr> <td> TYPE_RESTRICT=tt,SUBSCRIBED,tt-cccccc </td> <td> Restricts type tt to users who are also subscribed to list tt-ccccc. </td> </tr> <tr> <td> TYPE_RESTRICT=tt,IRN,nnnnnn </td> <td> Restrict type to users who have a district or building IRN matching nnnnnn </td> </tr> <tr> <td> TYPE_RESTRICT=tt,TYPE,xxxx </td> <td> Restrict type to users with a 'user type' field matching xxxxx. </td> </tr> <tr> <td> TYPE_RESTRICT=tt,COUNTY,xxxx </td> <td> Restrict type to users with a 'county' field matching xxxx. </td> </tr> <tr> <td> TYPE_RESTRICT=tt,USERNAME,wildcard </td> <td> Restrict type to users with a 'username' field matching wildcard mask. </td> </tr> </table> <p> Multiple TYPE_RESTRICT lines may be added for a single list type. In this case, the restrictions form a logical OR operation. That is, if the user matches any one of the criteria, they will have access to the type. <p> For example, to restrict the type 11 lists (from the example in the previous section) to DAS staff members, the following restriction could be applied: <br> <p> <table border=0> <tr> <td> <br> <pre> TYPE_RESTRICT=11, SUBSCRIBED, 01-STF </pre> </table> <p> This will restrict all type 11 lists to users who are also subscribed to the standard DAS staff list. <a name="heading_12.9"><h1>Auto Conversion of Distribution List Codes (Optional)</h1></a> <p> Because of the features provided by the distribution list types, it may be desirable for DAS's to change their existing distribution list codes. By default, during the conversion, all distribution list codes in the LOCAL INI file are prefixed with type 10. For instance, if a DAS has defined several "staff" lists, you may wish to separate these into a separate type and restrict them to staff members only. <p> To help facilitate this, an optional command is available for the LOCAL INI file called CONVERT. The CONVERT command takes the following form: <br> <em>CONVERT={old_code},{new_code}</em> <p> For example, to convert an existing code of 10-SEM (Staff EMIS) to 11-STFEMS, place the following line in the LOCAL.INI: <br> CONVERT=10-SEM, 11-STFEMS <p> Note that the prefix is required even if you did not use the prefix when defining the code originally. Remember that any codes defined by the local ini file default to type 10, so if a code was defined without a type, it's type is 10. <p> When changing a existing code using a CONVERT line, you should change the DEFINE_CODE line to reflect the new code at the time you add the CONVERT line. You should not reuse old codes until you are certain they no longer exist in the UMDDAT file. After you are certain the old code no longer exists in the UMDDAT file, you may remove the CONVERT line from your INI file. <p> Adding the CONVERT line and revising the DEFINE_CODE line, is all that must be done to convert an existing list. UMP and it's utilities will automatically convert the code as needed "on-the-fly". If you look at the UMDDAT.IDX file after making a conversion, you may notice that some users have the new code and others still have the old code. This is the expected behavior. The new code will not be physically written to the file until the record is changed with UMP's Modify function. <p> If you are creating locally written programs to update or report on user's distribution list codes, it may be confusing to have both the old and new codes on file. In this case, you may run the UMPUPDATE program to force the conversion on all records. <a name="heading_12.10"><h1>Defining Local Distribution Lists</h1></a> <p> To define a local distribution list, you need to add several additional lines to the OECN$UMP_LOCAL.INI file. <p> You will probally need to use the ini commands: <br> LOCAL_LIST_PREFIX, TYPE, TYPE_RESTRICT, DEFINE_CODE <p> <strong>Example 1</strong> <br> <p> The following example illustrates how to define a local distribution list for payroll clerks. <p> Add the following lines to the OECN$UMP_LOCAL.INI file: <p> <table border=0> <tr> <td> <br> <pre> TYPE = 12,"Local Payroll Clerks" DEFINE_CODE = 12-PAYCLK,"Payroll Clerks",PAYROLL_CLERK </pre> </table> <p> In order to actually subscribe to this distribution list, a user or DAS person, will have to access the user's UMP profile, bring up the list of available distribution lists, and subscribe the person. <p> <strong>Example 2</strong> <br> <p> As another example, suppose you wish to set up a distribution list for staff jokes, restrict the list to just those users who have access to DAS staff lists, create sublists for fiscal, programming, and EMIS jokes, and set a prefix for local lists. <p> Add the following lines to the OECN$UMP_LOCAL.INI file: <p> <table border=0> <tr> <td> <br> <pre> LOCAL_LIST_PREFIX = "local_" TYPE = 11, "Local Staff Lists" TYPE_RESTRICT = 11,SUBSCRIBED,01-STF DEFINE_CODE = 11-STFJOK,"Staff Jokes",STAFF_JOKES,Y,11-STFJOK DEFINE_CODE = 11-FISJOK,"Fiscal Jokes",FISCAL_JOKES,Y,11-STFJOK DEFINE_CODE = 11-PRGJOK,"Programmer Jokes",PROGRAMMER_JOKES,Y,11-STFJOK DEFINE_CODE = 11-EMSJOK,"EMIS Jokes",EMIS_JOKES,Y,11-STFJOK </pre> </table> <p> Then those users who are subscribed to the 01-STF list will see the following entry when they access the table of available lists in the UMP program. <br> -- LOCAL STAFF LISTS -- <br> ---LOCAL_STAFF_JOKES Staff Jokes <br> ---LOCAL_FISCAL_JOKES Fiscal Jokes <br> ---LOCAL_PROGRAMER_JOKES Programmer Jokes <br> ---LOCAL_EMIS_JOKES EMIS Jokes <br> <p> Users who are not subscrbed to the list 01-STF would see not entries for "Local Staff Lists" including the heading itself. <p> Note that the three sublists point to the master list, 11-STFJOK in the DEFINE_CODE lines. This makes these sublists, so that mail addressed to one of these sublists will be delivered to anyone on this list and anyone on the master list, but not to users on any of the other sublists. Also, mail addressed to the master list will be delivered to everyone on any of the sublists. <a name="heading_12.11"><h1>Profile Group Management</h1></a> <p> UMP provides the ability to segregate profiles into <strong>management groups</strong> and delegate responsibility for the groups to selected individuals. Once delegated, the group manager has nearly complete control over the content of the profiles in the groups they are responsible for. They may add, change or delete profiles within their group and assign profiles to unrestricted distribution lists. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> Group managers may not add or remove profiles from the restricted distribution lists. These lists (MAIL_STAFF, MAIL_SUPT_PUB, etc.) are the responsibility of the DA-site and may not be delegated. </td> </tr> </table> </center> <p> User profiles are assigned to groups simply by placing a value in the 'Group' field on the UMP profile. If desired, the field may be massed changed using Datatrieve by modifying the GRP field in the UMP_HEADER domain or UMP view. This value is a protected field and may only be changed by DAS personnel or a group manager associated with the group. <p> A user may be granted management rights to one or more groups by entering a comma separated list of groups in the 'Management Groups' field. A limit of ten comma separated groups may be included. The following standard wildcards are supported in the management groups field: <table border=3> <tr> <td> * </td> <td> Any sequence of zero or more characters </td> </tr> <tr> <td> % </td> <td> Exactly one character </td> </tr> <tr> <td> # </td> <td> Exactly one numeric character </td> </tr> <tr> <td> @ </td> <td> Exactly one alphabetic character </td> </tr> </table> <p> The user with any value in the 'Management Groups' field will be permitted access to the MAINTAIN option in UMP. No special security identifiers are required. The user will be able to view any profile on the system, but will only be permitted to modify or delete profiles associated with one of their groups. If a group manager adds a profile, they must enter a group which matches their group management field. <p> The value of the group field is entirely arbitrary. The DAS may assign the groups in any fashion desirable. Most likely, a group would be created for all users in a district and one or more group managers would be assigned to manage that district's profiles. However, groups could be further defined by building, or perhaps by classes of users (teachers, administrators, etc.). Since wildcards are supported, it is possible to devise complex hierarchies of groups which permit different users various levels of access. <p> Group managers should be carefully instructed regarding local conventions for the various UMP fields. In particular, if the DAS uses the USER_ALIAS.TXT to route mail to remote mailboxes, then proper use of the UMP 'Internet Host/Mailbox' field is critical to ensure proper mail delivery. Likewise, if the DAS uses the 'User Type' field to control which profiles are sent to the OECN White Pages, then the correct values must be provided to the group manager. <a name="heading_12.12"><h1>Export DIRECTORY DAEMON File (optional)</h1></a> <p> You have the option of exporting to a DIRECTORY DAEMON database. Executing the EXPORT_DD.COM file will produce a file suitable for loading into a PMDF DIRECTORY-DAEMON data file. The procedure only produces a DIRECTORY-DAEMON.TXT file in the OECN$UMP directory. You must execute the appropriate PMDF CRDB command to create the indexed file database and place it in the PMDF_ROOT:[DIRECTORY] with the appropriate filename for your pseudo-domain. <p> EXPORT_DD creates several aliases for each user. For example, the following aliases would be created for username "SMITH" and a profile name "Dave Smith": <table border=3> <tr> <td> SMITH </td> <td> SMITH@nwoca.org </td> </tr> <tr> <td> dave.smith </td> <td> SMITH@po.NWOCA.ORG </td> </tr> <tr> <td> smith.dave </td> <td> SMITH@po.NWOCA.ORG </td> </tr> <tr> <td> d.smith </td> <td> SMITH@po.NWOCA.ORG </td> </tr> <tr> <td> smith.d </td> <td> SMITH@po.NWOCA.ORG </td> </tr> </table> <p> Notice that the first alias (the username alias) sends directly to the user's "real" address. The other aliases (dotted names) send to the username at the directory channel. Since the username should be unique, the first alias should never cause a bounce. The other addresses may cause a bounce if they are not unique (the sender is notified of the duplicates and their addresses). Since only dotted names and their addresses are returned to the sender, the sender never learns the "real" address. This helps isolate remote users from knowning the real host names of the recipient. <p> The directory channel for the DAS is assumed to be "po." plus the value of the SET_DOMAIN line from the OECN$UMP_LOCAL.INI file. For instance, for nwoca.org, the directory channel is assumed to be po.nwoca.org. If the DAS is using a different name for the directory channel, you may place the following line in the OECN$UMP_LOCAL.INI file: <br> <em>DIRECTORY_DOMAIN=pseudo.domain</em> <p> See the PMDF System Adminstrators Guide for more information about the directory daemon, channels and pseudo-domains. <a name="heading_12.13"><h1>Submit UMP Data to OECN CSO Database</h1></a> <p> The CSO nameserver is a public domain software system which allows a single database to be built containing name and address information. The CSO is much flexible and allows client/server access to the database anywhere on the network. Users can use GOPHER, LYNX or other web browsers to perform queries. A utility called PH is also available to perform direct queries against the central database. <p> To transmit UMP data for loading into the CSO database, each DAS should run the UMP_SEND_CSO.COM command procedure once per week. This command procedure will extract the UMP database into CSO format and send it to NWOCA.ORG for loading into CSO. <p> Unless instructed otherwise, please do not routinely run UMP_SEND_CSO more than once per week. In general, a single weekly run is sufficient to keep the OECN White Pages up to date. However, situations will arise where an extra run of UMP_SEND_CSO is necessary or desirable. For example, if you change domain names, or load a large number of new users or make significant changes to the the profiles. In these cases, feel free to make a special run of UMP_SEND_CSO. <p> NWOCA's system will run an update routine at approximately midnight each night to load any files submitted during the day. Therefore, the CSO data on file at the server will be updated the day after you run UMP_SEND_CSO. This schedule means that your CSO data will be at most one week behind when compared to your current UMP database. <p> If you are also using EXPORT_DD.COM to build a DIRECTORY-DAEMON database, you may wish to have the email addresses in the CSO database reflect your directory daemon address, rather than your user's real addresses. In this case, you may add the following line to your OECN$UMP_LOCAL.INI file: <p> <table border=0> <tr> <td> <br> <pre> REWRITE=*,"pseudo_domain" </pre> </table> <p> Where "pseudo_domain" is the domain name of your directory channel, for example, NWOCA uses the following line: <p> <table border=0> <tr> <td> <br> <pre> REWRITE=*,"po.nwoca.org" </pre> </table> <p> This line would cause all of NWOCA's users to have an email address of username@po.nwoca.org regardless of their real host. In this way, remote users will not learn the real host name (which may change). <a name="heading_12.14"><h1>Master List/Sub-list Handling</h1></a> <p> Starting with the 29-Aug-95 version of UMPEXPORT, the master lists are handled differently than in the past. Previously, there were master lists which pointed to the respective sub-lists. But this caused duplicate messages if the user was on more than one sub-list. With this version, the master lists will contain the actual email addresses of the users who are on the master list or any of the sub-lists. <p> There were also "compatibility" codes which were used for the original NM distribution list codes. This proved too cumbersome and confusing. Therefore, a new method of handling the master lists was implemented which essentially combines the master lists with the NM-compatibilty lists. <p> The codes PRN, SPT and TRS were previously indicated as "Obsolete-NM" codes. This is no longer the case. These codes are now "master list" codes (and indicated as such on the UMP help screen). If a user is coded as having a "master list" code, they will placed on the master list _and_ will also be placed on _all_ of the sub-lists for that code. <p> If a user is coded on one of the sub-lists, they will be placed on that sub-list and the corresponding master list. <p> These changes provides two advantages: <ol start=1 > <li>It provides a simple way of placing a single user on all sub-lists using a single code. For example, if a DAS staff member wishes to be placed on all the MAIL_TREAS_xxx lists, they may simply be given the TRS master code. This will cause them to be placed on the master list and all of TRS's sub-lists. <li>Users which have not yet been recoded to one of the more specific lists will automatically be placed on the master and all sub-lists. This ensures that users who have not been recoded to the appropriate list will still receive mail sent to any of the lists. </ol> <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> This change means that it is somewhat less important to get your users migrated off of the old distribution list codes. However, if you leave users on the master list codes, they may receive mail that was not intended for them. For example, if mail is sent to mail_supt_jvsd, it will be received by all users who are on the SPT or SJV lists. </td> </tr> </table> </center> <a name="heading_12.15"><h1>UMPCHECK - Verifying UMP Profiles against SYSUAF (Optional)</h1></a> <p> UMPCHECK is a utility which reads the UMP profiles and compares the usernames to the SYSUAF file. It reports usernames which do not exist, have been disusered or dismailed. Optionally, UMPCHECK can delete profiles for such usernames. By default, UMPCHECK only checks profiles when the user's DECnet node name matches the values of the SYS$NODE or SYS$CLUSTER_NODE logicals. Other users are considered to be remote users and are not verified against the current node's SYSUAF. UMPCHECK must be run as a foreign command and accepts the following syntax: <br> <em>$ UMPCHECK {CHECK|DELETE|DELETE/CONFIRM} [nodes,...]</em> <p> The first parameter is the function to perform: <table border=3> <tr> <td> CHECK </td> <td> -- </td> <td> Verify the UMP profiles against the SYSUAF and report usernames which are invalid, disusered or dismailed. </td> </tr> <tr> <td> DELETE </td> <td> -- </td> <td> Unconditionally deletes local usernames which are invalid, disusered or dismailed. </td> </tr> <tr> <td> DELETE/ <br> CONFIRM </td> <td> -- </td> <td> Same as DELETE but prompts whether each username should be deleted or not. </td> </tr> </table> <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> The function must be specified exactly as shown above without abbreviation and there may not be spaces between DELETE and /CONFIRM. </td> </tr> </table> </center> <p> The second parameter indicates the node names of the users to be validated against the current SYSUAF. By default, the node names used are the current values of the SYS$NODE and SYS$CLUSTER_NODE logicals. <p> <a name="heading_12.16"><h1>UMP_LOGIN - To Prompt Users to Enter Profiles During Login (Optional)</h1></a> UMP_LOGIN.COM may be run during login to determine if the user has ever modified their own profile. If they have not entered their profile, UMP_LOGIN will ask them if they would like to do so immediately and place them in the UMP profile. <p> You may invoke UMP_LOGIN.COM at any point during login when appropriate for your users. For example, SYLOGIN or other procedure appropriate for your system. If you want UMP_LOGIN to be invoked automatically by OECN_LOGIN, you may create a file in OECN$CUSTOM called OECN_LOGIN_EPILOGUE.COM and execute OECN$:UMP_LOGIN from there. <p> If you use UMP_LOGIN.COM you may wish to use the VMS INSTALL utility to install OECN$:UMPMODIFIED.EXE as a known image to speed up the login process. <a name="heading_12.17"><h1>UMPID2DIS - Creating Distribution Lists from VMS Identifiers (Optional)</h1></a> <p> UMPID2DIS.EXE is an optional utility which builds PMDF style distribution lists containing all users who hold a specified identifier. This may be used by sites who wish to build distribution lists for all users of a given package. These distribution lists are not standard OECN-wide lists. <p> UMPID2DIS will only work correctly on your system if your UIC's are unique. That is, each user (holder of an identifier) has their own unique UIC. If two users hold the same UIC identifier, only one of them will be output to the lists. <p> To create a distribution list for users holding a given identifier, use the following commands: <br> $ ID2DIS :== $OECN$:UMPID2DIS <br> $ ID2DIS {identifier},... {distribution_list_file} <blockquote> where "identifier" is the identifier. If you specify an OECN_ identifier, users who hold the standard identifier or the _RO and _GM variants will be included in the list. You may specify multiple identifiers separated by commas (no spaces). If a user holds more than one of the identifiers, they will only be included on the list once. <br> <br> "distribution_list_file" is the filename to contain the distribution list. If a device and extention are not included, the default is OECN$UMP:.DIS. </blockquote> <p> Only users that meet the following criteria will be output to the list: <table border=3> <tr> <td> </td> <td> 1) </td> <td> The user holds one or more of the specified identifiers. </td> </tr> <tr> <td> </td> <td> 2) </td> <td> The UAF flags DISUSER and DISMAIL are not set. </td> </tr> <tr> <td> </td> <td> 3) </td> <td> The username has a valid UMP profile. </td> </tr> </table> <p> Note that UMPID2DIS does NOT create the PMDF alias to point to the distribution list. If aliases are desired for the list you must use PMDF CRDB or PMDF DB to create the PMDF aliases. <p> For example, NWOCA could use the following commands to create a distribution list for all NWOCA USPS users: <br> $ ID2DIS := $OECN$:UMPID2DIS <br> $ <br> $ ID2DIS OECN_USPS NWOCA_USPS <br> $ <br> $ PMDF DB <br> open pmdf_alias_database <br> override on <br> add "nwoca_usps" "nwoca_usps-list@reprocess.nwoca.org" <br> add "nwoca_usps-list" "<oecn$ump:nwoca_usps.dis,*,*,postmaster,*, USPS" <br> $ EXIT <a name="exam_build_proc"><h1>Example Procedure for Periodic Rebuilds</h1></a> <p> Periodically, each site should run EXPORT_LISTS.COM to update the distribution lists from the UMP data. Most likely you will want to run EXPORT_LISTS nightly. You should also run it anytime that you recreate your PMDF alias database from scratch or make significant modifications to the UMP profiles. <p> If you have PMDF's directory channel configured, you should run EXPORT_DD.COM and build a new directory daemon database. You may also to use UMPID2DIS to create distribution lists based on VMS identifiers. <p> You will most likely want to write a DCL command procedure to execute all of the appropriate steps in a single batch job, and then schedule it with DECscheduler. Attached is a sample of such a procedure which is currently in use at NWOCA. You may wish to use this as a starting point for your own procedure. <p> <table border=0> <tr> <td> <br> <pre> $!+ $! NWOCA_EXPORT_UMP.COM $! $! This procedure run the UMP routines to export distribution list, build $! aliases, etc. $! $! - $! $ SET PROC/PRIV=(BYPASS,SYSPRV,SYSNAM,SYSLCK) $ SET VERIFY $ SET DEFAULT OECN$UMP $!+ $! Temporarily suspend mail processing while lists are being $! created and datbases rebuilt. $!- $ STOP/QUEUE/NEXT MAIL$BATCH $!+ $! Export distribution lists and rebuild PMDF databases. $!- $ @OECN$:EXPORT_LISTS "REBUILD,USER,DEFER" STAFFR $ ! $ ! Merge aliases for mail addressed to former MAVCA users. $ ! May be removed after MAVCA.OHIO.GOV goes away. $ ! $ pmdf crdb /long/nofast/nodup/strip OECN$UMP:MAVCA_ALIASES.DAT oecn$ump:aliases.dat $ $!+ $! Create directory daemon text file. $!- $ @OECN$:EXPORT_DD $!+ $! Build new directory daemon database. Build into a temp file in case $! someone attempts to use database while in progress. $!- $ pmdf crdb/duplicate/stat oecn$ump:directory_daemon.txt - oecn$ump:directory_daemon.tmp $ copy oecn$ump:directory_daemon.tmp - pmdf_root:[directories]PO$NWOCA$ORG.DAT $ set prot=w:re pmdf_root:[directories]PO$NWOCA$ORG.DAT $ purge pmdf_root:[directories]PO$NWOCA$ORG.DAT $ delete/nolog oecn$ump:directory_daemon.tmp;* $! $! Build distribution list based on VMS identifiers $! $ ID2DIS := $OECN$:UMPID2DIS $ $ ID2DIS OECN_USPS,OECN_SYSMAN NWOCA_USPS NM_USPS.DIS $ ID2DIS OECN_PPS,OECN_SYSMAN NWOCA_PPS NM_PPS.DIS $ ID2DIS OECN_USAS,OECN_SYSMAN NWOCA_USAS NM_USAS.DIS $ ID2DIS OECN_EMIS,OECN_EMIS_STU,OECN_EMIS_STF,OECN_EMIS_SFU,OECN_EMIS_GEN,OECN_EMIS_FIN,OECN_SYSMAN NWOCA_EMIS NM_EMIS_USERS.DIS $ ID2DIS OECN_EIS,OECN_SYSMAN NWOCA_EIS NM_EIS.DIS $ ID2DIS OECN_VIS,OECN_SYSMAN NWOCA_VIS NM_VIS.DIS $ ID2DIS OECN_SECIMS,OECN_SYSMAN NWOCA_SECIMS NM_SECIMS.DIS $ ID2DIS NWOCA_INFOHIO NWOCA_INFOHIO NM_INFOHIO.DIS $ COPY OECN$UMP:nm_*.dis/sinc NM:/PROT=W:R $ $! Create aliases for NWOCA's identifier lists $ PMDF DB open oecn$ump:aliases.dat override on add "mail_hs_counselors" "mail_counselor_sec" add "nwoca_usps" "nwoca_usps-list@reprocess.nwoca.org" add "nwoca_usps-list" "<oecn$ump:nwoca_usps.dis,*,*,postmaster,*, USPS" add "nwoca_PPS" "nwoca_PPS-list@reprocess.nwoca.org" add "nwoca_PPS-list" "<oecn$ump:nwoca_PPS.dis,*,*,postmaster,*, PPS" add "nwoca_USAS" "nwoca_USAS-list@reprocess.nwoca.org" add "nwoca_USAS-list" "<oecn$ump:nwoca_USAS.dis,*,*,postmaster,*, USAS" add "nwoca_EMIS" "nwoca_EMIS-list@reprocess.nwoca.org" add "nwoca_EMIS-list" "<oecn$ump:nwoca_EMIS.dis,*,*,postmaster,*, EMIS" add "nwoca_EIS" "nwoca_EIS-list@reprocess.nwoca.org" add "nwoca_EIS-list" "<oecn$ump:nwoca_EIS.dis,*,*,postmaster,*, EIS" add "nwoca_VIS" "nwoca_VIS-list@reprocess.nwoca.org" add "nwoca_VIS-list" "<oecn$ump:nwoca_VIS.dis,*,*,postmaster,*, VIS" add "nwoca_SECIMS" "nwoca_SECIMS-list@reprocess.nwoca.org" add "nwoca_SECIMS-list" "<oecn$ump:nwoca_SECIMS.dis,*,*,postmaster,*, SECIMS" add "nwoca_INFOHIO" "nwoca_INFOHIO-list@reprocess.nwoca.org" add "nwoca_INFOHIO-list" "<oecn$ump:nwoca_INFOHIO.dis,*,*,postmaster,*, INFOhio" $ $!+ $! Create VMS Mail forwarding addresses for same aliases $!- $ mail := mail $ mail set forward/user=nwoca_usps in%nwoca_usps set forward/user=nwoca_pps in%nwoca_pps set forward/user=nwoca_usas in%nwoca_usas set forward/user=nwoca_emis in%nwoca_emis set forward/user=nwoca_eis in%nwoca_eis set forward/user=nwoca_vis in%nwoca_vis set forward/user=nwoca_secims in%nwoca_secims set forward/user=nwoca_infohio in%nwoca_infohio $ $ $!+ $! Create a MAIL_ALL distribution list. Will contain all user profiles $! which are subscribed to one or more distribution list (non-duplicated $! addresses). $!- $ delete /nolog/noconfirm mail_all.*;* $ append mail_*.dis/sinc mail_all.tmp/new $ sort/nodupli mail_all.tmp mail_all.dis $ set prot=w:r mail_all.dis;* $ $ PMDF DB open oecn$ump:aliases.dat override on add "mail_all" "mail_all-list@reprocess.nwoca.org" add "mail_all-list" "<oecn$ump:mail_all.dis,*,*,postmaster,*, All NWOCA users" $ mail := mail $ mail set forward/user=mail_all in%mail_all $ $ purge oecn$ump:*.* $ $!+ $! All local aliases have been added to databases. $! Place the new databases back into PMDF production $! directory. $!- $ copy/nolog oecn$ump:aliases.dat PMDF_ALIAS_DATABASE $ set file pmdf_alias_database/prot=w:re $ purge/keep=3/nolog pmdf_alias_database $ $ copy/nolog oecn$ump:reverse.dat PMDF_REVERSE_DATABASE $ set file pmdf_reverse_database/prot=w:re $ purge/keep=3/nolog pmdf_reverse_database $ $!+ $! All done. Restart dispatcher to ensure services open $! the fresh databases. $ PMDF RESTART DISPATCHER $ START/QUEUE MAIL$BATCH $ $ EXIT </pre> </table> <p> <a name="heading_12.19"><h1>Multiple Non-Clustered Systems</h1></a> DAS's with a single VMS system, or a single VMS cluster, need not be concerned with this section. <p> The UMP system is currently designed assuming that each A-site will have a single set of UMP files regardless of how many independent (non-VMSclustered) systems. This provides a single point of adminstration for DAS personnel and makes building the PMDF distribution lists and aliases easier. At present, there are no plans to implement multiple UMP files on multiple systems while still being able to produce a single set of distribution lists for the entire DAS. This may be added in the future if a well defined need arises. <p> However, it would be useful if remote users could modify their own user profiles without having to log into the system which contains the UMP files. This section describes a secure way of providing remote users access to their own UMP profiles. <p> Use the following procedure to establish remote access to the UMP system. <ol start=1 > <li>Choose a system to contain the UMP files. This would normally be your cluster or the system primarily responsible for mail delivery. This will be called the "server" system. <li>Put UMP on the server normally as described in the "Setup" section. Users on this system will use the UMP program directly from this system. <li>Create a username on the server called UMP_SERVER. This should be non-prived, network-only access. The login directory for this account can be the OECN$UMP directory, or it can have a separate login directory. <li>On the server define the OECN$UMP logical as normal. <li>On the server use AUTHORIZE to define network proxies into the server for each remote system. For example: <br> UAF> ADD/PROXY node::* UMP_SERVER <br> Where "node" is the DECnet node name of the remote node. <br> This will give any user on one of your non-server nodes proxy access to the UMP_SERVER. <li>On each node (client) that you want to have access to the server, define OECN$UMP as follows (assuming MAIN:: is the server): <br> $ DEFINE OECN$UMP "MAIN""UMP_SERVER""::OECN$UMP:" <br> Also, copy the UMP.EXE file to the OECN$: directory on the client node. Set up the users to run the local copy of the .EXE. <li>Copy the *.INI files from the server to the client system. and define the following logicals: <br> $ DEFINE OECN$UMP_STANDARD dev:[dir]OECN$UMP_STANDARD.INI <br> $ DEFINE OECN$UMP_LOCAL dev:[dir]OECN$UMP_LOCAL.INI <br> Modify the OECN$UMP_LOCAL.INI file to contain the local system's DECnet node name and internet host. This will ensure that each user's profile is built using the local system's node names. </ol> <p> If you do the above, each node will appear to have local access to the UMP files, and you will end up with a central DAS-wide database to build your distribution lists from. The server node will be the only one that needs to run the EXPORT_LISTS.COM to produce the mail_ and oecn_ for your DAS. <a name="heading_12.20"><h1>Programming Considerations</h1></a> <p> DAS programmers may wish to use DTR, COBOL or other high level language to query or manipulate the UMP data files. This section contains a brief description of the UMP data files and special considerations. DTR and COBOL definitions are provided with the software release for this purpose. The COBOL definitions are contained in UMPDAT.LIB and UMDDAT.LIB in OECN$LIB. The DTR definitions are in the domains OECN$CDD_OECN.UMP_HEADER and OECN$CDD_OECN.UMP_DIST. OECN$CDD_UMP.UMPS is a view which joins the header and distribution list code. <p> The UMP data is stored in two files in OECN$UMP: <table border=3> <tr> <td> UMPDAT.IDX </td> <td> Contains profile information. Keys: <ul> <li>Primary: Group + Username <li>Secondary: Username (no duplicates) <li>Secondary: Alias (no duplicates) </ul> </td> </tr> <tr> <td> UMDDAT.IDX </td> <td> Contains the distribution lists the user is subscribed to. Each record represents a single distribution list assignment. The distribution lists are stored as a code value defined by the OECN$UMP_STANDARD.INI or OECN$UMP_LOCAL.INI files. Primary key: Username + Distribution_list_code </td> </tr> </table> <a name="heading_12.20.1"><h2>Field Requirements</h2></a> <p> Some fields in UMP may display to the user differently than is physically stored in the file. Other fields have specific requirements. Please note the following: <ul> <li>The ALIAS field must always contain a value. If the user does not have a specific alias, then the ALIAS must be set equal to the USERNAME field. <li>A number of fields are calculated by UMP as needed and may or may not be stored physically in the field. For example, if the ORGANIZATION field is blank, but the DISTRICT_IRN is not, then UMP will calculate the ORGANIZATION name using the OEDS file. However, UMP will not necessarily store the calculated value. If you are developing programs which depend on these values being stored on the file, you may run UMPUPDATE.EXE prior to your program. UMPUPDATE will calculate the files and store them on the file. <li>Distribution list codes are always stored in internal format (ttxxxx) as defined by the INI files. In order to manipulate distribution codes, you must know the lists internal value. <li>The LAST_UPDATE field is a VMS quadword date. <li>MODIFIED_FLAG contains "Y" if the user has modified their own profile. Any other value indicates the profile is new and has not been modified by the user. </ul> <p> <hr size=5> <a name="vfc2pdf_chap"><h1>VFC2PDF - Converting Text Files to PDF Format</h1></a> <p> VFC2PDF converts VFC or plain text files into PDF (Portable Document Format) files. After a report is converted to PDF format, it can be transferred to a PC or a MAC. It can also be viewed or printed using the Adobe Acrobat viewer. By using this utility, it becomes much easier to publish documents on public Internet web sites, CDrom, etc. <h3>accessing the program</h3> <blockquote> <br> <br> <p> The program may be executed by typing: <p> <table border=0> <tr> <td> <br> <pre> Menu>VFC2PDF </pre> </table> <p> at the Menu or from the $ prompt by typing: <p> <table border=0> <tr> <td> <br> <pre> $ VFC2PDF/[qual 1]/.../[qual n] {input_file} [output_file]) </pre> </table> </blockquote> <p> By executing from the Menu, you have no control over the default formatting options. <p> By executing from the $ prompt, you can control the output, including the use of wildcards. By default, VFC2PDF will attempt to choose appropriate orientation, font sizes and margins based on the record length of the input file. However, these values may be controlled by using qualifiers as given below. <p> <center> <table border=0 width=75%> <tr> <td><center><font size=+2><strong>Note</strong></font></center><hr size=1 noshade> A foreign command must be defined for VFC2PDF, such as: <br> ($ VFC2PDF :== $OECN$:VFC2PDF). </td> </tr> </table> </center> <p> <strong>Syntax</strong> <br> <p> <table border=0> <tr> <td> <br> <pre> VFC2PDF {input_file} [output_file] /ORIENTATION={PORTAIT|LANDSCAPE} /FONT_SIZE={points} /FONT_STYLE=([NORMAL],[BOLD],[ITALIC]) /VERTICAL_SPACING={points} /TOP_MARGIN={points} /LEFT_MARGIN={points} /LOG /PAGE_LENGTH={max_lines_per_page} /LINE_WIDTH={characters_per_line} (defaults to record size) /INFORMATION=([AUTHOR="author"], [CREATOR="creator (defaults to username)"], [TITLE="title (defaults to filename)"], [SUBJECT="subject"]) /[NO]COMPRESS </pre> </table> <p> <strong>Defaults</strong> <br> <p> <table border=0> <tr> <td> <br> <pre> PORTRAIT: /FONT_SIZE=11 /VERTICAL_SPACING=11 /LEFT_MARGIN=45 /PAGE_LENGTH=66 LANDSCAPE: /FONT_SIZE=9 /VERTICAL_SPACING=9 /LEFT_MARGIN=30 /PAGE_LENGTH=66 If /LINE_WIDTH is greater than 132: /FONT_SIZE=7 /VERTICAL_SPACING=9 /LEFT_MARGIN=30 </pre> </table> <p> <strong>Notes</strong> <br> <p> <table border=0> <tr> <td> <br> <pre> - Wildcards are supported in the input specification. If wildcards are used, the output_file may be omitted or must not include a file name. Output files will be written to the default directory unless the second parameter contains an output directory. - All qualifiers are optional. If /ORIENTATION is omitted, then it will be selected automatically based on the record length of the input file. Line lengths over 80 characters will be printed in LANDSCAPE, otherwise PORTRAIT will be used. Note: Record size determination is based on the MRS (Maximum Record Size) in the RMS header. For formats where MRS is not set, VFC2PDF will assume 80 characters. </pre> </table> <h3>transfer options</h3> <blockquote> <br> <p> There are several methods available to transfer the PDF formated file to a PC or MAC. <p> One method is to use some FTP utility. <p> Another procedure, which seems to work well in Netscape, is to specify an FTP URL as: <p> <table border=0> <tr> <td> <br> <pre> ftp://username@host.org/ </pre> </table> <p> Netscape will prompt you for a password and connect with an authenticated FTP. <p> A second simple method is to mail the file(s) to yourself as follows: <p> <table border=0> <tr> <td> <br> <pre> EMAIL>send/file/noedit/nocc/subj="PDF Files" filename.pdf </pre> </table> <p> or for multiple PDF files: <p> <table border=0> <tr> <td> <br> <pre> EMAIL>send/file/noedit/nocc/subj="PDF Files" *.pdf </pre> </table> <p> For the above, "noedit" means No Edit feature, and "nocc" means No Carbon Copy desired. <p> Once the files are sent, the user can open the message with their browser, or WEB-Mail, or some other client, and then save it to their desktop or print from there. </blockquote> <p> <table border=2> <tr> <td width=150 align=center><a href="oecn10_sysman_handbook_full_contents.html">Contents</a></td> </tr> </table> </body> </html>