dos_compilers/Microsoft COBOL v45/DOCS
2024-07-24 07:18:17 -07:00
..
CBL-CMPT.DOC Microsoft COBOL v4.5 2024-07-24 07:18:17 -07:00
OPTIMIZE.DOC Microsoft COBOL v4.5 2024-07-24 07:18:17 -07:00
PACKING.LST Microsoft COBOL v4.5 2024-07-24 07:18:17 -07:00
README.DOC Microsoft COBOL v4.5 2024-07-24 07:18:17 -07:00
TIMEOUT.DOC Microsoft COBOL v4.5 2024-07-24 07:18:17 -07:00

			     README.DOC File

		 Release Notes for the Microsoft(R) COBOL
		     Professional Development System
			       Version 4.5

		 (C) Copyright Microsoft Corporation, 1991

  This document contains essential information for version 4.5 of the
  Microsoft COBOL Professional Development System for MS-DOS(R) and the
  Microsoft Operating System/2 (MS(R) OS/2(R)). The information in this
  document is more up to date than that in the manuals.

  Microsoft improves its languages documentation at the time of reprinting,
  so some of the information in this file may already be included in your
  manuals.


  NEW FEATURES

   o  Support for Windows 3.0

      The following types of programs are supported under Windows 3.0 :

      - Existing DOS applications can be linked with a new runtime library
	(COBAPIDW) to produce an application that runs under Windows.

      - Programs that call the Windows API can now be written in 
	COBOL.  Note that if you do not have the Windows Software 
	Development Kit (SDK) and plan to create true COBOL Windows
	applications by calling the Windows API directly, you may be
	interested in using the Dialog Editor from the SDK.  The Dialog
	Editor is available through PSS by calling 637-7096.

      - Dynamic-link libraries that can be called from programs written
	in other programming languages can be written in COBOL.

   o  Intrinsic Functions

      The 1989 Addendum to the ANSI 85 COBOL Standard introduced a set of
      intrinsic functions.  These functions are fully supported in
      Microsoft COBOL 4.5. Functions are provided for Trigonometric,
      Financial, Statistical and String handling.

   o  Floating Point

      COMP-1 (32 bit Real) and COMP-2 (64 bit Real) data types have been
      added to this release of COBOL.  The syntax support is the same as
      defined for IBM OSVS COBOL and IBM VS COBOL II, and an Intel Floating
      Point Co-Processor will be used if available.

   o  Table Sort

      The SORT verb can now apply to a Data Division table, which will be
      sorted in place.

   o  EXIT PERFORM

      Control of program flow is enhanced with a new EXIT PERFORM statement.

   o  'IF 78-level DEFINED' syntax for conditional compilation

   o  Support for X/Open XPG3 COBOL definition

   o  Compilation up to 10% faster

   o  General performance improvements in generated code

   o  Save and Restore Environment enables you to save the break-points and
      monitors from one Animator session and reload them next time.

   o  Breakpoint when data value changes.

   o  Monitoring a subscripted item will follow a changing subscript.

   o  Data compression

      You can supply your own data compression routines, which can be
      tuned to the data that will be in the file.

   o  OS/2 Database Manager (SQL) enhancements

      Support for: qualified host variables; more than 100 host variables in
      one SQL statement; EXEC SQL WHENEVER SQLWARNING.

   o  Screens index program

      The Screens program will generate an index program which can be used
      for simple data entry applications.


  NEW DIRECTIVES

  These are the new compiler directives introduced in this product:

      ALIAS          Subscripts
      BROWSE         Create .SBR file
      CHECKDIV       Allow divide by zero
      DEFAULTCALLS   CALL convention
      DETECTLOCK     Detect record locks
      DLL            DLL or EXE
      FLAGAS         Show flags as errors etc.
      HIDEMESSAGE    Set message to hide
      INFORETURN     Info msg return value
      INTLEVEL       Portability level
      LOCKTYPE       Read locked records
      MF(7)          Micro Focus COBOL syntax
      SQLDB2         Mainframe compatibility
      SQLFORMAT      Define date format
      SQLPROT        Protect database
      WRITETHROUGH   Unbuffered writes
      XOPEN          X/Open


  THE COBOL SOFTWARE

  Compatibility with Previous Releases
  ====================================
  This product is generally compatible with previous releases, However,
  there are some differences. These are described in the ASCII text file,
  CBL-CMPT.DOC, supplied with this product. Before you use this product with
  programs created with earlier versions, we recommend that you read
  CBL-CMPT.DOC.


  Restrictions in the COBOL Software
  ==================================
   o  Cooperative Animation only allows 4 breakpoints to be set.

   o  In general, the components in this product support the High
      Performance File System complex filenames. However, the directory
      facility in some components will not work correctly when complex names
      are present. Also, names are restricted to a maximum of 65 characters.

   o  NODYNAM currently impacts both CALL literal and CALL identifier. To
      get mainframe-type link-edit, use NOLITLINK with DYNAM and LITLINK
      with NODYNAM when compiling to OBJ.

   o  The ANIMATOR Do command will not work with:

       -  the CHAIN verb when parameters are supplied
       -  CALL procedure-pointer
       -  CALL ....  BY VALUE
       -  CANCEL of nested program
       -  EXIT PERFORM/PARAGRAPH/SECTION
       -  intrinsic functions.

   o  The program-id of a called subprogram must be the same as the name
      used for the .OBJ file created by the compiler. Otherwise, a new copy
      will be loaded whenever the program is called.

   o  Under OS/2 you cannot redirect input to the compiler or Animator.

   o  On OS/2, any DLL that is to be loaded by the shared run-time that is
      not specified with a path must exist on a path given in the COBDIR
      environment variable, as well as on the OS/2 LIBPATH.

   o  EXTERNAL data items are limited to a maximum of 64K bytes each.

   o  The DISPLAY UPON PRINTER syntax does not work on OS/2.

   o  Any computation which has an intermediate result greater than 18
      digits may give an incorrect final result. This will affect arithmetic
      expressions such as those used in COMPUTE statements.

   o  Floating-point data is currently not supported in QuickWin applications.

   o  When interfacing with Microsoft C programs, the following C graphics
      library routines should not be called as this will corrupt the COBOL
      environment:

       -  _outtext
       -  _outmem
       -  _floodfill
       -  any routine that uses floodfill where you specify the
	  _GFILLINTERIOR option (namely _ellipse and _pie)

   o  You should not use cross-session animation on a network server since
      this can prevent cross-session animation operating on other machines
      on the network.

   o  You cannot have more than ten files in the USING or GIVING phrase of a
      MERGE statement.

   o  In VS COBOL II Releases 1 and 2, and OS/VS COBOL, the "PERFORM stack"
      is preserved between calls to a program. Thus, on re-entry to the
      program, the PERFORM state will be as it was when the program was last
      exited. This means that the code to return to the PERFORM statement
      which exists at the end of any piece of code that had been performed
      but had not exited when the program itself was exited will remain
      active, and may cause unexpected program flow when the program is
      re-entered.

      This COBOL behaves the same way as VS COBOL II Release 3 and
      initializes the PERFORM stack each time a program is called
      irrespective of the existence of the VSC2(1), VSC2(2) or OSVS
      directives.

   o  When interfacing with a C program, floating point items may only be
      passed as BY REFERENCE parameters, not as BY VALUE or BY CONTENT
      parameters.



  Restrictions in Related Software
  ================================

  Novell(R) network
  -----------------
   o  When sharing files across a Novell network, it is essential that all
      the workstations using the network are configured so that they do not
      use local buffering (CACHE DATA BUFFERING). Failure to do this may
      result in loss of data.

      Novell version 2.0A, and prior to 2.15 are all configured with local
      buffering on by default. To disable this buffering, in version 2.0A
      you require a patch from Novell. In other versions, insert the line:

	  CACHE BUFFERS = 0

      into the file SHELL.CFG on each workstation.

   o  Use of the NETBIOS option on a Novell network can cause loss of data
      on files shared across the network. (NETBIOS is activated by entering
      the NETBIOS command after connecting to the network. To avoid loss of
      data, do not use this command.)

   o  When creating multi-user programs to run on a Novell network, it is
      necessary to ensure that all disk mapping assignments are beyond E:.
      i.e. do not use assignments A: thru E:.



  DOCUMENTATION

  On-disk Documentation
  =====================
  The disks supplied with this product contain additional documentation.

  The following on-disk documents should be regarded as additional chapters,
  or additions to chapters, in your Operating Guide:

      MFCOMPAT.DOC  - Compatibility with Micro Focus COBOL
      OPTIMIZE.DOC  - Creating Optimized Programs
      TIMEOUT.DOC   - Timeout Support in ACCEPT


  Omissions and Errors
  ====================
  This section contains information that is either incorrect or missing from
  your Microsoft COBOL manuals. This information is organized according
  to the manual in which it appears. You may want to mark the changes in
  your manuals.


  Language Reference
  ------------------
  Page 5-24. There is an optional phrase within the WITH DUPLICATES phrase
  of the ALTERNATE RECORD KEY clause of the SELECT statement for an indexed
  file. Its syntax is:

      SUPPRESS  [WHEN]  { ZEROS         }
			{ SPACES        }
			{ [ALL] literal }

  SUPPRESS, ZEROS, SPACES, and ALL are all keywords.


  Page 5-32. Insert a new General Rule (13a) between rules 13 and 14:

  "If a file is defined as EXTERNAL and the operating system file name is
  assigned by means of a file name (for example, by use of either the
  DYNAMIC directive or keyword, using data-name-1 in the SELECT/ASSIGN
  statement, or using format 2 of the VALUE OF phrase of an FD), then the
  following rules should be followed:

    1) An identifier with the same name should be used to contain the
       physical file name in all programs which reference the file.

    2) Each definition of the identifier which contains the physical file
       name should also contain the EXTERNAL attribute.

  Any violation of these rules will not be detected at compile time.
  However, if any program in the run-unit violates these rules, the results
  at run time are unpredictable. That is, they may or may not execute as
  expected."


  Page 5-83. After General Rule 27, add:

  "28. The I-O phrase permits the opening of a file for both input and
  output operations (except for file with ORGANIZATION LINE SEQUENTIAL). If
  the file does not exist it will be created and used as an empty file for
  input unless NOT OPTIONAL was specified in the SELECT statement. An
  attempt to WRITE it will cause an error."

 
  Page 5-120. Add a new General Rule 13a:

  "The phrases ADVANCING PAGE and END-OF-PAGE must not both be specified in
  a single WRITE statement."


  Page 10-11, replace the entire second boxed extension with the following:

  "If a file is defined as EXTERNAL and the operating system file name is
  assigned by means of a file name (for example,  by use of either the
  DYNAMIC directive or keyword, using data-name-1 in the SELECT/ASSIGN
  statement, or using format 2 of the VALUE OF phrase of an FD), then the
  following rules should be followed:

    1) An identifier with the same name should be used to contain the
       physical file name in all programs which reference the file.

    2) Each definition of the identifier which contains the physical file
       name should also contain the EXTERNAL attribute.

  Any violation of these rules will not be detected at compile time.
  However, if any program in the run-unit violates these rules, the results
  at run time are unpredictable. That is, they may or may not execute as
  expected."


  Page 15-34, General Rule 4 of the FOREGROUND-COLOR clause. In the first
  sentence, change "contains a BACKGROUND-COLOR clause" to "contains a
  FOREGROUND-COLOR clause".


  Page 16-43, before the description of the ORD-MAX function insert a
  description of the ORD-MIN function. Its description is exactly the same
  as that of ORD-MAX, but replacing "ORD-MAX" by "ORD-MIN", "maximum" by
  "minimum" and "greatest" by "least" everywhere that they occur.


  Operating Guide
  ---------------

  General

      A number of the executable files are supplied with .PIF files for use
      with Microsoft Windows 3.0 or later. Using these .PIF files, the
      components of this system can be run as Windows applications, and can
      be added to a group for direct execution from Program Manager. From
      the DOS command line, these applications can be invoked using the
      command

       WIN prog.PIF

      where prog is the name of the relevant component.

  Chapter 9 (Packaging and Shipping Applications):

      There is a module RMSTAT.OBJ, which must be linked into your
      application if you want to get RM file statuses.

  Chapter 19 (SQL):

      There is no support for using COMP-1 items with SQL.

  Chapter 34 (Converting C Header Files with H2CPY)

      There is a utility called SPLIT78. It splits the constants file
      produced by H2CPY into several files.

      It uses the first set of characters before the first hyphen to name
      the files. For example, if OS2.78 contains:

	   78 ABB-COLOR                         VALUE H"01".
	   78 ABB-BACK-COLOR                    VALUE H"02".
	   78 ABB-MIX-MODE                      VALUE H"04".
	   78 ABB-BACK-MIX-MODE                 VALUE H"08".
	   78 ABB-SET                           VALUE H"10".
	   78 ABB-SYMBOL                        VALUE H"20".
	   78 ABB-REF-POINT                     VALUE H"40".

	   78 AF-CHAR                           VALUE H"01".
	   78 AF-VIRTUALKEY                     VALUE H"02".
	   78 AF-SCANCODE                       VALUE H"04".
	   78 AF-SHIFT                          VALUE H"08".
	   78 AF-CONTROL                        VALUE H"10".
	   78 AF-ALT                            VALUE H"20".
	   78 AF-LONEKEY                        VALUE H"40".
	   78 AF-SYSCOMMAND                     VALUE H"0100".
	   78 AF-HELP                           VALUE H"0200".

	   78 HWND-DESKTOP                      VALUE 1.
	   78 HWND-OBJECT                       VALUE 2.
	   78 HWND-TOP                          VALUE 3.
	   78 HWND-BOTTOM                       VALUE 4.
	   78 HWND-THREADCAPTURE                VALUE 5.
	   78 HWND-PARENT                       VALUE 0.

      then typing the command, "SPLIT78 OS2.78" will create 3 files:

		   ABB.78
		   AF.78
	    and    HWND.78

      The contents of OS2.78 will be unaffected. If any of the output files
      already exist they will be extended, so make sure your working
      directory contains no ".78" files other than the source file before
      you enter the command SPLIT78.

  Appendix B (Compiler Directives):

      The default for the directive CHECKDIV is NOCHECKDIV, not CHECKDIV as
      stated in the manuals.

      There is an additional directive FLAGCD. Its syntax is [NO] FLAGCD.
      When it is set, selecting flagging for the dialect SAA, ANS85, OSVS or
      VSC2 release 2 or 3 will not only flag syntax outside that dialect,
      but will also flag any directive settings that cause behavior
      incompatible with that dialect. The default is NOFLAGCD.

      There are two additional directives, HOST-NUMCOMPARE and ZWB which
      direct the results of comparing a numeric display field with SPACE,
      " " and "0". The directives are provided to ensure compatibility with
      mainframe COBOL operation. If NOHOST-NUMCOMPARE or ZWB are specified,
      the results of comparing are as now. If HOST-NUMCOMPARE and NOZWB are
      specified together, the results are the exact opposite. Hence, if
      PIC-9 contains spaces, the results of the comparison with SPACES, " "
      and "0" are:
				  PIC-9 = SPACE  PIC-9 = " "  PIC-9 = "0"
      NOZWB and HOST-NUMCOMPARE       TRUE           TRUE         FALSE
      ZWB or NOHOST-NUMCOMPARE        FALSE          FALSE        TRUE

      These results are the same independent of the setting of the F
      run-time switch.

      There is an additional generator directive SIGNCOMPARE. Its syntax is
      [NO] SIGNCOMPARE. When it is set in an EBCDIC program, it changes the
      way some numeric comparisons are performed so that, for example, an
      unsigned data item containing 1234 is equal to a signed data item
      containing +1234. This does, however, cause these comparisons to be much
      less efficient. The default is NOSIGNCOMPARE. If you are using an
      add-on product, note that the behavior in intermediate code is the
      same as you get in generated code with SIGNCOMPARE; thus with the
      default setting of this directive, the behavior in intermediate code
      and generated code is different.

      There is an error in the example given for STICKY-LINKAGE. The name
      of the data item referenced in the Procedure Division code should be
      HOURLY-RATE, not RATE.

      There is an additional directive ZEROLENGTHFALSE. Its syntax is
      [NO] ZEROLENGTHFALSE. When it is set, all class tests of zero length
      group items return false. Otherwise they all return true. The default
      is NOZEROLENGTHFALSE. For conformance to ANSI and SAA you must set
      ZEROLENGTHFALSE.

  Appendices C and D (COBOL System Library Routines)

      The following passage is relevant to both these appendices:

      The COBOL system library routines generally supply features that
      cannot be accessed using COBOL syntax, such as operating system
      functions. Under OS/2, many of the features can be accessed directly
      by calling the OS/2 API functions. However, this ties the program to
      OS/2, with DOS capability available only for those API calls which are
      part of the Family API, and only then when the program is bound.

      Parameters to the call-by-name routines can be defined anywhere
      provided they do not cross a segment boundary. (See the CHIP "16" and
      FLAG-CHIP compiler directives.) Parameters to the call-by-number
      routines must not be defined in the Linkage Section or Local-Storage
      Section of your program, and must be in the first 64K of the Data
      Division.


  Error Messages
  --------------

  Page 2-2. The reference to the E switch is only appropriate if you have
  the Toolset or Workbench add-on products. Consequently, the effect of the
  E switch is not documented in the Operating Guide as stated.


  Pocket Guide
  ------------

  Reserved Words List

      The words SECONDS is shown as a reserved word. This is incorrect.