Release notes for ACUCOBOL-85, version 2.3.2 ============================================ *** AcuServer Support / Relinking the Runtime *** By default, most Unix versions of the runtime support the new Acucobol product, AcuServer. There is also a MS-DOS version of the runtime that contains AcuServer support (this is a special-order version). AcuServer provides a client/server implementation of COBOL Indexed (Vision), Relative and Sequential file handling. The server support is provided by AcuServer, which is purchased separately. ACUCOBOL-85 runtimes provide the client-side support. The client-side support depends on some third-party libraries to implement RPC (Remote Procedure Calls). These RPC libraries need not be present on your system to use the runtime as an AcuServer client, but you do need them to relink the runtime for use with AcuServer. To accommodate those sites which do not have these libraries installed, the default relinking process now causes the support for AcuServer to be removed from the runtime. (For instructions on relinking the runtime to include AcuServer support, please see the AcuServer documentation.) There is an additional file included with those versions of the ACUCOBOL-85 runtime which might be used as an AcuServer client. This file is used in the relinking process. It suppresses AcuServer support. The new file is: Version File Referenced in ===================================================== All Unix clntstub.o Makefile MS-DOS (non-extended) CLNTSTUB.OBJ RUNCBL.LNK If you plan to relink the runtime, you should insure that this file is installed in the same directory as the other files used in relinking the runtime. *** Hiding a Screen Field *** In ACUCOBOL-85, you can "hide" a screen field by assigning the same color to the foreground and background of the field. In versions prior to 2.3.1, this technique only works on color terminals. On monochrome terminals, the runtime's logic that mapped colors to black-and-white would insure that the resulting field was always visible. This would prevent you from hiding a field on monochrome stations with this technique. Starting with version 2.3.1, if the colors specified by the program for both the foreground and the background are the same, then the resulting display will be hidden, even on monochrome stations. If the colors specified are different, then the runtime's existing logic for making monochrome fields visible will still apply. Thus, fields that you intend to hide will be hidden while other fields will not be washed-out if you run a color program on a monochrome station. *** 256-color Bitmaps under Windows *** The W$BITMAP routine now automatically supports the use of bitmap "palettes" when their use is required. This means that you can now display 256-color bitmaps accurately on Super VGA devices (or other 256-color displays). You do not need to code anything special to use this, the support happens automatically when needed. *** Windows Shutdown *** When running in "safe" mode, the Windows runtime will not allow the user to end the Windows session without first terminating the runtime's application. This allows your program to control the shutdown process and insure that the user ends Windows when it is safe to do so. This feature is active when you use the "-s" runtime option or set the configuration option QUIT-MODE to a negative value (see the manual for a discussion about "-s" and QUIT-MODE). The effect is that the user will only be able to end the Windows session if they could also terminate the runtime by using the "Close" menu item. When the user attempts to end the Windows session when it is not allowed, a message box will pop-up telling the user to terminate the application first. The default text of the message is "Please end this application first". You may change the message by using the "TEXT" configuration option. This message is message number "18". For more information, see the "TEXT" configuration option in the manual. *** Level 01 and 77 Tables *** The ANSI requirement that an OCCURS clause may not be specified on level 01 or 77 data items has been dropped. This allows you to create a table without specifying a parent group item to hold the table. *** Data Items Larger than 64 Kbytes *** Starting with version 2.3.1, you may now make any group item or alphanumeric data item larger than 64 KBytes in large-model programs. The previous restriction that such items had to be level 01 or 77 has been lifted. Because of restrictions in the runtime system, the compiler will not allow you to apply a subscript to a data item larger than 64 KBytes. The practical effect of this is that you cannot have any table elements larger than 64 KBytes. Note that the entire table may be larger than 64 KBytes - you are only restricted in the size of the individual elements. *** C$JUSTIFY Library Routine *** Version 2.3.1 contains a new library routine, C$JUSTIFY. This routine will perform left or right justification of data, along with centering. This routine has the following profile: Usage: CALL "C$JUSTIFY" USING DATA-ITEM, JUSTIFY-TYPE Parameters: DATA-ITEM Any data item Contains the data to justify. JUSTIFY-TYPE Optional - the literal value "L", "R" or "C". This indicates the type of justification desired. "L" - left justify, "R" - right justify, "C" - center If omitted, then "R" is implied. This routine removes all leading and trailing spaces from DATA-ITEM and justifies the remaining data as indicated by JUSTIFY-TYPE. The resulting string is returned in DATA-ITEM. When centering, there will be one more space on the right than on the left if an odd number of spaces is used. *** MS-DOS Screen Output Handling *** Normally, the ACUCOBOL-85 runtime system for MS-DOS displays its screen output by directly accessing the video hardware. This is very efficient. For some cases, however, you may wish to have the runtime perform its screen output by calling the BIOS instead. This is useful in cases where you wish to "trap" the output with some program that can examine the calls to the BIOS. Starting with version 2.3.1, you can have the runtime use the machine's BIOS instead of directly accessing the video hardware. This is controlled by the new configuration variable "DOS-OUTPUT-METHOD". You may set this variable to the following values: Name Numeric Value Method =========================================================== HARDWARE 0 Direct video access BIOS 1 Write via BIOS calls For example, to write to the screen using BIOS calls, you could add the following line to your configuration file: DOS-OUTPUT-METHOD = BIOS You may change the output method dynamically during runtime by using the SET ENVIRONMENT verb. Note that using the BIOS is usually slower. If you set the CODE-SYSTEM environment variable to anything other than ASCII (value 0), then the BIOS method will automatically be used. This insures that double-byte character sets are handled correctly. *** Runtime Version Identified in Trace *** When you use the "-l" runtime option to debug the configuration file, you will now receive the runtime's version number as the first line of output. Use this to verify that you are running the proper version of the runtime system. *** Relaxed COBOL structure rules *** The following division and section headers are now treated as optional by the compiler. You may include them or exclude them as you desire - they do not affect the meaning of the program: IDENTIFICATION DIVISION ENVIRONMENT DIVISION DATA DIVISION CONFIGURATION SECTION INPUT-OUTPUT SECTION The compiler determines which division and/or section it is processing by other COBOL syntax. Also, except for switch declarations, the phrases that belong in SPECIAL-NAMES may be listed in any order. Switch declarations must come first, and alphabets must be defined before they are referenced in SYMBOLIC CHARACTER phrases. Also, an alphabet declaration must include the optional word "ALPHABET" if it appears immediately after a SYMBOLIC CHARACTERS declaration. Beyond that, the format of SPECIAL-NAMES is no longer fixed. *** MAX-ERROR-LINES configuration variable *** Version 2.3.1 contains a new configuration variable, MAX-ERROR-LINES, which allows the user to limit the size of the error file. This is especially useful when using the file trace function of the debugger. When the size of the error file reaches the number of lines specified by the value of this variable, the error file is "rewound" to its beginning, and subsequent output overwrites the existing contents of the error file. To help locate the end of the error file, the message "*** End of log ***" is output when the runtime shuts down. In addition, line numbers are output in the first seven columns of each line of the error file. The default value of this variable is "0" which effectively turns off the enhancement. This enhancement is not provided on the VMS version of ACUCOBOL-85. *** EXIT statement handling *** The compiler now warns you if you place additional statements after an EXIT statement. An EXIT statement should be the only statement in a paragraph. *** Additional W$MENU Operation *** There is one additional W$MENU operation that is not documented in the manual. This operation is called WMENU_REFRESH (opcode 20). Use it to redraw an existing menu. Usually, you would do this to restore a menu that has been overwritten by some external piece of software. For example, you might call the SYSTEM library routine to display the current directory. The directory listing can overwrite the menu. Use WMENU_REFRESH to redraw the menu when you are ready to see it again. For example, the following code fragment will list the files in the current directory on a UNIX machine and then restore the menu after the user presses enter: * Prevent the user from activating the menu CALL "W$MENU" USING WMENU-BLOCK * List the current files and wait for the user CALL "SYSTEM" USING "ls" DISPLAY "Listing complete, press enter: ", NO ADVANCING ACCEPT OMITTED * Redisplay the menu and turn it back on CALL "W$MENU" USING WMENU-REFRESH CALL "W$MENU" USING WMENU-UNBLOCK *** Performance under DEC OSF/1 AXP *** The operating system does not buffer disk writes by default. This results in file update times that are much slower than usual for Unix machines. To increase performance for write operations you need to modify the system kernal parameter called "delay_wbuffers". To do so, enter the following commands: dbx -k /vmunix (dbx) assign delay_wbuffers=1 (dbx) patch delay_wbuffers=1 (dbx) q