home *** CD-ROM | disk | FTP | other *** search
-
- CBL-CMPT.DOC File
-
- Compatibility with Previous Releases of Microsoft(R) COBOL
-
- (C) Copyright Microsoft Corporation, 1991
-
-
- Contents
- --------
- Introduction
- Changes in Microsoft COBOL 4.5
- Changes in Microsoft COBOL 4.0
- Documentation
-
-
- Introduction
- ------------
- This document is for use when maintaining applications created using
- earlier releases of this product.
-
- It describes the differences that may cause problems, and includes
- documentation of features no longer documented in this system, but
- maintained for compatibility.
-
- Note that the use of the compiler with default settings will cause the
- use of new words to become reserved. A list of these words is given
- below.
-
-
- Changes in Microsoft COBOL 4.5
- ------------------------------
- Compiling
-
- o Use of the MF directive when compiling will cause some data names
- to be illegal as the reserved word list has been extended. Change
- the dataname, use the REMOVE(reservedword) directive or recompile
- with MF(6).
-
- New reserved words included when using MF(7) are:
-
- ALPHABET ALPHABETIC-LOWER ALPHABETIC-UPPER
- ALPHANUMERIC ALPHANUMERIC-EDITED ANY
- BINARY CLASS COMMON
- COMP-1 COMP-2 COMP-4
- COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-4
- CONTENT CONTINUE CONVERTING
- CYCLE DAY-OF-WEEK DBCS
- DISPLAY-1 EJECT END-ADD
- END-CALL END-COMPUTE END-DELETE
- END-DISPLAY END-DIVIDE END-EVALUATE
- END-IF END-MULTIPLY END-PERFORM
- END-READ END-RECEIVE END-RETURN
- END-REWRITE END-SEARCH END-START
- END-STRING END-SUBTRACT END-UNSTRING
- END-WRITE EOL EOS
- EQUALS EVALUATE EXCEEDS
- FALSE FUNCTION GLOBAL
- ID INITIALIZE LOWLIGHT
- NUMERIC-EDITED ORDER OTHER
- PACKED-DECIMAL PADDING PARAGRAPH
- PURGE REFERENCE REPLACE
- SKIP1 SKIP2 SKIP3
- SORT-RETURN STANDARD-2 TEST
- TIME-OUT TIMEOUT TITLE
- TRUE UNEQUAL WAIT
- WHEN-COMPILED
-
- Note that most of these words are already reserved under the ANS85 or
- VSC2 directives, so will only become new if you are compiling with MF
- but without ANS85 or VSC2.
-
- o RM compatibility
-
- When compiling for RM compatibility, if the same behavior is required
- as with Microsoft COBOL 4.0 then you should compile with the
- DETECTLOCK directive.
-
- o ASSIGN TO PRINTER
-
- Files defined with ASSIGN TO PRINTER are treated as LINE ADVANCING in
- COBOL 4.5. In 4.0, they were treated as LINE SEQUENTIAL.
-
- o NEXT SENTENCE
-
- In COBOL 4.0, you could make NEXT SENTENCE jump to the appropriate
- end-scope delimiter by using the MF"5" directive (see below). In 4.5
- this directive does not have this effect.
-
- o Nested Programs
-
- In V4.0, nested programs could have Configuration Sections. In V4.5
- they cannot.
-
- o The "DISPLAY ... UPON CRT Attributes Behavior" switch S6 is no longer
- documented in the Operating Guide. Here is its description. With the
- Enhanced DISPLAY (see the Screen Handling chapter of the Language
- Reference Manual), if no attributes are specified on the DISPLAY then,
- by default, the attributes already existing in the given area will be
- used. If the switch +S6 is specified at run time the normal screen
- attributes will be used instead.
-
- o In earlier versions of this COBOL system all system library routines
- were call-by-number. Many of the call-by-name routines in the present
- product replace old call-by-number routines. The list below indicates,
- for each call-by-name routine that has replaced a call-by-number
- routine, the number of the routine it has replaced. In some cases the
- call-by-name routine has additional features.
-
- Name Number
- ---- ------
- CBL_READ_SCR_CHARS B7 0
- CBL_READ_SCR_ATTRS B7 2
- CBL_READ_SCR_CHATTRS B8 0
- CBL_WRITE_SCR_CHARS B7 1
- CBL_WRITE_SCR_ATTRS B7 3
- CBL_WRITE_SCR_CHATTRS B8 1
- CBL_WRITE_SCR_TTY 82
- CBL_WRITE_SCR_N_CHAR B7 4
- CBL_WRITE_SCR_N_ATTR B7 5
- CBL_SWAP_SCR_CHATTRS B8 2
- CBL_GET_SCR_SIZE E3
- CBL_SET_CSR_POS E6
- CBL_CLEAR_SCR E4
- CBL_GET_KBD_STATUS D9
- PC_READ_DRIVE 91 5
- PC_SET_DRIVE 91 6
- CBL_READ_DIR 91 7
- CBL_CHANGE_DIR 91 8
- CBL_DELETE_FILE 91 18
- CBL_RENAME_FILE 91 17
- PC_TEST_PRINTER B0 7
- CBL_SPLIT_FILENAME 8C
- CBL_JOIN_FILENAME 8D
-
- o The behavior of COPY ... REPLACING has been changed depending on the
- setting of the ANS85 or VSC2(3) directives. Previously all non-COBOL
- characters were disallowed in operands to COPY ... REPLACING, and
- lowercase and colon were added to the character set. This behavior now
- only occurs if the ANS85 or VSC2(3) directive is used. Otherwise, the
- operands may contain non-COBOL characters.
-
-
- Changes in Microsoft COBOL 4.0
- ------------------------------
- General
-
- o When installing on an OS/2 system, SETUP will add PATH and
- environment variable information to CONFIG.SYS and not to OS2INIT.CMD
- as in previous releases. This conforms with the standard for
- installing OS/2 v1.1 and later.
-
- o The files, DBCS.EXE/.DLL and V-ISAM.DLL are no longer required, and
- are not included with this release.
-
- o The shared run-time files, COBLIB.DLE and COBLIB.DLL are used by the
- components of this system, and must be loaded for the system to
- operate. COBLIB.DLE is required for DOS, COBLIB.DLL for OS/2.
-
- o The callable file handler interface is no longer part of this
- product. If you wish to use the CALLFH feature, or to call the file
- handler directly, you will require a copy of the Micro Focus COBOL/2
- Toolset.
-
- Compiling
-
- o The default directives, NOCOPYLBR, ANS85, NOOSVS and MF are now built
- into the compiler and are not included in the COBOL.DIR created by
- SETUP. ANS85 and OSVS can be changed by SETUP, so that NOANS85 and/or
- OSVS are included in the COBOL.DIR created by SETUP. SETUP also
- allows selection of SAA and the default linking libraries.
-
- o VSC2 is now equivalent to VSC2(3). Previously VSC2 was equivalent to
- VSC2(2). The directives VSC2 OLDVSC2 have been replaced by VSC2(1).
-
- o The directive OLDFILEIO has been replaced by the directive IDXFORMAT
- which defines the type of indexed file required. IDXFORMAT"2" is
- equivalent to OLDFILEIO.
-
- o The verb, GOBACK, and the special register, RETURN-CODE are now part
- of the standard Micro Focus(R) COBOL language and can be used without
- needing VSC2 or OSVS. They are enabled by an MF level of 5 or above
- (on by default) and can, therefore, be disabled by specifying MF(4).
-
- o Comments following the PROGRAM-ID, which were allowed in previous
- versions, are now not allowed by default. They can, however, be
- enabled using the PROGID-COMMENT directive.
-
- o For interfacing at the assembler level, note that the object segment
- class names created by the COBOL compiler have changed in this
- release.
-
- o The default ALPHASTART value has been set to 1 to conform to the
- ANSI'85 standard. In previous versions, this was set to 0. If you
- have programs that use the ALPHABET clause of the SPECIAL-NAMES
- paragraph, you may need to specify the directive ALPHASTART"0" to
- maintain the required behavior.
-
- o ACCEPT .. FROM DAY-OF-WEEK
-
- The statement
-
- ACCEPT data-item FROM DAY-OF-WEEK
-
- incorrectly returned the value 0 for Sunday. It now returns a value
- of 7, as documented.
-
- o COMP-5
-
- The default behavior of USAGE COMP-5 data items has been changed. In
- previous versions of the product, COMP-5 was treated in a similar
- fashion to signed COMP. It is now treated in a similar fashion to
- COMP-X, allowing it to be a true binary numeric item using machine
- specific byte ordering. This makes it a very efficient data type.
-
- If you use COMP-5 in existing programs, and depend on its sign
- handling, you should compile your programs with the COMP-5"1"
- directive.
-
- o NEXT SENTENCE
-
- NEXT SENTENCE is handled differently in this version of the product.
- In previous versions NEXT SENTENCE would cause control to move to the
- end of the sentence (i.e. following the next period) or to the
- statement following the next end-scope delimiter. In this version, it
- will always go to the end of the sentence, as defined by the ANSI'85
- standard.
-
- If your program uses NEXT SENTENCE and relies on the change of
- control being to the appropriate end-scope delimiter, you can use the
- MF"5" directive (but see above for V4.5). Alternatively, change the
- NEXT SENTENCE phrases to CONTINUE, which will have the desired
- effect.
-
- o SYMBOLIC CHARACTERS clause
-
- The default SYMBSTART value has been set to 1 to conform to the
- ANSI'85 standard. In previous versions, this was set to 0. If you
- have programs that use the SYMBOLIC CHARACTERS clause of the
- SPECIAL-NAMES paragraph, you may need to specify the directive
- SYMBSTART"0" to maintain the required behavior.
-
- o RECORDING MODE
-
- The RECORDING MODE phrase has been amended so that, when it is
- explicitly included in an FD, it overrides the RECORD clause in all
- cases, with RECORDING MODE F always causing a fixed format file to be
- created, and RECORDING MODE V a variable format file.
-
- If you require the original behavior, whereby RECORDING MODE is
- overridden by the RECORD clause, then use the MF"5" directive.
-
- Note that the RECMODE directive will not override the RECORD clause.
-
- o REPORT-WRITER reserved words
-
- The RW directive has been made obsolete by incorporating the REPORT-
- WRITER reserved words into the main dialects that support REPORT-
- WRITER. If you have a program that uses some REPORT-WRITER reserved
- words as data names, and used to be compiled with the NORW directive,
- then you need to replace the NORW directive by USE(NORW). This will
- cause the REPORT-WRITER reserved words to be removed from the
- reserved word list, making them available for use as data names.
-
- o INSPECT
-
- The handling of the LEADING phrase in INSPECT has been amended to
- make it conform to a recent interpretation of the ANSI'85 standard.
- For example, if data-stream contains "//AAA BBB OOO CCC", the
- statement
-
- INSPECT data-stream TALLYING count-field
- FOR LEADING "A" "\" " "O" "C"
-
- returned the value 5 in count-field in previous versions, but now
- returns the value 2. This is because the remaining characters in the
- LEADING phrase are considered to be ineligible once a match has been
- found on one of the characters.
-
- o COPY filenames
-
- Since this version now distinguishes between filenames with no
- extension, but with a trailing period, and those without a trailing
- period (treating the former as a specified extension of spaces),
- some COPY statements in existing programs may appear to stop
- working. If you want your copy files to have extension .CPY, but
- code them in your program with no extension, then you must be sure
- that the name does not have a trailing period. For example, change:
-
- COPY "mycopy.".
-
- to
-
- COPY "mycopy".
-
- Note that
-
- COPY mycopy.
-
- is treated as if it has no trailing period, and hence as in previous
- versions.
-
-
- Running
-
- o A large number of the run-time system subprogram calls, provided in
- earlier releases as call-by-number calls, have been replaced by named
- calls. In addition to making the calls easier to remember and use,
- the call-by-name calls can accept parameters defined in any part of
- the data division.
-
- The replaced call-by-number calls are still supported in this
- release, and documented below. However, we recommend that you
- replace them with the equivalent call-by-name calls as appropriate.
-
- o Record sizes
-
- In previous releases, the maximum and minimum record sizes specified
- for a variable format file had to be the same in every program
- referencing the file. This restriction has been removed, allowing
- programs to specify record lengths different to those specified in
- the program used to create the file. However, if an attempt is made
- to write a record which is smaller than the smallest defined or
- larger than the largest defined a run-time error, 9/044, will be
- returned.
-
- Animating
-
- o The method required to animate programs has changed in this release.
- When a program is compiled for animation, using the ANIM directive,
- intermediate code files are packaged into .OBJ files and .DLL on
- OS/2). These .EXE/.DLL files can be animated in the usual way. The
- pure intermediate code files (.INT) are no longer required for
- animation.
-
- o Since the new animation method incorporates a link step, any non-
- COBOL .OBJ files can be linked in prior to animation. These will
- operate correctly when encountered, though always in zoom mode. This
- new technique makes IANIM and augmented INT obsolete, and these
- facilities are not supported in this release.
-
- The same method allows OS/2 API function calls to be resolved prior
- to animation, avoiding the need for the Install Function technology
- of earlier releases.
-
- o This release has the +F switch set by default. This will cause
- illegal data in numeric fields to be trapped during animation, and
- when running intermediate code .OBJ files (run-time system error
- 163). This may cause existing programs to fail where they previously
- worked. However, trapping such instances will help prevent the
- subsequently generated code from failing. All generated programs will
- work as at present, always assuming that numeric fields contain
- numeric data.
-
- Linking
-
- o The linking library, OS2.LIB, should be used instead of DOSCALLS.LIB
- when linking applications for use on OS/2(tm). OS2.LIB is supplied as
- part of the utilities. (DOSCALLS.LIB can be used provided the
- application is not a Presentation Manager application.)
-
- o The /NOP option is no longer required when linking for use on OS/2.
-
- o The default environment for applications created using this release
- is the shared run-time environment. This is particularly recommended
- for use on OS/2, where a single copy of COBLIB.DLL can be shared by
- any COBOL application (built to use COBLIB) running in any OS/2
- session.
-
- To use this environment, the application is linked in the usual way,
- using the libraries, COBLIB.LIB, and COBAPI.LIB or OS2.LIB depending
- on DOS or OS/2. The EXE files produced will be much smaller since
- little run-time system code is included directly. System programs,
- such as EXTFH and ADIS, can be linked in with the application, or
- linked as standalone sub-programs. Again, for OS/2, if linked as
- standalone .DLL files, they can be shared by any number of COBOL
- applications.
-
- Notes:
- - These system programs MUST be linked with COBLIB for use with
- COBLIB applications.
-
- - Modules linked with COBLIB cannot be mixed with modules linked
- with LCOBOL. Hence, applications must be either all LCOBOL or all
- COBLIB. However, COBLIB applications and LCOBOL applications can
- be run on the same environment as long as they don't try to call
- each other.
-
- o The linking library (.LIB) files supplied with the system have been
- split in a different way to enable reduced disk usage. They now
- consist of LCOBOL.LIB, COBLIB.LIB, and COBAPI.LIB. The new LCOBOL
- is equivalent to the old PCOBOL. The addition of COBAPI.LIB to
- LCOBOL.LIB gives the old LCOBOL. (Users may like to recombine these
- libraries using LIB if they wish to retain old working practices.)
- For OS/2 operation, LCOBOL.LIB is used in combination with OS2.LIB
- (which supersedes DOSCALLS.LIB).
-
- In the shared run-time system, the default, COBLIB.LIB, is equivalent
- to the old PRCOBOL.LIB. Again, either COBAPI.LIB or OS2.LIB is used
- in combination with COBLIB.LIB to complete the linking for DOS or
- OS/2 respectively. Applications linked with these libraries will be
- very much smaller, benefiting from the shared run-time system support
- in COBLIB.DLE and COBLIB.DLL. (Note that the application itself can
- be bound so that it will run on both DOS and OS/2 provided both
- shared run-time system files are present.)
-
- o If you select a linking environment other than the built-in default,
- SETUP will create a default LINKLIB in your COBOL.DIR. The default,
- and equivalent of earlier releases, is LINKLIB(LCOBOL+COBAPI). If
- you normally use the system on OS/2, use LINKLIB(LCOBOL+OS2). With
- this release, the default is to use the COBLIB shared run-time system,
- requiring LINKLIB(COBLIB+COBAPI) on DOS, and LINKLIB(COBLIB+OS2) on
- OS/2.
-
- When the default has been set in this way, you can still link for use
- in other environments by specifying the relevant libraries on the
- LINK command line. However, you should use the /NOD directive when
- doing so, otherwise link-time errors may occur.
-
- o The file handler for indexed files, IXSIO, has been replaced by the
- external file handler, EXTFH. This can be linked in exactly the same
- way as IXSIO in earlier releases, either linked in with the
- application or linked as a standalone system program.
-
- Programs referencing ANSI'85 EXTERNAL files and normal indexed files
- now only use EXTFH rather than two separate file handlers.
-
- Compatibility issues
-
- Compiling
-
- o If you compile your programs on OS/2 using batch files, you will need
- to alter the batch files to compile using the command COBOL instead
- of PCOBOL. Alternatively, you can copy COBOL.EXE to PCOBOL.EXE in the
- COBOL system directory.
-
- o Programs previously compiled without the ANS85 directive, if
- recompiled under this default system, may not work correctly. The
- most likely cause is that the new system has ANS85 on by default.
- This causes all file status codes to be ANS85 not ANS74 statuses.
- The problem can be avoided by using the NOANS85 directive when
- compiling any program that is designed to work with ANS74 file
- statuses.
-
- Animating
-
- o The compiler dictionary structure has been amended. This means that
- IDY files created by earlier releases will not be compatible with
- ANIMATOR in this system. Hence, you should recompile, with this
- release of the compiler, any program you wish to animate.
-
- Linking
-
- o .OBJ files created by this release are not compatible with .OBJ files
- created by earlier releases. Hence, if you need to rebuild an
- application where one of the OBJs has been created using this
- release, you must recompile all the programs with this release of the
- compiler before linking.
-
- Running
-
- o In previous versions of this software, an error is given when an
- indexed file is opened if the record lengths of the file do not
- exactly match those given in the FD. This has been changed so the
- error is only given if an attempt is made to WRITE a record larger
- than the maximum or smaller than the minimum.
-
- o The Report Writer module has been changed so that it is compatible
- with IBM(R) OS/VS COBOL when the OSVS directive is used. This is the
- ANSI'68 COBOL standard. In previous versions, the default with OSVS
- was ANSI'74 COBOL standard report writer. You may have report writer
- programs using OSVS features, but requiring ANSI'74 report writer
- compatibility. This mix is no longer possible, and you will either
- need to remove the OSVS features (try VSC2), or accept ANSI'68 COBOL
- report writer standard.
-
-
- Documentation
- -------------
- Call-by-number subprogram calls.
-
- Many of the COBOL system library routines provided in earlier releases as
- call-by-number have been replaced by call-by-name routines. We recommend
- that you replace all call-by-number routines by their equivalent call-by-
- name routines. See your Operating Guide chapter, COBOL System Library
- Routines, for details of which call-by-name routines replace these.
-
- To allow you to maintain existing applications, the documentation for the
- replaced call-by-number routines follows:
-
-
- PUT A CHARACTER TO THE SCREEN
-
- CALL X"82" USING character.
-
- where:
-
- character is a PIC X field containing the character to be put on the
- screen in the current cursor position.
-
- The cursor is then advanced one position to the right, or onto the next
- line if it is in the rightmost position, or off the screen if it is in
- the bottom right-hand corner.
-
-
- READ A CHARACTER FROM THE KEYBOARD
-
- CALL X"83" USING character.
-
- where:
-
- character is a PIC X field to contain the character returned.
-
- Notes: 1. A call on this subprogram also causes the function key table
- to be checked and the result byte updated.
-
- 2. If the character returned from this subprogram is a carriage-
- return character (hex 0D), then the character read from the
- keyboard has been recognized by the function key table, and
- the result byte of that table should be checked to determine
- the actual character which has been pressed.
-
- 3. If the character read is a 2-byte character (such as a
- function key) and it was not matched in the function key
- table, then both bytes are returned to this subprogram. The
- first call returns a null byte (hex 00) and the next call
- returns the scan code (refer to the IBM Personal Computer
- Technical Reference Manual for details of scan codes).
-
- 4. Break can be used to interrupt a running program. However,
- if the program was in the middle of a call to this subprogram
- at the time, nothing happens until the call on this
- subprogram is satisfied by reading another character from the
- keyboard. Break is not returned by this routine.
-
-
- SCREEN INPUT AND OUTPUT
-
- CALL X"B7" USING function, parameter, buffer
-
- where:
-
- function is a PIC 99 COMP-X data item and contains a value:
-
- 0 to read characters from the screen
- 1 to write characters to the screen
- 2 to read attributes from the screen
- 3 to write attributes to the screen
- 4 to clear characters from the screen
- 5 to clear attributes from the screen
-
-
- parameter is a group item consisting of three data items:
-
- o a PIC 9(4) COMP-X field showing the length of the data to be
- read or written.
-
- o a PIC 9(4) COMP-X field giving the start position on the screen.
- Top left is position 1, 81 is the start of the next line, etc.
-
- o a PIC 9(4) COMP-X field showing the start position in the buffer.
- The starting buffer position is 1.
-
- buffer is the COBOL data area. It is a PIC X(n) field and may be as
- large or small as you require to write your data.
-
- An entire screen of text or attributes is 2000 bytes. No check is made
- that any data to be read will fit into your buffer. Therefore, if the
- length specified is greater than the length available in your buffer, any
- subsequent data will be corrupted. Buffer is not used with a function of
- 4 or 5, but this parameter must still be supplied.
-
- Note: When writing or clearing characters, the User attribute is imposed
- on the character position, unless the User attribute flag is set
- off, in which case the current Screen attribute for that character
- position is used.
-
-
- SCREEN CELL INPUT AND OUTPUT
-
- CALL X"B8" using FUNCTION PARAMS CHARBUFF ATTRBUFF
-
- where parameters are:
-
- 01 FUNCTION PIC 9(2) COMP-X
-
- = 0 to read screen to character and attribute buffers
- = 1 to write screen from character and attribute buffers
- = 2 to swap screen with character and attribute buffers
-
- 01 PARAMS
- 03 P-LENGTH PIC 9(4) COMP-X.
- 03 P-SOFFSET PIC 9(4) COMP-X.
- 03 P-BOFFSET PIC 9(4) COMP-X.
-
- P-LENGTH = number of screen cells to read/write/swap
- P-SOFFSET = screen offset (1 = top left)
- P-BOFFSET = buffer offset (1 = start of buffer)
-
- 01 CHARBUFF
- 03 CHARS PIC X OCCURS n TIMES
-
- = an array of character bytes
-
- 01 ATTRBUFF
- 03 ATTRS PIC X OCCURS n TIMES
-
- = an array of associated attribute bytes
-
-
- TEST CONSOLE STATUS
-
- CALL X"D9" USING parameter.
-
- where:
-
- parameter is a PIC 99 COMP-X field and shows the status of the
- console:
-
- zero there is no character waiting to be read from the
- keyboard
-
- non-zero there is a character waiting to be read from the
- keyboard
-
- When a program is being animated in other than zoom mode, this function
- always returns a zero (i.e., it never detects a character), because
- ANIMATOR always looks for characters. However, the function operates
- correctly when zoom mode is used.
-
-
- GET SCREEN SIZE
-
- CALL X"E3" USING no-lines, no-cols.
-
- where:
-
- no-lines is a PIC 99 COMP-X field and shows the number of lines on
- the screen.
-
- no-cols is a PIC 99 COMP-X field and shows the number of columns on
- the screen.
-
-
- CLEAR SCREEN
-
- CALL X"E4".
-
- This routine clears the entire user screen.
-
-
- MOVE THE CURSOR TO A DEFINED POSITION
-
- CALL X"E6" USING result, parameter.
-
- where:
-
- result is a PIC 99 COMP-X field. It is not used.
-
- parameter is a group item consisting of two data items:
-
- o a PIC 99 COMP-X field specifying the row number for the cursor to
- be moved to; in the range 0 to 24.
-
- o a PIC 99 COMP-X field giving the column number for the cursor to
- be moved to; in the range 0 to 79.
-
-
- ==========================================================================
- Copyright (C) 1991 Microsoft Corporation
- Copyright (C) 1991 Micro Focus Ltd
-