This version of the Programming SAC was adopted by Software Services on January 22, 1996.
1. General Programming Standards and Conventions
The definitions, standards and conventions within this section apply to all programming and user environments in use in the Decentralized Hospital Computer Program (DHCP). This includes all applications that use commercial software products as an integral part of DHCP (but not to the commercial application itself) and to all development environments including, but not limited to programming languages such as M or Pascal and graphical user interface (GUI) environments such as Delphi.
1.1 Definitions applicable to this appendix:
CONVENTIONS - Programming guidelines which are designed to promote consistency and safety across DHCP applications.
Exemptions from conventions are not required, but developers are strongly encouraged to follow them.
DBA - Database Administrator
DBIC - Database Integration Committee
DHCP - Decentralized Hospital Computer Program
EXEMPTION - Authority granted by the SACC to a specific DHCP application which allows that application to not comply with a particular section of the SAC for a specified timeframe.
EXTENSIONS - An addition, deletion, or modification to the current Standards and Conventions document. Each extension will contain an appropriate effective date, and may optionally contain an expiration date or event. (The Programming SACC will update the SAC quarterly via extensions, which have the full weight of the original SAC. Every effort will be made to keep all DHCP development standards and conventions in one location.)
IA - Integration Agreement. IA's can be accessed via the DBA menu on FORUM.
KERNEL - The Kernel is a set of software utilities that form the foundation of DHCP and include elements that start with the namespaces XG*, XLF*, XPD*, XQ*, XT*, XU*, XV*, ZI*, ZO*, ZT*, ZU*.
MAILMAN - Mailman is a set of software utilities that form the foundation of DHCP's electronic mail and communications and include elements that start with the namespace XM*.
NAMESPACE - A unique set of between 2 and 4 alpha characters assigned by the DBA.
NEW - A way to create a new version of a variable either by explicit declaration or implicitly through parameter passing. Some protected variables may not be modified through the use of either the implicit or explicit NEW command.
PACKAGE - A set of routines, files, options, templates, security keys, screens, bulletins, functions, help frames, forms, blocks, objects, protocols, dialogues, list templates, windows, etc. namespaced according to DBA requirements that function as a unit.
STANDARD - A rule which all DHCP software must follow.
SUPPORTED REFERENCE - Routine labels, extrinsic functions, files or global nodes that are accepted and documented by the DBIC and listed on the DBA menu on Forum.
VA FileMan - The Database Management System for DHCP, with namespaces DD*, DI* and DM*.
1.2.1 Naming requirements for files used by DHCP packages.
18.104.22.168 All VA FileMan files in the M Language environment must be number spaced in the number space assigned to the package by the DBA.
22.214.171.124 All DOS, VMS or other host files created or exported as part of a DHCP application shall be namespaced in the namespace assigned by the DBA.
1.2.2 Packages exporting script files should provide script files for a variety of the terminal emulation packages commonly in use in the VA.
1.2.3 Packages exporting spreadsheet templates should apply protection to embedded formulas to prevent accidental deletion by a user. Spreadsheet templates should contain documentation describing the purpose of the template, complex functions, and user help.
2. M Language Programming Standards and Conventions
All M-based DHCP software will meet the following standards, and comply with the spirit of the conventions.
2.1 The 1995 ANSI/MDC X11.1 Sections 1 and 2 will be adhered to unless explicitly modified by this document.
2.2 Routines (Routine structure and format)
2.2.1 The first line of a routine must be in the following
routine name<ls>;domain(site)/programmer-brief description <space>;date (time is optional).
126.96.36.199 The first line of a routine cannot contain the formal list for parameter passing.
188.8.131.52 Routines generated by VA FileMan or Kernel (e.g., INITs, ONITs, NTEG, and compiled routines) and other compiled routines used in exporting a package, need not comply with this standard (i.e., 2.2.1).
2.2.2 The second line of a routine must be in the following
LABEL-optional)<ls>;;version number; package name; **pm,...pn**; version date where:
184.108.40.206 The version number must be the same on all of the package-namespaced routines including Inits, Onits, etc.
220.127.116.11 pm,...pn are the applied patch numbers separated by commas, this ";" piece is null if there are no patches.
18.104.22.168 The version date must be the same on all of the package namespaced routines including Inits, Onits, etc.
22.214.171.124 Routines compiled from templates, cross-referenced, etc., by VA FileMan during or after package installation are exempt from the second line requirement.
2.2.3 If local modifications to a routine are restricted or prohibited by policy or directive, the third line should contain an appropriate notice. (e.g., "Per VHA Directive 10-92-142, this routine should not be modified")
2.2.4 Labels are limited to eight (8) characters and may not contain lower case characters.
126.96.36.199 LABEL+OFFSET references will not be used except for $TEXT references
188.8.131.52 Lines referenced by $TEXT for use other than to check for the existence of the routine must be in the following format: (LABEL-optional)<ls>;;text or M code.
2.2.5 The linebody must contain at least 1 character, must not exceed 245 characters in length, and must contain only the ASCII characters values 32-126. Commands, functions, local and global variable names, system variables, SSVNs, etc. must be uppercase.
2.2.6 Package routine names of the following forms will not be used:
184.108.40.206 NAMESPACE_I* (with the exceptions of Kernel, VA FileMan, and routines created to support the INIT process).
220.127.116.11 NAMESPACE_NTE* (with the exception of the package integrity routines).
2.2.7 The maximum routine size, as determined by executing ^%ZOSF("SIZE"), is 10,000 characters. The combination of routine and symbol table must run in the partition size specified in the appropriate VA operating system cookbook.
2.2.8 Vendor specific subroutines may not be called directly except by Kernel, Mailman and VA FileMan.
2.2.9 All applications will use documented TaskMan utilities to interface with TaskMan globals.
2.2.10 Naked references must either be appropriately preceded by the full reference defining it or be documented.
18.104.22.168 An appropriate preceding full reference is one that is on the same physical routine line as the naked reference and has no code between it and the naked reference that branches in any manner to other lines of code or executables.
22.214.171.124 Those naked references requiring documentation must be documented within the routine in the immediate vicinity of the naked reference. Those naked references that are preceded by a full reference which is outside of the routine where the naked reference is used must have documentation in both the routine containing the full reference and the routine containing the naked reference. This documentation must be in the immediate vicinity of the appropriate reference.
126.96.36.199 Uses of naked references in called utilities are
S DIC=200,DIC(0)="AEQ",DIC("S")="I $L($P($G(^(1)),"^",9))" D ^DIC
is a legitimate use of the naked reference.
2.2.11 % Routines
188.8.131.52 No application will distribute % routines. (Exemptions: Kernel and VA FileMan)
184.108.40.206 No % routines shall execute variables which could be set by a programmer prior to executing the code.
220.127.116.11 No routine which will be resident in the Library (MGR) account will use VIEW commands using variables as arguments which could be set by a programmer prior to executing the code.
2.2.12 Z Routines
18.104.22.168 No application will export routines whose names start with the letter "Z". (Exemption: Kernel)
2.2.13 Routines may not be invoked using the extended
i.e., D ^|"VAH"|TAG^ROUTINE is illegal.
2.3.1 Local Variables
22.214.171.124 Lowercase characters in local variable names are prohibited.
126.96.36.199 The full evaluated length of a local variable name including subscripts must not exceed 200 characters. The evaluated length is calculated as follows.
Example subscripted variable: NAME(sub1,sub2,...,subn)
2) +$L(sub1) + $L(sub2) + ... +$L(subn)
3) + 2 * number of subscripts n
VAR("XXX",123,1,2,0) would evaluate to a string length of 42, (6+11+10+15)=42.
188.8.131.52 System Wide Variables
184.108.40.206.1 The following are system wide variables. Any application setting system wide variables must conform to the following definitions.
AGE - Patient age in years from date of birth to DT expressed as an integer, or, if deceased, the date of death.
DFN - Internal number of an entry in the Patient File (#2).
DOB - Patient date of birth expressed in internal VA FileMan format.
SEX - Patient sex; either "F" or "M".
SSN - Social security number with 9 contiguous digits, or 9 digits and a "P".
VA("BID") - Brief patient identifier up to 7 characters.
VA("PID") - Patient identifier; up to 15 characters.
220.127.116.11.2 The following variables, referenced elsewhere in this document, are set by Kernel during sign-on, or by VA FileMan, and can be assumed to exist by all DHCP applications.
DT - Current date, without time, in internal VA FileMan format. DTIME - Time-out parameter for a read command in seconds.
DUZ array - Contains user specific information.
U - Circumflex (i.e., "^").
IO - The hardware name of the last selected in/output device. IO(0) - The assigned principal device (primary device).
ION - The logical name of the IO device.
IOST - The last selected input/output device's subtype from the Terminal Type file.
IOST(0) - The internal entry number in the Terminal Type file of the last selected IO device's terminal type.
IOM - The width of the IO device.
IOSL - The length of the IO device.
IOF - The code to start output at the top of a page (e.g., W @IOF).
IOBS - The backspace of the IO device.
18.104.22.168 DHCP packages are not allowed to KILL, NEW, SET, MERGE, READ (into) or otherwise modify the variable DUZ or any DUZ array element. (Exemptions: Kernel and VA FileMan)
22.214.171.124 The variables DT, DTIME, and U have no array elements and shall be initially defined by Kernel or VA FileMan.
126.96.36.199.1 The variable U will not be KILLed or NEWed or changed from the value defined by Kernel or VA FileMan. (It is legal to SET U="^".)
188.8.131.52.2 The variable DT will not be KILLed or NEWed. If changed it must be set using the supported reference S DT=$$DT^XLFDT.
184.108.40.206.3 The variable DTIME may be changed, but must be restored to its original value before exiting the option.
220.127.116.11.3.1 All locations where DTIME is changed but not restored, must be documented in the Technical manual.
18.104.22.168.3.2 The Kernel supported reference $$DTIME^XUP
will reset DTIME to its original value,
e.g., S DTIME=$$DTIME^XUP(DUZ).
22.214.171.124 DHCP packages are not allowed to KILL, NEW, SET, MERGE, READ (into) or otherwise modify IO namespaced variables and any of their array elements except those documented as modifiable in the Kernel System Manual. (Exemption: Kernel, Mailman, and VA FileMan)
126.96.36.199 DHCP packages are not allowed to KILL, NEW, SET, MERGE, READ (into) or otherwise modify % variables. Exceptions to this are the single character variable "%" and the variables set for and/or returned by Kernel and VA FileMan supported references. (Exemption: Kernel, VA FileMan and MailMan)
188.8.131.52 A DHCP package may declare namespaced, local variables as package-wide. The variables and all of their array elements must be described in the package technical manual. A DHCP package may not kill or change another DHCP package's packagewide variables.
184.108.40.206.1 Documentation on how to create and kill package-wide variables created by an option that is removed from its exported menu path must be included in the technical manual.
220.127.116.11 All supported references must leave the lock tables and local symbol tables unchanged upon exit with the exception of the following:
These supported references must be documented in the package technical manual and on FORUM with a descriptive list of ALL input and resulting output variables.
18.104.22.168 Naming requirements for variables passed between packages.
22.214.171.124.1 Input variables in an Actual List passed by reference between packages must be package namespaced.
Illegal: D BLD^DIALOG(3500010,"",.Y,"IBX")
126.96.36.199.2 Input variables that represent local variables into which data will be exchanged must represent a data location that is package namespaced.
Illegal: S DA=10,DR=".01;.104",DIC="^DPT(",DIQ="Y" D EN^DIQ1
2.3.2 Global Variables
188.8.131.52 Lowercase characters in global names and global subscripts are prohibited. (Exemption: Cross-references created using field values containing lowercase characters and subscripts used in the ^TMP and ^XTMP globals.)
184.108.40.206 The full evaluated length of a global reference must not exceed 200 characters. The evaluated length is calculated as follows.
Example subscripted variable: ^NAME(sub1,sub2,...,subn)
(2.) +$L(sub1) + $L(sub2) + ... +$L(subn)
(3.) + 2 * number of subscripts n
^TMP("XXX",123,1,2,0) would evaluate to a string length of 42 (6+11+10+15)=42.
220.127.116.11 The KILLing of unsubscripted globals is prohibited.
(VA FileMan's EN^DIU2 utility allows the deletion of files stored in unsubscripted globals, and therefore it allows the killing of unsubscripted globals. Application developers must document when calls to EN^DIU2 are made to delete files stored in unsubscripted globals).
18.104.22.168 READing, KILLing, SETting or MERGing ^% globals is prohibited. (Exemption: Kernel)
22.214.171.124 All globals must be VA FileMan compatible. ^TMP, ^XTMP and ^UTILITY have a standing exemption from this requirement.
126.96.36.199.1 The global ^TMP will be used as a scratch global within a session. The first subscript shall be $J, or the first two subscripts shall be a package namespaced subscript followed by $J.
188.8.131.52.2 The global ^XTMP will be translated, with one copy for the entire DHCP production system at each site. The structure of each top node shall follow the format ^XTMP(namespaced-subscript,0)=purge date^create date^optional descriptive information, and both dates will be in VA FileMan internal date format.
184.108.40.206 Fields in VA FileMan files which contain executable code must be write protected in the DD with "@" (e.g., ^DD(file,field,9)="@"), or be defined as VA FileMan data type of "MUMPS".
220.127.116.11 References to the DD Global requires a formal Data Base Integration Agreement (DBIA) with the VA FileMan Development team and must be registered with the Data Base Administrator.
18.104.22.168 All global variables executed by % routines must be in write protected globals.
22.214.171.124 Extended reference syntax may not be used to reference
global variables, i.e.,
S X=^|"VAH"|GLOBAL(1,1) is illegal.
2.3.3 Intrinsic (system) Variables
126.96.36.199 Lowercase Intrinsic Variables are prohibited.
188.8.131.52 No DHCP package may use the following intrinsic (system) variables unless they are accessed using Kernel or VA FileMan supported references: $D[EVICE], $EC[ODE], $ES[TACK], $ET[RAP], $I[O], $K[EY], $P[RINCIPAL], $Q[UIT], $ST[ACK], $SY[STEM], $Z*. (Exemption: Kernel and VA FileMan)
2.3.4 Structured System Variables (SSVNs)
184.108.40.206 Lowercase SSVNs are prohibited.
220.127.116.11 The following Structured System Variables may be used only by Kernel or VA FileMan or through their supported references: ^$CHARACTER, ^$DEVICE, ^$DISPLAY, ^$EVENT, ^$GLOBAL, ^$JOB, ^$LOCK, ^$ROUTINE, ^$SYSTEM, ^$Z*, and ^$WINDOW.
2.4.1 Lowercase commands are prohibited
2.4.2 BREAK Command
18.104.22.168 Direct use of the BREAK command is prohibited. Use ^%ZOSF("BRK") and ^%ZOSF("NBRK"). (Exemptions: Kernel and VA FileMan)
2.4.3 CLOSE Command
22.214.171.124 Direct use of the CLOSE command is prohibited. Use the routine ^%ZISC. (Exemptions: Kernel, Mailman and VA FileMan)
2.4.4 HALT Command
126.96.36.199 Direct use of the HALT command is prohibited. Use the supported reference H^XUS. (Exemption: Kernel and VA FileMan)
2.4.5 JOB Command
188.8.131.52 Direct use of the JOB command is prohibited. Use the Kernel Task Manager's supported calls to create jobs. (Exemption: Kernel and MailMan)
2.4.6 KILL Command
184.108.40.206 The argumentless form of the KILL command is prohibited. (Exemption: Kernel)
220.127.116.11 The exclusive form of the KILL command is prohibited. (Exemptions: Kernel and VA FileMan)
2.4.7 LOCK Command
18.104.22.168 All LOCKs shall be of the incremental or decremental form. (Exemption: Kernel)
22.214.171.124 All incremental LOCKs must have a timeout.
2.4.8 NEW Command
126.96.36.199 The argumentless form of the NEW command is prohibited. 188.8.131.52 The exclusive form of the NEW command is prohibited.
2.4.9 OPEN Command
184.108.40.206 The use of the OPEN command is prohibited. (Exemptions: Kernel, Mailman and VA FileMan)
2.4.10 READ Command
220.127.116.11 All READ commands shall read into local variables, or one of the non-VA FileMan compatible globals ^TMP or ^XTMP.
18.104.22.168 All user input READs must have a timeout. If the duration of the timeout is not specified by the variable DTIME and the duration exceeds 300 seconds, documentation in the package Technical Manual is required.
22.214.171.124 All user input READ commands shall be terminated by a carriage return. (Exemption: Kernel and VA FileMan)
(Developers desiring to implement escape processing [function keys, arrow keys, etc.] must use Kernel supplied supported references [XGF].)
2.4.11 Transaction Processing Commands
126.96.36.199 No DHCP package may use transaction processing commands at this time. When transaction processing is fully supported by those M operating systems in widespread use in DHCP, the SACC will issue an appropriate extension.
2.4.12 USE Command
188.8.131.52 The use of the USE command with parameters is prohibited. (Exemptions: Kernel and VA FileMan)
2.4.13 VIEW Command
184.108.40.206 The use of the VIEW command is prohibited. (Exemptions: Kernel and VA FileMan)
2.4.14 MWAPI Commands
220.127.116.11 No DHCP package may use the MWAPI Commands: ESTART, ESTOP, ETRIGGER. (Exemption: Kernel)
18.104.22.168 The use of Z* commands is prohibited. (Exemptions: Kernel and VA FileMan)
2.5.1 Lowercase functions are prohibited
2.5.2 Intrinsic Functions
22.214.171.124 Use of the $NEXT function is prohibited. All DHCP packages should remove all occurrences of $NEXT. This includes occurrences generated by VA FileMan.
126.96.36.199 The use of the $VIEW function is prohibited. (Exemptions: Kernel and VA FileMan)
188.8.131.52 The use of $Z* functions are prohibited. (Exemptions: Kernel and VA FileMan)
2.5.3 Extrinsic Functions
184.108.40.206 Supported References that use parameters will document the elements of the formal list internally within the routine and in the package Technical or Programmer manual.
Documentation will specify which elements of the formal list are required and which are optional, if any, and those elements which must be passed by reference.
220.127.116.11 Supported Extrinsic special variables - extrinsic functions with an empty formal list - will be documented within the routine and in the Technical or Programmer manual.
2.6 Name Requirements
2.6.1 Unless approved by the DBIC, routine, global, security key, option, template, bulletin, function, screen, help frame, protocol, form, block, list templates, objects, dialogues, remote procedures, etc. names must be consistent with the assigned DBA namespace.
2.7 Options (Option file entries)
2.7.1 Option selection must be made through Menu Manager. Hardcoded menu management systems are not allowed.
2.7.2 All options in a package must be path independent once the steps described in the Technical manual for creating and killing package-wide variables have been taken.
2.7.3 The following must not exist after exiting an option
18.104.22.168 All documented output variables created by a called supported reference.
22.214.171.124 All documented locks created by a called supported reference.
126.96.36.199 All documented temporary scratch global nodes (e.g., ^TMP and ^UTILITY) created by a called supported reference, with the exception of ^XTMP global data.
188.8.131.52 All local variables, locks, and scratch global nodes (except ^XTMP, or other scratch globals designed to be passed between parts of a package) created by the application.
2.8 Device Handling
2.8.1 All device selection and closing will be made through the use of the Kernel supported references. See Sections 2.4.3 and
2.4.9 for specific information about the CLOSE and OPEN commands. (Exemption: Kernel and VA FileMan)
2.8.2 All output to a hard copy device (e.g., printer) must allow for queuing.
2.8.3 Any output directed to a hard copy device (e.g., printer) will not start with a form feed or line feeds with the purpose of creating a form feed, and will leave the device at top-of form when the output is finished.
2.9.1 Application software must use documented Kernel supported references to perform all M operating system specific functions. (Exemptions: Kernel and VA FileMan)
2.9.2 Any data element which may be interpreted as a number must contain no more than 15 significant digits.
2.9.3 Packages may phase out supported references (as callable from outside the application and documented by DBA) by providing a minimum 18 month notice to the PROGRAMMER, CHIEF PROJECT MANAGER and SITEMANAGERS NATIONAL mail groups on FORUM.
2.9.4 All globals and routines will use only the M character set profile.
2.10 Supported Type A Extensions
2.10.1 No Type A extensions to the M Language standard are currently approved for use. Type A extensions may be made available through a SAC extension, after all operating systems in wide use in the VA have implemented the Type A extension.
2.11.1 Only Kernel and VA FileMan and existing Supported References should use ^UTILITY.
2.11.2 Tasks should be deleted from Task Manager's list by SETting the variable ZTREQ equal to "@" just prior to the application QUITing.
2.11.3 VA FileMan conventions should be used for editing data and for formatting date and time (see the VA FileMan Users guide).
2.11.4 Routine documentation
184.108.40.206 Routine line tags referenced from outside the routine should be documented before, on or after the line tag. Documentation should include a description of function.
220.127.116.11 All supported references or routines invoked initially from an option or protocol should contain documentation explaining the functionality and any required, passed input and output variables.
2.11.5 READ commands should not be used in the data dictionary.
2.11.6 WRITE commands should not be used in data dictionaries (except for VA FileMan generated ID nodes). The call to EN^DDIOL should be used.
2.11.7 The proper method of determining if a device is a CRT is to check that the variable IOST starts with the string "C-". (e.g., I $E(IOST,1,2)="C-")
2.11.8 Developers are encouraged to include other descriptive information on the third piece of the 0 node of the XTMP global, such as task description and creator DUZ.
2.11.9 The line body of a routine must contain at least 1 character. Generally a single semicolon is used to demarcate a blank line.
3. Interface Programming Standards and Conventions
It is the intention of this section of the Standards and Conventions to provide a consistent path for users as applications migrate from scrolling mode to a screen mode (either Screenman, List Manager, or screen oriented editors) to a GUI environment.
3.1 User Interface Standards for Scroll Mode and Screen Mode.
3.1.1 Deletion of a data value, if permissible, must be initiated by the user entering the at-sign "@".
3.1.2 All user-input READs which are in any way evaluated by the application must be escapable by entering a circumflex "^", which takes an action other than a reread.
3.1.3 All prompts requesting user input must provide additional help when the user enters a question mark ("?"). Any unrecognized or inappropriate response must be handled properly; i.e., at a minimum in a manner similar to the way VA FileMan handles responses (see VA FileMan User's Manual). Responses to READs that are in no way evaluated by the application are excluded from this requirement.
3.1.4 In scrolling mode, defaults must be so indicated with a double slash ("//") or "replace" indicating that "replace/with" editing is allowed. The null response (i.e., typing only the RETURN key) shall select the default.
3.1.5 When a user input READ command times out, if the argument of the read is in any way evaluated by the application, the program must return to the Menu Manager with no more than one intervening read. A timeout at the menu level must halt through H^XUS.
3.2 User Interface Conventions for Scroll Mode and Screen Mode.
3.2.1 Developers are encouraged to use the following terminology.
18.104.22.168 Exit - Exit ends a function or application and removes from the screen all windows and pop-ups associated with that function or application. If information has been changed, the application may automatically save the information, or prompt the user to save or discard the information.
22.214.171.124 Quit - Like Exit, Quit ends a function or application and removes from the screen all windows and pop-ups associated with that function or application. If information has been changed, the application may automatically discard the information, or prompt the user to save or discard the information.
126.96.36.199 Cancel - Cancel allows users to back out of a function or application, one pop-up at a time, until they reach the highest level window. At that point, another Cancel request has the same effect as an Exit action.
When users Cancel a pop-up, the application can decide whether to discard or retain the information in that pop-up, depending on how the application wants to establish the default values the next time the pop-up is displayed. If the information is discarded and the pop-up is later redisplayed, the pop-up contains the default values set by the application. If the information is retained and the pop-up is later re-displayed, the pop-up contains the same values as it did when the user canceled the pop-up.
188.8.131.52 Close - Synonymous with Cancel.
3.2.2 Developers are encouraged to use the following key assignments:
184.108.40.206 PF1 key - Gold. May result in different actions based on the next key selected.
220.127.116.11 PF2 key - Context-Sensitive Help. Provides context sensitive help about a specific item, field, or window.
18.104.22.168 PF3 key - Exit. Exit is defined in 22.214.171.124 above.
126.96.36.199 PF4 key - Backtab. Moves the cursor to the previous entry field. The cursor moves from right to left, bottom to top.
188.8.131.52 F10 key - Menu Bar. Moves the cursor to the menu bar, if one is available, at the top of the window or pop-up currently in focus.
184.108.40.206 F12 key - Cancel. Cancel is defined in 220.127.116.11 above.
18.104.22.168 TAB key - Tab. Moves the cursor to the next entry field. The cursor moves from left-to-right, top-to-bottom.
22.214.171.124 PF1,H key sequence - Application Help. Provides information about the particular segment of the application being used.
3.2.3 If a user is waiting for a lock which times out, then appropriate notification should be given to the user.
3.3 User Interface Conventions for GUI Mode.
3.3.1 DHCP packages should follow the guidelines for GUI applications set forward in the DHCP GUI Standards document approved by Software Services.
1. Use $TEXT to check for line label in routine:
Lines referenced by $TEXT for use other than to check for the existence of the routine must be in the following format: (LABEL-optional)<ls>;;text or M code.
NEW WORDING (changes highlighted):
Lines referenced by $TEXT for use other than to check for the existence of a routine or a line label in that routine must be in the following format: (LABEL-optional)<ls>;;text or M code.
2. Variable names are limited to 8 characters
Lowercase characters in local variable names are prohibited.
Local variable names may not exceed eight characters and may not contain lowercase characters.
Search | Home | MUMPS | Fileman | Kernel | C/S, Mailman, Web | Programmer Tools | Applications