Chapter 3: Migrating from 16-bit

If you have come to Net Express from the 16-bit system Object COBOL V3.4 or Workbench V3.4, or you should be aware of the following issues arising from the move to 32-bit.

For advice on moving from 16-bit Dialog System V2.5, see the online book Dialog System Guide.

Description of Features

Features are listed alphabetically. If a feature isn't mentioned, we believe no change is needed.

List of Features

PC_WIN... Printer Routines

Library routines to handle a printer.

These are not in Net Express. You should change your code to call the equivalent portable routines that have the prefix PC_PRINTER.

Call-by-Number Routine - x"91" Function 69

Library routine to scan a directory.

On 32-bit Windows, a parameter of "*" doesn't pick up any filename with an extension, whereas on 16-bit Windows it does.

Note: This routine has been deprecated in Net Express 4.0 onwards: it is provided for backward compatibility only. You should instead use the CBL_DIR_SCAN routines.

Call-by-Number Routine - x"d0"

Library routine to allocate memory.

The call-by-number routine x"d0" is superseded by the CBL_ALLOC_MEM routine, which you should use for preference.

Memory allocated using the call-by-number routine x"d0" is always initialized to spaces in this product. In the 16-bit COBOL systems, if the DEFAULT-BYTE directive is used to set the default filler byte to a value other than the default (spaces), x"d0" memory is initialized to that new value. Although not documented behavior, your program might be relying on this. Ensure that you explicitly initialize any x"d0" data, rather than relying on what the run-time system has initialized it to.

Call-by-Name Routine - CBL_CHANGE_DIR

Library routine for changing the current directory.

On 32-bit Windows, if you include a drive-name in the directory specification, the current drive is also changed. On 16-bit Windows, the current drive is always left unchanged.

Call-by-Name Routines for Handling Virtual Colormaps

16-bit:

The following three call-by-name routines are available only on 16-bit COBOL systems:

CBL_SCR_CREATE_VC Create an alternative colormap
CBL_SCR_ALLOCATE_VC_COLOR Store colors in the virtual colormap
CBL_SCR_DESTROY_VC Reinstate the system colormap
CCI filenames

CCI user-level filenames are different for 32-bit. They are as follows:

where xx represents the protocol supported, and is one of the following:

TC TCP/IP (CCITCP)
NB NetBEUI (CCINETB)
IX Novell IPX (CCIIPX)
DE Dynamic Data Exchange (CCIDDE)

In all environments where CCITP process registration demons are available this module is provided as ccitcp2.exe.

Compiler Directives

The following directives are not available. You should remove them from your code for Net Express.

  • 01SHUFFLE
  • 64KPARA
  • 64KSECT
  • AUXOPT
  • CHIP
  • DATALIT
  • EANIM
  • EXPANDDATA
  • FIXING
  • FLAG-CHIP
  • MASM
  • MODEL
  • OPTSIZE
  • OPTSPEED
  • PARAS
  • PROTMODE
  • REGPARM
  • SEGCROSS
  • SEGSIZE
  • SIGNCOMPARE
  • SMALLDD
  • TABLESEGCROSS
  • TARGET
  • TRICKLE
  • TRICKLECHECK

The directive GNT is used to create .gnt code. The 16-bit directive OMF"GNT" is also supported and has the same effect.

The ASMLIST directive is supported but behaves differently.

Litlinked Calls

Calls that are coded using the "__" (double-underscore) prefix should be recoded to use call convention 8. We strongly recommend this method for forcing a litlinked call. If you need to litlink calls using the double underscore convention, then you should compile the program using the LITLINK(2) Compiler directive.

You can statically link individual calls by using call convention 8. Using this call convention on a CALL literal statement causes the Compiler to declare the literal as an external symbol, so it is resolved at link time, rather than at run time. This call convention can be combined with other call conventions. For example, call convention 10 gives a static linked call to a sub-program which removes the parameters from the stack.

Panels Version 2

3-D objects drawn using Panels Version 2 look smaller on Net Express than on 16-bit. Net Express uses the native Windows 3-D effects, instead of the public domain DLL used on 16-bit. On 16-bit, a 3-D sunken border is drawn around the outside of controls such as entry fields, list boxes and combo boxes. With the native effects, the border is drawn around the inside of the controls, so the resulting controls look smaller.

Run-time Configuration

In Net Express you can, in addition to run-time switches, also configure certain run-time behavior through the following run-time configurables:

Run-time Switches

The following run-time switches, which are available in the 16-bit COBOL systems, either are not available or have a different meaning in Net Express:

  • A*
  • B2*
  • C*
  • C1
  • C2
  • F1
  • G
  • I1
  • K1
  • K2
  • K3
  • L
  • L1
  • L2
  • L3
  • L4
  • L5
  • L6
  • M*
  • M2
  • P
  • P1
  • S2
  • S3
  • S6
  • /h
  • /s
  • /m
  • /p

* These switches have a different meaning in Net Express.

If your application is explicitly reading or setting any of these switches, you should remove these dependencies on them.

The win9x_shiftlock_fix run-time tunable is provided for backward compatibility only:

Specifies whether the run-time system includes a workaround for a Windows 98 problem where Caps Lock also acts as Shift Lock.

Syntax:
>>-----set win9x_shiftlock_fix=---.-TRUE-.-----><
                                  +-FALSE+
Parameters:
TRUE The run-time system ensures that Caps Lock does not act as Shift Lock
FALSE The run-time system does not ensure that Caps Lock does not act as Shift Lock
Properties:
Default: TRUE
IDE equivalent: None
Comments:

Caps Lock does not act as a Shift Lock provided certain entries are present in the Windows system files. If the entries are present the workaround indicated can be disabled to allow the operating system to handle the keystrokes. This avoids potential problems on keyboard layouts where the workaround has not been verified.

The required entries are as follows:

In config.sys:

DEVICE=<install-dir>\command\display.sys con=(ega,,1)

In autoexec.bat

mode con codepage prepare=((nnn) install-dir\COMMAND\ega.cpi) 
mode con codepage select=nnn 
keyb xx,,install-dir\COMMAND\keyboard.sys

where:


Copyright © 2009 Micro Focus (IP) Ltd. All rights reserved.