Browse all forums dedicated to the Rocket® COBOL product family.
Recently active
Problem: If you are migrating from an Object COBOL Developer Suite (OCDS) v4.1 release to a Server Express v2.x release, then there are some points you should have keep mind. Resolution: Source Code from OCDS should compile cleanly with Server Express. So, you should only need to move over your source files, recompile, and re-link your application. However, as you can no longer link your application as a static executable, you might need to change how your application is built. The following describes some of the changes pertinent to those moving applications from OCDS to Server Express. Cob flags now obsolete in Server Express: There are some cob flags that are no longer supported with in the Server Express product. These are: Cob flag Description -B mode[=lib] Select the system linker binding mode B mode[=lib] Select the system linker binding mode and pass to system linker after COBOL libraries -F Create an RTS quickly F
Problem: Setting a external runtime switches that can be used within COBOL applications. Resolution: The COBOL program would be coded as follows: IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. switch-0 ON is test-switch-0 switch-1 ON is test-switch-1 switch-2 ON is test-switch-2. DATA DIVISION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. 100-process. &nbs
Problem: When migrating from Object COBOL Developer Suite to Server Express you may encounter a compilation error where there is a 77-level field with subordinate level entries. Eg 77 entry-field. 05 entry-field-1 pic x(10). 05 entry-field-2 pic 99. In some versions of Object COBOL this did not return a compilation error but will in all versions of Server Express. This form of entry is strictly not legal in COBOL. By definition a 77-level entry is a single level elementary field with no subordinate level entries. Resolution: Change the 77-level entry to a 01-entry. Eg 01 entry-field. 05 entry-field-1 pic x(10). 05 entry-field-2 pic 99. This will have no impact on the data field or any associated code. Old K
Problem: Using Informix File handler for Informix files instead of the Micro Focus file handler. Basically, the number of open files increases to a stage where some processes hangs and when it reaches the open file limit, it crashes. Common files are not closing, while all the other files are closed, which causes the number of open files to increase. eg: 1. Program 1 opens files A, B, C and D 2. Then Program 1 calls Program 2 which open files X, Y, A and B. 3. Program 2 finishes it process, close files X, Y, A and B and exit program. 4. Program 1 continues it's process, at this moment Files A and B are opened twice in the system. 5. When this happens several times, the number of files opened by a process exceed the limit and the program crashes with Informix error 24. Resolution: Try the following tunable: multi_close_limit Syntax: set
Problem: Compiler directive HOSTARITHMETIC guarantees decimal truncation on arithmetic overflow when ON SIZE ERROR is not specified. Does 9 1 = 0? If a data item can hold only one digit (PIC 9), and currently has the value 9, what should be the result of adding 1? If the resulting value of an arithmetic expression is larger than the maximum value the target item can store, then a "size error" condition exists. If the ON SIZE ERROR clause is present, then no value is stored in the target, and the imperative statement(s) in the clause are executed. If no ON SIZE ERROR clause is present, then the arithmetic results are undefined. This rule is documented in the ANSI standard, as well as in Micro Focus and IBM documentation. Thus, the result of the following code fragment is undefined, and it is a programmatic error to rely on any specific result: 01 num-ws pic 9 value
Problem: When Animating a program, a 191 error ('Terminal type not defined') error occurs when making a call to something like ADIS, even though the terminal type has been defined (by setting TERMINFO) Resolution: This error only occurs if a customer is using a different terminfo directory or has deleted some files from the Micro Focus provided one. When a process is being debugged by Animator, if the application then has to display a screen, there are of course two screens running; these are referred to as the 'Animator' and 'debuggee' screens. If they share the same terminal, then the TERM setting of the debuggee process is set to "mfdebug". The application will, therefore, search for an 'mfdebug' terminfo; if the m/ folder and/or the files below it cannot be found in the terminfo structure, this error will occur. Solution: if you are using a different terminfo, copy the m/ directory and its contents into it
Problem: Programs that accept data from command line return different results when run from cobrun or cobjrun. ex. cobrun proga parm1 With cobrun, 'parm1' is returned when doing an ACCEPT ws-var FROM COMMAND-LINE. with cobjrun, 'proga parm1' is returned instead. Resolution: This is the expected behavior...The problem is that when using cobrun, the command line is being passed directly to the COBOL run-time system. When using cobjrun, the command line is passed to the JAVA Virtual Machine. In this case, the JVM turns around and creates a new command line to invoke the COBOL run-time system. When using cobrun, argument 0 is the program name itself and your command line parameters start with argument 1 to argument n... When using cobjrun, argument 0 becomes the cobrun command inserted there by the JVM to invoke your COBOL program, argument 1 becomes the program name and your command line parameters start with argumen
Problem: When migrating from Object COBOL Developer Suite (OCDS) to Server Express, linking a Character Dialog program, some objects cannot be found. Like for example: DSC.o DSCOMP.o DSCRUN.o DSCVALRN.o DSDLGINI.o DSERRHAN.o DSFLD.o DSGETSS.o DSLCONV.o DSNLSRTN.o DSRUN.o DSTERM.o DSTRACER.o DSUSRCAL.o DSUXSYSP.o DSVRSCRN.o (These files were in $COBDIR/src/dialog under OCDS). Resolution: On Server Express these files are not needed (they are built into the runtime). All you have to do is to remove all references to those files, and to relink. Old KB# 7218
Problem: How to modify the default behaviour for LINE SEQUENTIAL files. Resolution: Various aspects of the File Handler's behaviour are configurable. You can alter the behaviour by setting various options in the File Handler configuration file (EXTFH). By Default the File Handler truncates trailing spaces from Line Sequential and Line Advancing Files. The behavior of truncating spaces can be altered by using the following File Handler option. STRIPSPACE When performing WRITE or REWRITE operations on line sequential or line advancing files, the STRIPSPACE option determines whether to remove trailing space characters. STRIPSPACE={ON|OFF} Default: ON Old KB# 7243#COBOL#RMCOBOL#AcuCobol#ServerExpress#netexpress
Problem: If you have installed Net Express 4.0 or Server Express 4.0 with the Enterprise Server option, then the CCITCP2 program will have been replaced by a trigger program that calls the Micro Focus Directory Server (MFDS) program. As far as CCI users are concerned, the Directory Server serves the same purpose as CCITCP2 and they behave in exactly the same way. Each machine that runs the Enterprise Server option must have the Directory Server program running on it. MFDS is a complete replacement for CCITCP2, is backwardly compatible with CCITCP2 and supports all the same command line options and syntax and all other functionality. Resolution: There are two types of servers controlled by the Directory Server Micro Focus Enterprise Server This is a server that provides an execution environment for COBOL programs running in response to service requests issued by several different client types. Micro Focus CCI Server This is a server that
Problem: Customer used to have the COBCAP environment variable, Now, however, the variable no longer exists. What can be used instead? Resolution: COBCAP was an old means of mapping external file names which was retained for backward compatibility. It was superseded (and its use was deprecated) about 10 years ago, and it was finally dropped from Server Express in 2001. COBCAP was replaced by the ASSIGN "EXTERNAL" directive (or the EXTERNAL reserved word in the ASSIGN clause of a SELECT statement), along with an environment variable or a configuration file to create the exact mapping of logical name onto physical name. For full details and examples of filename mapping and assignment, please refer to the Server Express File Handling Manual. Old KB# 7236
Problem: I/O error : file 'AS1S' error code: 9/220 (ANS74), pc=0, call=1, seg=0 220 Attempt to execute more than one SORT or MERGE simultaneously The problem is input procedure is working fine and is releasing all records, but while returning the records it is abending and is throwing the error as mentioned above. What could be the reason for this, since no other sort or merge statements are being executed? 006200 PROCESS-RECORDS. 006400 SORT AS1S-SORT-FILE 006500 ON ASCENDING KEY AS1S-SD-NO 006600 INPUT PROCEDURE IS 3100-INPUT-PROCEDURE 006700 OUTPUT PROCEDURE IS 3200-OUTPUT-PROCEDURE. <snip> 007700 3100-INPUT-PROCEDURE SECTION. 007800* 007900 MOVE 100 TO AS1S
Problem: A program encounters file status 9/007 (which means "disk space exhaused") on a record sequential file open for output. At the point of error, the file size is 512 bytes beyond 1 GB that is, 1073741312 bytes. Resolution: This file size limitation is not imposed by Micro Focus. It is probably imposed by the UNIX system. The default ulimit on AIX 5.2 is 2097151, as can be seen by entering the following command: ulimit This amount 2097151 is specified in units of 512-byte blocks. In bytes the value is 2097151 * 512 = 1073741312. That's one block short of exactly one gig. 2^30 = 1073741824 = 1 gig So, the default AIX ulimit is 1 GB even on 64-bit systems. This seems low by today's standards. This default 2097151 might even be the "hard" limit, and if so, root privi
Problem: After installing a new version of our COBOL compiler the breakpoints in Animator between starts of the anim. gets lost Resolution: This is normal behaviour with Server Express as per the documentation, in Server Express an aif file is not created if you use COBSW= A. To preserve the aif file you must use the COBAIFNAME environment variable. export COBAIFNAME=myprog Old KB# 7232
Problem: cobscan64 runs the Scan64 utility. The Scan64 utility enables you to check programs for pointer violations. You use Scan64 to help you migrate applications from 32-bit to 64-bit COBOL systems. If you have developed COBOL programs using the Server Express 32-bit development environment that you want to migrate to the Server Express 64-bit development enviroment, you should run Scan64 before compiling and running them with the 64-bit system development environment. Resolution: Note: Scan64 cannot detect invalidly-sized data items provided to prototyped CALL statements that require pointers. You can only use Scan64 on applications that have been compiled to intermediate code. The format of the command is: cobscan64 [-v] [-m] [-ttfile [-ltlist]] filename where the parameters are: -v Internal addressing information is displayed. This can be useful to our support  
Problem: In Server Express, when a record is read with lock and then within the same process another attempt is made to read the record the extended file status code 9/068 will be returned. This would typically happen where a program reads a record with lock, then calls another porgram and attempts to read the same record. In Object COBOL this lock is ignored and a file status of '00' is returned but in Server Express 9/068 is returned. This only happens if the access takes place within the one process. Normal record locking applies to both products for for records lockded in another process. Resolution: It may be that you want Server Express to behave the same as Object COBOL Developer Suite, particularly in the case of legacy applications where the activation of the record lock is not expected. To disable the record lock and have a file status of '00' returned on the read of a record that has previously been read with lock within th
Problem: You may encounter a File Status error 9/068 (record locked) on reads of records in an INDEXED file that you know are being read by other processes but you are certain are NOT being LOCKed. For example, assume several processes are all running the same program. The program has LOCK MODE MANUAL set in the SELECT clause. It opens the file I-O, sets the record pointer using START NOT LESS THAN and then READ's NEXT through the file with out any locking on the reads. Provided there is not a different program accessing that file there should NOT be any record locking take place, but it can. Resolution: Specify the NODETECTLOCK compiler directive. NOTE: This error does not occur if the file is opened INPUT This did not behave in this manner in Object COBOL Developer Suite The lock
Problem: Sometimes the user many want to use animator and faultfinder without the animator generating information files. Is this possible? If so, how? Resolution: If the compiler directive NOANIM is implemented the compiler will not create the animator information file (.idy) If Tte compiler directive NOANIM is used , the flag -g is useless Old KB# 7281
Problem: After migrating an application from VAX to Solaris UNIX and Server Express, one may notice that the last byte in some data items in his output files appeared differently than it did when the program was run on the VAX. Resolution: For numeric data items of usage DISPLAY, the sign is encoded in the last byte (unless the SIGN TRAILING SEPARATE clause is specified for the item). There are two popular conventions for encoding the sign in the last byte: the ASCII convention and the EBCDIC convention. Micro Focus uses the ASCII conventin by default, and apparently VAX COBOL uses the EBCDIC convention. The compiler directive named SIGN can be used to change Server Express's behavior in this regard. For compatibility with the VAX, the following option can be specified on the "cob" command used to compile the programs: -C SIGN=EBCDIC Old KB# 7221
Problem: On HP/UX the following command: : cobjrun -version Produces the following output: Error occurred during initialization of VM Unable to load native library: /opt/java1.3/jre/lib/PA_RISC/libjava.sl Resolution: The HP/UX environment should be set up as follows: 1.2.1.4 Environment Variable Settings for HP-UX This section lists example environment variable settings that enable COBOL/Java working on HP-UX platforms, using the default JVM which was selected when Server Express was installed. You will need to change the settings given below to specify the relevant directories on your system. export JH=/usr/java1.2 export COBDIR=server-express-directory export PATH=$JH/bin:$PATH export PATH=$COBDIR/bin:$PATH export SHLIB_PATH=$JH/jre/lib/PA_RISC:$JH/jre/lib/PA_RISC/hotspot: $JH/jre/lib/PA_RISC/native_threads:$COBDIR/lib:$SHLIB_PATH export CLASSPATH=$COBDIR/lib/mfcobol.jar:$JH/jre/lib/rt.jar:. export COBCPY=$COBDIR/cpylib ex
Problem: Customer saw references to both extsm and extsmlfs in the Knowledge Base and wanted to know what the difference was between them. Resolution: extsm is the 'default' module; extsmlfs module was first introduced with Object COBOL Developer System. With that product Micro Focus did not make large file support the default, and so we provided a second version of the external sort module which supported large files. See the extract from the Programmer's Guide to File Handling from OCDS 4.2: "10.1.3.1 Large Indexed Files By default, the file handler can handle files that are up to a maximum of 2 Gigabytes in size. However, if you need to create larger indexed files, you can use the IDXFORMAT Compiler directive to create IDXFORMAT"8" files. These files comprise a single file (as opposed to the usual .idx and .dat files). Even with IDXFORMAT"8" files, however, the COBOL run-time system currently imposes a limit on file size of 2 Gigabytes. To enable you to
Problem: Installing Server Express v2.2, gets message about AIX version saying 'product was built on AIX 4.3.3 but you are running AIX 5.2.0, please confirm you want to continue'. Should he continue? Resolution: Yes. This is normal and expected in this case, he was installing the 32-bit version of Server Express v2.2. Old KB# 7213
Problem: When software is delivered in binary form only, how can the COBOL version used to build the software be identified. Resolution: This is possible although identifying the point-release of a product would be very time consuming and only possible by Micro Focus technicians. Binaries built using Object COBOL can be differentiated from those built under Server Express by looking at the library dependencies. Use "ldd $binary_name" Binaries built under Object COBOL will have a dependency on libcobol, binaries built under Server Express will have a dependency on libcobrts. On AIX 4 use "dump -Hv $binary_name" 'ldd' lists dynamic dependencies of executable files or shared libraries. So, using ldd on 'demo' when it's been compiled with Server Express returns the following: Note that the 'grep' command is used to filter the output. ldd demo | grep l
Problem: The new HOSTARITHMETIC compiler directive available in Server Express can guarantee decimal truncation when ON SIZE ERROR is not specified. Resolution: Does 9 1 = 0? If a data item can hold only one digit (PIC 9), and currently has the value 9, what should be the result of adding 1? If the resulting value of an arithmetic expression is larger than the maximum value the target item can store, then a "size error" condition exists. If the ON SIZE ERROR clause is present, then no value is stored in the target, and the imperative statement(s) in the clause are executed. If no ON SIZE ERROR clause is present, then the arithmetic results are undefined. This rule is documented in the ANSI standard, as well as in Micro Focus and IBM documentation. Thus, the result of the following code fragment is undefined, and it is a programming error to rely on any specific result: 01 num-ws pic 9 value 9. add
Problem: The behaviour of VARCHAR2 host variables have changed in Pro*COBOL v8.0 You have VARCHAR2 host variables defined as PIC X(n) and are having problems with tests/compares in your WHERE clause after upgrading your version of Oracle. Resolution: Oracle have a configuration option for Pro*COBOL to revert back to the old behaviour. In the $ORACLE_HOME/precomp/admin/pcbcfg.cfg file, add the following: PICX=VARCHAR2 From now on by default, PIC X(n) host variables will no longer have the trailing spaces truncated unless you have this configuration option. Old KB# 7280
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.