Browse all forums dedicated to the Rocket® COBOL product family.
Recently active
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: 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: Two programs use the same file . The first opens the file only to read , the second opens the file to read and write . Some times the second displays the file-status 9/65 , and the first program runs always fine Resolution: If the program uses the verb : OPEN INPUT FIC1 To share this file , it is necessary to put into the file of the configuration of the file handler ( extgh.cfg) the following line : OPENINPUTSHARED=ON Old KB# 7234#ServerExpress#netexpress#RMCOBOL#AcuCobol#COBOL
Problem: The Object COBOL Developer Suite (OCDS) manual states that if the HOST-NUMCOMPARE compiler directive is used it MUST have a value setting of 1 or 2. (e.g $set HOST-NUMCOMPARE"1"). What is not stated is that if no value is set (i.e. $set HOST-NUMCOMPARE) it assumes the same behaviour as if HOST-NUMCOMPARE"1" were set. The Server Express manual make no mention of the values 1 or 2 being required. It states that the allowable settings are either NOHOST-NUMCOMPARE (default) or HOST-NUMCOMPARE. However, the behaviour for the setting $set HOST-NUMCOMPARE (without 1 or 2 set) differs in that in Server Express it assumes the same behaviour as if NOHOST-NUMCOMPARE were set. Resolution: To get the same behaviour in Server Express as in Object COBOL Developer Suite for the setting: If you have the following set in Server Express: $set HOST-NUMCOMPARE you should try the setting: $set HOST-NUMCOMPARE"1" e
Problem: When using Rebuild, you may get the following error: Error during sort operation: 9/007 Resolution: The error code 9/007 is an extended file handler error code informing you that the disk space was exhausted during the build. Rebuild uses a series of temporary files during the process, the exact number of which is determined by the complexity of the index. The error you received is simply stating that you have run out of room on that particular drive. What you can do is use the TMPDIR environment variable to specify another location with sufficient space as the work area for temporary files. Old KB# 7237#RMCOBOL#AcuCobol#ServerExpress#netexpress#COBOL
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: When trying to link a program with Server Express on Solaris a number of messages are printed: ld: warning: global symbol '' has non-global binding: (file /opt/lib/cobol/lib/libcobrts.so value=LOCL); ld: warning: global symbol '' has non-global binding: (file /opt/lib/cobol/lib/libcobcrtn.so value=LOCL); ld: warning: global symbol '' has non-global binding: (file /opt/lib/cobol/lib/libcobmisc.so value=LOCL); Resolution: These warnings can be safely ignored. When Micro Focus creates libcobrts it is necessary to "hide" symbols. Solaris does not provide options to do this so the attributes of symbols are changed in the dynamic symbol table. The symbol names are NULL, hence the '' in the error message. Old KB# 7231
Problem: A customer encountered this error when trying to open a relative file. There was an open on an I/O relative file and then in a subsequent subprogram a further open on it which results in it being already locked hence the 9/065 (or 9A). The customer then pointed out that this worked without problems in OCDS so why not in Server Express? Resolution: File locking in OCDS did not take into account the fact that you might have two opens on the same file and so did not handle locks between the two opens. Under Server Express this is correctly handled. However, you can put the incorrect OCDS locking back in. For compatibility with OCDS you can use the same_proc_excl_detection tunable. same_proc_excl_detection The same_proc_excl_detection tunable has been superseded by the intra_process_record_locking tunable. However, it can still be used for backward compatibility purposes. Note that we recommend that you
Problem: AIX customer upgraded to Server Express 4.0 and got this error when running a CICS application. The actual error is caused by a STRING...DELIMITED BY <literal> statement. This does not happen when the program is compiled to .int, only .gnt and executable. Resolution: A STRING statement is optimised to use the system commands memmove, memcmp and memcpy. However these are not picked up automatically in Server Express 4.0 and 4.0 SP1. The solution is to add entries in the liblist for executable programs (which Micro Focus did in SP1) and to rebuild the runtime, adding the appropriate programs with the -I (upper case letter between 'H' and 'J'), e.g. -I memmove -I memcpy -I memcmp. Unfortunately this isn't the whole story! As CICS works by demanding that everything is compiled into it, you also need to edit the cicsmkcobol script and run it. This rebuilds CICS and the Micro Focus runtime so that they work together. Micro Focus ca
Problem: Assembler messages: Error: Can't open Z for reading. Z: No such file or directory Z:0: Error: Can't open DA1.1 for reading. Z:0: DA1.1: No error cob32: error(s) in assembling /var/tmp/cobAAAa29655/ldtab.s Resolution: Check to see if you have the Operating System's ANSI C compiler and GCC compiler installed. The GCC compiler also installs its own assembler and will reference some of its own header files for C instead of using the Operating System's. So ensure that it uses the right assembler, the Operating System's assembler, either by un-installing the gcc components or ensure that the gcc components are at the end of PATH searches and that it looks for the Operating System's ANSI C compiler first. Old KB# 7214
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: It would be useful if there were a way for Micro Focus COBOL to retrieve the user-id from the UNIX operating system -- the same user-id that the UNIX "id" command would show. Resolution: Micro Focus COBOL can call C routines directly, if the C routines have been linked with the COBOL run-time system. A programmer would use the CALL statement, and put the name of the C routine in quotes. The UNIX system library "libc.a" (or "libc.so") has already been linked with the run-time system, so COBOL can directly call any of the UNIX system calls contained in "libc". On most platforms, the intro(2) man page shows a complete list of these calls. getuid(2) is a system call contained in "libc", so COBOL can call it directly. Consider the following program: 01 uid-ws pic 9(8) comp-5. &nb
Problem: Investigating 173 error on calls to COBOL callable shared objects (CSO) and third party products Resolution: The first thing to look at is to check that the third party product is 32-bit if you are using the 32-bit version of the COBOL product or 64-bit if you are using the 64-bit version of the COBOL product. If your application uses more than one third party product, cut it down to a version that only includes the third party product that is giving you problems. Once that is working you can start adding other products to your application. Check the third party documentation for libraries that have to be linked to your application. Sometimes your third party product provides 2 versions, one threaded and one non-threaded. Choose carefully the one that matches your application. If you are migrating from .int/.gnt code to callable shared objects, please notice that callable shared objects are executables to the OS and unlike .int or .gn
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: To determine the format of a Micro Focus executable file, use the Server Express cobfile command. The cobfile command is available in Server Express 2.0 and later. Resolution: This command checks for intermediate code files (.int files), generated code files (.gnt files) Animator information files (.idy files), and library files (.lbr files) produced on Server Express (32-bit and 64-bit) and OCDS Version 4.1 and later. It also checks for screen output recording files (.scn files, where n is a hexadeximal digit between 1 and F) and keystroke files (.key files). The cobfile command takes the following format: cobfile file [file] ... where file is the filename of a Micro Focus executable file. For example: cobfile myprog.int displays one of the following: myprog.int: Micro Focus 32-bit intermediate code file myprog.int: Micro Focus 64-bit intermediate code file If the cobfile command does not recognise a a file
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: 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: 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: Micro Focus run time system error 114 - attempt to access item beyond the bounds of memory - can be one of the most difficult problems to troubleshoot. However, there are only a few common reasons for the error and Server Express offers more debugging options than previous Micro Focus products. Occasionally, the problem will be obscure and difficult to find, but those instances are relatively rare. This article will discuss how to approach diagnosing RTS 114 errors within the Server Express and Application Server environment. Resolution: The most common reason for RTS 114 errors reported on UNIX systems came into being with the ability to create and use callable shared objects. On hardware which has the capability, Server Express can compile your COBOL source to either 32 bit or 64 bit code. However, the UNIX operating system cannot handle a mixture of 32 and 64 bit code in the same application. Whe
Problem: BAD MAGIC NUMBER WITH C PGM INCLUDING COBOL Resolution: There is no way to mix 32-bit and 64-bit objects in the same executable. Using the -q64 option of "cc" invariably creates 64-bit objects, but this COBOL product application consists of 32-bit objects, and the two object types cannot be linked. Old KB# 7181
Problem: The Net Express project file (.APP) is several MBytes large. Is there a possibility to get it smaller? Resolution: The Project file (.APP) is formatted as an ISAM IDXFORMAT"8"-file. Therefore, the Net Express ISAM-rebuild command-line can be used: REBUILD.EXE INFILE.APP, OUTFILE.APP to delete unused records from the APP-file within. Old KB# 7145#RMCOBOL#COBOL#AcuCobol#netexpress#ServerExpress
Problem: Why must a person be logged in as root in order to install Server Express? Resolution: When the user is prompted where to install the Server Express product (and could answer any arbitrary directory), the install script must have the power (permissions) to create that directory anywhere on the machine. The same idea applies to the creation/installation of the "drivers". The install script must be able to create new (or modify existing) license systems, for both development and Application Server licenses. The license systems must be owned and administered by root, because they are critical (common users must not have permission to disturb them). The install script must be able to modify the system file /etc/inittab, and to create a file in the system directory /etc, in order to set up the "auto-start at boot time" feature of the License Manager. The files in $COBDIR (the COBOL system files) are
Problem: You can create the same behaviour as using a @mylist.lnk with Net Express with Server Express by using a cat command as part of your cob command. The cob command includes a 'cat filename' where filename contains a list of files to be submitted to the cob command, seperated by spaces. Resolution: echo tictac.cbl > list.lnk You can then submit tictac.cbl to the cob command by simply typing cob 'cat list.lnk' tictac.cbl gets compiled. So if you have a file which contains a list of files to be submitted to the cob command you could use this method. NB. the cat command needs to be contained between backquotes. Old KB# 7191
Problem: Is c-isam a specific or generic file type? Resolution: Release: 2.0 C-isam is a specific proprietary file organization from Informix. Micro Focus products interface with this file type in its elementary version. Old KB# 7155
Problem: How to specify SIGN=EBCDIC in cobopt Resolution: insert line containing: -C sign=ebcdic in the cobopt file using text editor of your choice Old KB# 7159
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.