Browse all forums dedicated to the Rocket® COBOL product family.
Recently active
This article aims to aid in the improvement of performance when accessing indexed files. Problem: This purpose of the configuration option INDEXCOUNT is to aid in the improvement of performance when accessing indexed files. Resolution: The default value for INDEXCOUNT should be suitable for most files. However, for files where the depth of the tree is greater than 4 or where there are a number of alternate keys defined for the file, increasing INDEXCOUNT can dramatically improve performance. The information required to make this calculation can be gained by using the rebuild tool to validate the file (rebuild -f filename). A general guide to setting INDEXCOUNT is as follows: INDEXCOUNT = (Tree Depth * No Keys) No Keys This parameter is put in the External File Handler configuration file pointed to by the EXTFH environment variable. See the File Handler documentation for specific instructions for using the Externa
This article explains what happens when COBDIR/aslmf/apptrack option 6 is entered. Problem:Using AppTrack to reinitialize the COBOL AppServer with option 6, are there some files being overwritten or created? If so, what file(s) get updated or created when COBDIR/aslmf/apptrack option 6 is entered? Resolution: No files are reinitialized by $COBDIR/aslmf/apptrack option 6. Instead, the shared memory segments that are used by AppTrack are reinitialized based on the database/var/mfaslmf/mfasdb To view the memory seqments used by AppTrack use 'ipcs -mob'. Look at the shared memory segments that are 6 bytes in size. These are aslmf segments (they will have segment keys commencing 0x741cc1... ) The NATTCH column shows how many processes are holding are holding aslmf licenses. Each attach represents one license unit. These segments are reinitialized automatically when you add or remove a license. Old KB# 14018#COBOL#ServerExpress#Licensing#netexpress
This article explains a simplified test case resulting in the 154 PERFORM nested too deeply error message. Problem: We received the following error when the program was compiled to .gnt or .so or .exe (not .int), and then only when the PROFILE compiler directive was used. Execution error : file 'b' error code: 154, pc=0, call=1, seg=0 154 PERFORM nested too deeply Following is a simplified test case: 000001 WORKING-STORAGE SECTION. 000002 01 WS98-COUNT PIC S9(4) COMP VALUE 0 SYNC. 000003 000004 PROCEDURE DIVISION. 000005 A-MAIN SECTION. 000006 A-00. 000007 PERFORM B-HANDLE-INSERT-MODE. 000008 PERFORM Z-FINISH. 000009 000010 B-HANDLE-INSERT-MODE SECTION. 000011 PERFORM 500 TIMES 000012 PERFORM F-GET-NEXT-ACCOUNT 000013 END-PERFORM. 000014 DISPLAY "F-EXIT 1 -- " WS98-COUNT. 000015 display " End 1st Loop ". 000016 PERFORM 500 TIMES 000017 PERFORM F-GET-NEXT-ACCOUNT 000018 E
This article explains what to do when AppTrack's option 7 Current Users shows up blank but shows details in option 2 License Summary. Problem: AppTrack's option 7 Current Users shows blank even though application programs are currently running and option 2 License Summary shows current users in the "in use" column. Resolution: The first thing to check is whether a file named "apptrack.log" exists in /var/mfaslmf and has general write permissions. The AppTrack option 7 will not work unless this file exists. The file can be empty and could be created with: touch /var/mfaslmf/apptrack.log If the problem still occurs even when "apptrack.log" exists in /var/mfaslmf and has general write permissions, the problem can be resolved by rebooting the machine, which re-initializes shared memory (the ASLMF system uses shared memory for license tracking, and this problem could occur when shared memory becomes corrupted). Old KB# 13984#ServerExpress#Licensing#netexpress#COBO
This article explains what to do if an incompatible version of the system assembler is invoked. Problem: We are receiving a 114 error when running an executable build using the cob command. A truss trace of executable shows the error Incurred fault #6 FLTBOUNDS and the failing executable is a custom created version of the run time system: cob -e "" -x -o ./myrts This error occurs because an incompatible version of the the system assembler is being invoked. To ensure that the correct version of the 'as' command is being used, look at the file $COBDIR/docs/env.txt. In this file the expected assembler version is specified along with the command that can be used to get the version information. Compare the assembler version information on the failing system with the version identified in $COBDIR/docs/env.txt. In some cases there is more than one 'as' command on your system, therefore it is important to place the directory name for t
This article explains how to remove a license from the Server Express development license database. Problem: How do you remove a license key from the Server Express development license database (LMF)? Resolution: To uninstall a Server Express development license, follow these steps: Change directory to the /opt/microfocus/mflmf directory. Note: Your mflmf may be in a different path Use the command ./mflmadm to start the License Management utility. Enter /2 to bring up the license entry screen. Put the serial number on the first line up to and including the "AI " Tab to the next line and enter the full license key. Note: The fields are not case sensitive and you may enter the spaces or not as you choose. Press /4 to un-install the license. Press /7 to refresh the license database. Press Esc then "y" to exit. Old KB# 14025#ServerExpress#COBOL#Licensing
This article explains how to create a multi-threaded runtime Problem: How does one create a multi-threaded runtime? Resolution: To create a multi-threaded runtime, include the -t flag when you build the RTS. For example, to create an RTS with an open entry point: cob -xvte "" -o MyThreadedRts Note: There is one already supplied with the product. Use cobrun_t progname to use it. Old KB# 13990
This article explains that compiler directive WRITETHROUGH / WRITETHRU is intended to write file records immediately upon running the application. Problem: When using Server Express 4.0 ServicePack 2 on RedHat ES 3, all programs are built as .gnt files and getting started via cobrun. Files to be used are defined as "line-sequential" and opened with "open extend with lock" phrase. It seems this physical "WRITE"ing into the files will only be done after a buffer is filled completely or reaching a "CLOSE" statement. Is it possible to write file records immediatly while the application runs? Resolution: Yes, compiler directive WRITETHROUGH / WRITETHRU is intended to do this. Refer to the documentation files for Server Express 4.0 also Server Express 5.0: http://supportline.microfocus.com/Documentation/books/sx40sp2/sx40indx.htm http://supportline.microfocus.com/Do
This article explains how to redirect STDOUT and STDERR to the same LOG file when executing an application. Problem: How do you redirect STDOUT and STDERR to the same LOG file when executing an application? In this sample program, it writes on the STDOUT the display statements and it generates an error because of a not found program. What can be done to avoid this? PROCEDURE DIVISION. perform 2 times display "To Stdout" end-perform *> msg to STDOUT call "DOERROR" *> msg to STDERR Resolution: To redirect STDOUT and STDERR to the same LOG file, use the following: On UNIX: cobrun programname >ABC.log 2>>ABC.log OR programname >ABC.log 2>>ABC.log if linked program On Windows: set COBSW= S run programname >ABC.log 2>>&1 OR programname >ABC.log 2>>
This article explains that an OBECT REFERENCE defined in working storage that is used by more than one thread, or passed between threads may cause this error. Problem: We are running an application with COBOL and JAVA and after a period of time the following runtime exception occurs: [java] Exception 24 not trapped [java] the class nilobject (object reference: 00000003) Does not understand: close Hit T to terminate program. Hit any other key to continue. This error happens as a threaded application. If it is run as a single thread, the error does not happen. Resolution: The most likely cause of the problem is an OBECT REFERENCE defined in working storage that is used by more than one thread, or passed between threads. If one thread finalizes the object and another thread then attempts to invoke a method on it, such as 'close' you will see the error that was enco
This article describes an error caused by the SMP kernel when debugging Server Express 4.0. Problem: When debugging in Server Express 4.0 (up to ServicePack2) running Linux RedHat, the following errors occur as a result of the SMP kernel. How can this be resolved: Execution error : file '/usr/microfocus/cobol/dynload/animchr.lbr/dispatch.gnt' error code: 114, pc=0, call=1, seg=0 114 Attempt to access item beyond bounds of memory (Signal 11) Resolution: Using a non-SMP kernel will work, however, this problem has been solved in FixPack 40.03_62 for Server Express 4.0 SP2 running Linux which was released 16 July 2006. Old KB# 13979
This article provides a solution for Server Express File Handler reading one byte at a time. Problem: When reading from a pipe, Server Express File Handler reads only one byte at a time. Resolution: The following functionality is added with Server Express WebSync 3 product level: pipe_buffer_size Set the size of the buffer used by the run-time system when reading information from a pipe. Syntax: >>-----set pipe_buffer_size=---integer------><> Parameters: integer Any positive integer value indicating the size of the pipe buffer maintained by the run-time system. Properties: Default: 0 Setting: None Old KB# 14016
This article explains if there is a way to raise a trappable error when length parameter causes substring extraction to exceed the size of the source field. Problem: Compile and run the following program with COBCONFIG environment variable set to a file containing set memory_strategy=0x80000001 should cause an RTS 252 error, but the error did not occur. 01 FIELD-1 PIC X(80) VALUE ALL "*".with 01 FIELD-2 PIC X(80) VALUE SPACE. 01 SUB-1 PIC S9(04) VALUE 10. MOVE FIELD-1(75:SUB-1) TO FIELD-2. Is there a way to raise a trappable error in Micro Focus COBOL when the length parameter would cause substring extraction to exceed the size of the source field? The desire is to stop program execution if a parameter (SUB-1 in this example) would cause an invalid MOVE and hence possibly an invalid value in FIELD-2. Resolution: The memory_strategy config variable will only check overruns
This article describes various temporary files created by RTS to provide certain functionality. Problem: The RTS creates various temporary files to provide certain functionality. These files are created in $TMPDIR (if set) or /tmp, /usr/tmp or /var/tmp depending on the UNIX platform. If any temporary files are left lying around then it is because the RTS could not run its cleanup code, for example, if kill -9 is used or when exiting early from a C debugger. Temporary files created by the RTS have the following prefixes: cobdi Created during compilation cobhp CBL_VFILE_ heaps - mainly used by the checker cobru CBL_EXEC_RUN_UNIT inheritance information - removed by child cobsm Shared memory lock cobxi Embedded source code file names - created during compilation and removed by cob/editor/cmenu cobdb/cobdc Debugging cobdf/cobdt Mixedlangdebug debugging cobcg/cobsv Cross session debugging coban Created (and removed) by cobanim Reso
This article describes terminal emulation issues while editing a screenset created with the dialog systems utility (ds). Problem: While editing a screenset created with the dialog systems utility (ds), it failed with error 114 on file 'SSP'. Is the screenset itself corrupted, or there something else going on? Resolution: The problem is most likely caused by terminal emulation issues. The ds utility uses the ADIS module and full screen formatting. It depends on the TERM environment variable being set to a terminfo entry that matches the characteristics of the terminal emulator being used and contains correct entries describing the terminal capabilities. Check to see if TERM is set to "xterm" and if there is a version of "Putty" running as the emulator. The actual "xterm" terminfo entry does not contain sufficient or accurate capability descriptions to match the version of Putty. This can be resolved by using the PowerTerm emul
This article explains how to find where in the application an error may be occurring. Problem: When running an application the error 153 Subscript out of range is received. Is it possible to find out where in the program is the error occurring? Resolution: A subscript which you have used in your program is out of the defined range, that is, it is either less than one or it is greater than the number of occurrences of the item. The resolution is to recode the program, although it is difficult to isolate where the error is occurring. Look at the example program below: subscript.cbl working-storage section. 01 ws-1 pic x(5) occurs 20. 01 ws-2pic 99. procedure division. move 21 to ws-2. move "hello" to ws-1(ws-2). stop run. Notice that ws-1 occurs 20 times, but the program is trying to move "hello" to the 21st occurrance, hence the 153 error. The easiest way to find the error is to compile the program for ani
This article explains how to keep AppTrack from continually asking for a password. Problem: When running AppTrack for the first time, a password wasI established. Subsequently, AppTrack is asking for the password every time it is used. How can this be avoided? Resolution: With Server Express version 4.0 or higher, you can remove AppTrack and do a fresh install of the AppTrack system and the Application Server licenses. Before beginning, you should have your Application Server licenses available (both the serial numbers and the license keys) because you will need to re-enter them. This procedure can be completed easily within a few minutes. Log in as root. Set the COBDIR environment variable to the location where the COBOL product is installed, and make sure it is exported. Change directories to $COBDIR/aslmf: cd $COBDIR/aslmf Run the script "aslmdbrecover": ./aslmdbrecover At the end of this script, you will be taken into the AppTra
This article explains why, on HP/UX when trying to compile an application, the following error appears: # cob64 myapp.cbl. Problem: An RTS 115 error is returned against odbcecm when compiling an OpenESQL application on HP/UX: # cob64 myapp.cbl Server Express Embedded HTML Preprocessor Version 4.492 Copyright (C) 1984-2006 Micro Focus (IP) Ltd. All rights reserved aCC runtime: Use of "-mt" must be consistent during both compilation and linking. Execution error : file 'odbcecm' error code: 115, pc=0, call=1, seg=0 115 Unexpected signal (Signal 6) cob64: error(s) in compilation: myapp.cbl Resolution: This is an Operating System issue, which can be resolved by installing a patch to the C run-time (PHSS_34041, or the latest recommended patch which supercedes PHSS_34041). Old KB# 14017
This article explains a resolution to an error during a sort operation. Problem: We are receiving an error with an application's internal SORT failing during execution. The error message is: Execution error : file 'extsm' error code: 114, pc=0, call=1, seg=0 114 Attempt to access item beyond bounds of memory (Signal 11) The COBOL syntax was SORT sort-file-name, USING data-file-name GIVING data-file-name. Resolution: In reviewing the application source code's SORT statement, there is a size difference between the USER-SORT-FILE and those of MY-FILEs. SORT USER-SORT-FILE ASCENDING KEY........ USING MY-FILE-IN, GIVING MY-FILE-OUT. The difference is that USER-SORT-FILE is 101 bytes and MY-FILEs are 105 bytes. This size difference is being trapped at runtime as the USING MY-FILE-IN is opened and it's data passed to the SORT record. This size difference causes an out-of-bounds error, a 114 abend, as it attempts to move it into the SORT record buffer. Acc
For MF COBOL to work across NFS-mounted file systems, NFS must be configured to handle locks correctly. This C program tests the NFS configuration. Problem: NFS-mounted file systems may cause file access errors when used with MF COBOL. Problems may occur, not only at runtime involving indexed files and data files, but also when compiling or using the Animator. When opening a file, even a flat ASCII file such as a COBOL source file (.cbl), Micro Focus uses the UNIX system call fcntl() to establish a file lock. This is to prevent other processes or programs from opening the file for "exclusive" access. NFS-mounted file systems are sometimes configured such that the UNIX system call fcntl() does not work. This is not the fault of COBOL, though it can result in a hang or an error reported by the COBOL system. Resolution: The following C program tests whether an NFS-mounted file system is configured to handle the UNIX system call fcntl() correctly. The progr
This article explains how to recover an AppTrack password. Problem: We are unable to get into the $COBDIR/aslmf/apptrack utility. The password is unknown. What should we do? Resolution: Micro Focus SupportLine can recover the AppTrack password. Follow these steps: Open a SupportLine incident at supportline.microfocus.com Change directory to /var/mfaslmf, using the command "cd /var/mfaslmf" Then issue the command "tar -cvf mfasdb.tar mfasdb". This will create a file mfasdb.tar. Transfer the tar file via binary to the PC then attach it to the incident. The password will be returned by return email or telephone depending on the urgency. Old KB# 14000#COBOL#Licensing#ServerExpress#netexpress
This article explains what to do if the message "The license key entered is not valid" occurs when installing a license key using mflmcmd. Problem: When trying to install a license key using mflmcmd, we received the error message "The license key entered is not valid" even though the final two characters with the plus sign were successfully entered (in this case, the "AI "), and even though the serial number and license key were valid. Why is this? Resolution: This error is caused by running ./lmfdbrecover from within $COBDIR/lmf and then starting the License Manager with ./mflmman within $COBDIR/lmf. Subsequently, ./mflmcmd will not accept licenses. The lmf subdirectory of COBDIR is not meant to be an official location for the License Manager. It exists only as a set of files, like a template, to be copied to an official location. The script lmfinstall in $COBDIR/lmf is supposed to perform these copies. You could get into trouble when trying to use $COBDIR/lmf a
This article explains why the RTS 173 error on 'cdi2' ocurrs when trying to run cobprof. Problem: In Server Express v5.0, you might get the following error when trying to run the Profiler (cobprof): Load error : file 'cdi2' error code: 173, pc=0, call=1, seg=0 173 Called program file not found in drive/directory Resolution: This is a known issue and is fixed in Server Express v5.0 Websync 4 (WS04) Old KB# 14004
This article explains that increasing the kernel parameters for the HP/UX operating system will resolve the Animator load failure. Problem: When using Q C [Query Cursor] or Q E [Query Enter variable] the Animator window closes and the application receives the error Unable to load program: Load error: file 'XXXXXX' error code: 177 pc=0 call=1 seg=0 177 attempt to cancel active program This error occurred on a HP/UX UNIX platform. Why is this? Resolution: The issue regarding Animator load failure can be resolved by increasing the kernel parameters for the HP/UX operating system. A large executable which includes many database access modules might develop a large memory footprint, not only because of the large file I/O but because the database access routines are linked into the executable (even when the database is not accessed). Review the settings for data size and stack size. Configure t
This article explains the message "LMF 006 You are not licensed to use this product or version". Problem: After new licenses were installed we received the error message "LMF 006 : You are not licensed to use this product or version" at compile time. There is definite proof that the licenses are installed. Why are they not being found? Resolution: This situation can occur if there are multiple mflmf directories. Best practice is to have only one license directory that is not underneath any COBDIR. The latest version of the LMF software will always run older versions of the product. If a new version of Server Express is installed, that version's License Manager should be used. Either overlay the existing mflmf directory or create a new directory and enter all old and new keys, then remove the old mflmf directory. Ensure that all licenses are installed in the mflmf directory that is pointed to by the start-up script /etc/mflmrcscript. To find this directory: Is
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.