Browse all forums dedicated to the Rocket® COBOL product family.
Recently active
Created On: 03 March 2008 Problem: The touch C does not stop cobesdebug. I use Z and the UNIX command kill with the option -9 to destroy the both process. After cobesdebug it does not run, and displays error message or warning messages. Resolution: cobesdebug uses a internal data file to stock information about region, transaction, etc. Under Suse, it is possible to use the option -15 of the UNIX command kill. This option send a signal to stop the process with updating the internal data file after the restart of cobesdebug. Example: (chronologically) Screen01 ( tty1 ) cobesdebug ....... Z Screen02 ps -t/dev/tty1 kill -15 pid2 pid1 Screen01 fg ( foreground) to restart cobesdebug that stops ( signal 15 received) Incident #25321 Old KB# 2320
Problem: db2Initialize call failed with = -0000004904 ** External Compiler Module message ** DB0100 SQL4904N The pointer to parameter "piPidLength v95" of ** function "sqlainit" is not valid. when working against DB2 Version 9.5. Compiling with the DB2 directive returns "critical errror - DB2Initialize API not found". Compiling with the DB2 directive returns "DB00010 DB2 rejected an unspecified option" Resolution: The error regarding piPidLength is resolved in Net Express and Server Express 5.0 WP4. Generally, if you receive errors regarding DB2Initialize, you will need to compile your application with the DB2(UDB-VERSION=x) compiler directive, where x should be : V8 : DB2 v8.x V9 : DB2 v9.1 V95 : DB2 v9.5 You can determine the version of the DB2 client software by invoking db2level Old KB# 2290
Problem: The following message is displayed : as -o /tmp/cob1HMaUa/ldtab.o /tmp/cob1HMaUa/ldtab.s Assembler : /tmp/cob1HMaUa/ldtab.s: line 7 : 1252-191 .llong should be used for relocatable expressions. cob32: error(s) in assembling /tmp/cob1HMaUa/ldtab.s Resolution: As as command is defined for 64bits mode , it is not possible to assemble a file that is created in 32bits . It is necessary to setting OBJECT_MODE=32 before compile the program. Old KB# 2361
Problem: Is it possible to force a program to be reloadedupdate with a shell command ? Resolution: The option -n of the command castran can be used to replace the CICS transaction CPMT NEWCOPY The documentation file of this command is attached. This file is come from Server Express 5.0WS4 Attachments: rhcomm25.htm Old KB# 2292
Problem: Browser displays HTTP:500 - The website cannot display the page when submitting a form and running a script in cgi-bin. (8)Exec format error logged in $ErrorLog/error_log Resolution: This happens because Apache expects to run an executable and finds a script. You need to add a #! to the top of the script to tell UNIX to execute that script using the interpreter specified. for example: #! /bin/sh Old KB# 2265
Problem: When compiling with Server Express 5.0 on HP/UX Itanium 11.31 you may encounter the following warning message: cobAAA027397/ldtab.s:92: warning 4018: invalid size This article explains the reason why the message is returned. Effectively, however, the warning can simply be ignored. It should be fixed in Server Express 5.1 which is currently scheduled for mid-2008. Resolution: Originally HP's assembler contained a bug; a certain size was documented as being in words whilst in practice it had to specified in bytes. In version 11.31 HP fixed this bug but it did unfortunately introduce a problem of incompatability, thus, causing the warning message. In Server Express 5.1 the code wiill be changed so as to work with both assemblers. Old KB# 2281
Problem: The command echo $? Displays a value that is higher than 128. What does this value mean? Resolution: If the errno value that is displayed by the command echo $, is higher than 128 , it means that the process was stopped by a signal = {Errno value} - 128 Example Echo $? displays 137 , the process was stopped by signal 9 Old KB# 2369
Problem: If there are multiple copies of MFDS running, by default cobesdebug will only connect to the one running on port 86. Therefore only the regions running under that copy of MFDS will be available to cobesdebug. Resolution: cobesdebug uses the mf-client.dat to determine which port to use to connect to MFDS. Modify $COBDIR/etc/mf-client.dat to point to whatever port MFDS is using. Ex. mrpi://localhost:8686 Old KB# 2303
Problem: Arithmetic statements produce different results when run in int form and other program forms(.gnt,.so, or executable) Resolution: In some cases different results for arithmetic statements are produced when running programs compiled to int executable form versus running the same program compiled to .gnt (or other object code) form. There are a number of different causes for this problem/symptom. One possible cause is that the arithmentic operation is constructed in a way that allows the result prodcuced to be larger than the the capacity of the data item where the result is to be stored. INT code hides these kinds of things, while object code forms do not. To determine if a particular arithmentic operation is failing because of this unintended overflow condition, modify the statement to include the ON SIZE Error clause. examples: Original suspect statment COMPUTE C = A * B Test for Size Error COMPUTE C = A * B ON SIZE ERROR STOP "SIZE
Problem: Using the DISPLAY verb in a CGI program gives an Interrnal Server Error 500 when deployed using the Apache web server, however the same DISPLAY works fine with other web servers such as Solo. Resolution: The problem is with the way that Apache works rather than Server Express. The following can be found on the Apache website: http://httpd.apache.org/docs/2.2/howto/cgi.html#writing -----------> There are two main differences between "regular'' programming, and CGI programming. First, all output from your CGI program must be preceded by a MIME-type header. This is HTTP header that tells the client what sort of content it is receiving. Most of the time, this will look like: Content-type: text/html Secondly, your output needs to be in HTML, or some other format that a browser will be able to display. Most of the time, this will be HTML, but occasionally you might write a CGI program that outputs a gif image, or oth
Problem: In my application , the Display verbs are described with color clause , but all screens are displayed without colors Resolution: Cobol system uses Unix terminfo database. So the terminfo entry ( $TERM )must be defined with the colors entries. The example is for vt220 & xterm . Attachments: colour.tar Old KB# 2329
Problem: Some application return Unix return-code that is not validated to zero. In these applications, the return-code is not used by the Cobol module . With others applications , the return-code is used , but the return-code of the application is not validated to a right value Resolution: Some third party software use a return-code between its subprogram. In this case , the application returns a value that is not null. The compiler directive -C DEFAULTCALLs=4 can be used if all CALL verbs must not return the return-code. If some CALL verb must return a value of return-code , it is necessary to use CALL-CONVENTION clause. An example is attached. If it is not use with CALL-CONVENTION, a CALL verb is used with the value of DEFAULTCALLS that is by default zero. Attachments: prog.cbl Old KB# 2334
Problem: In Server Express 5.0 WS1 when IKJEFT1A calls a program that doesn't exist, instead of causing an abend it returns a COND CODE = 0012. IBM defines the DISP clause as: DISP=(beginning disposition, normal termination disposition, abnormal termination disposition) An abnormal termination or ABnormal END is really an ABEND. Just passing a non-zero Condition Code is not enough to cause the JCL system to process the DISP clause as an abnormal termination. Generally, the application would have to call an abend routine (ILBOABN0 or CEE3ABD -LE) to provoke and abend and make the JCL to process the 3rd parameter on the DISP clause. Resolution: This has been fixed in Server Express WP4. Now IKJEFT1A produces a system ABEND S04C when the program called doesn't exist. With this abend the file disposition is processed correctly. Old KB# 2318
Problem: Using COBSQL on a 64-bit platform fails when working in 32-bit mode. Investigations revealed that procob32 was missing from $ORACLE_HOME/bin. Resolution: This is an Oracle issue. Further details can be found on the Oracle Metalink site under document id 458640.1. To resolve the problem you should: 1.Download patch 5887582 2.Place the file spcbd.o in $ORACLE_HOME/precomp/lib32 directory 3.Relink the procob32 using $ make -f ins_precomp.mk procob32 (OR) Apply patch 4757588 on top of Oracle 10g 10.2.0.3 Old KB# 2357
Problem: I migrate my application from Object Cobol Developer Suite. In my application , the box is with color and the lines are cut by characters . It runs fine with Object Cobol Developer Suite . With Server Express , The color stops at the first character . Resolution: The terminfo source file for the emulation linux was modified between Object Cobol Developer Suite and Server Express. It is necessary to use the terminfo source file that is delivered with Object Cobol Developer Suite . The source file linux-ocds.src is : # Reconstructed from file: /opt/cobol/d4200/tbx/terminfo/l/linux # Produced by mfinfocmp (Micro Focus terminfo) linux|linux console, am, bce, eo, mir, msgr, xenl, xon, colors#8, cols#80, it#8, lines#25, pairs#64, acsc= ^P\\,^Q-^X.^Y0\\333'^Da\\261f\\370g\\361h\\260i\\316j\\331k\\277l\\332m\\300n\\305o~p\\304q\\304r\\304s_t\\303u\\264v\\301w\\302x\\263y\\363z\\362{\\343|\\330}\\234~\\3
Problem: When you need the option of being able to change the order and count of directories/paths where Shared Objects of COBOL programs are located, you might expect that this should be tunable inside the running process with setenv. But changing the COBPATH environment variable in the running process with setenv has no effect to the Cobol run time. It seems that COBPATH is only once read at the process start. How can one change the directories/paths, where the run time searches for the shared object that was called at realtime? Resolution: id division. program-id. TEST1. data division. working-storage section. procedure division. DISPLAY "CALLING SETPATH" &n
Problem: I work in UNICODE ( UTF16 ) My group is defined as : 01 Z1 . 02 Z11 PIC N. 02 FILLER PIC N. 02 Z12 PIC N. 02 Z13 PIC N. 02 Z14 PIC N. How do I do to initialize Z1 to spaces ( UTF16 ) Resolution: As INITIALIZE statement does not affect elementary FILLER data item, the FILLER data item has the same value before and after INITIALIZE. It is possible to use the compiler directive -C REMOVE=FILLER. Old KB# 2277
Problem: In a Windows environment it is possible to use the WIN API GetSystemTime which returns time to milliseconds. However, is there a similar functionality for UNIX platforms? Resolution: The standard functions ftime() and gettimeofday(), both of which are part of the Single UNIX Specification. ftime() is an outdated function; gettimeofday() is preferred for new code. To use either of those functions in COBOL you will have to convert the appropriate structure from the system's version of /usr/include/sys/time.h to a COBOL group item, then call the function passing the item by reference. For example, on Solaris 9, in a 32-bit environment: ----- $set sourceformat(free) identification division. program-id. time-in-ms. data division. working-storage section. 01 timeval-32bit. 02 seconds pic x(4) comp-5. 02 micr
Problem: How to use variable in the MFSORT configuration file ? Resolution: There are some uses of environment variables in the following script file : echo "1111Aaaaaaaaaa" > L0 echo "9999Azzzzzzzzz" >> L0 echo "4444Bddddddddd" >> L0 echo "1111BAAAAAAAAA" >> L0 echo "3333Accccccccc" >> L0 echo "sort fields(1,4,ch,a)" > cas1.srt echo "sort fields(1,4,ch,a)" > cas2.srt echo "sort fields(1,4,ch,a)" > cas3.srt echo "use L0 org ls record(f, 60)" >> cas1.srt echo "use L0 org ls record(f, 60)" >> cas3.srt echo "give \\$A1 org ls record(f, 60)" >> cas1.srt echo "use \\$A0 org ls record(f, 60)" >> cas2.srt echo "give L2 org ls record(f, 60)" >> cas2.srt echo "give L3 org ls record(f, 60)" >> cas3.srt echo "INCLUDE cond=(5,1,ss,eq,c'\\$A3')" >> cas3.srt A0=L0 A1=L1 A3=A export A0 export A1 export A3 mfsort take cas1.srt mfsort take cas2.srt mfsort take cas3.s
Problem: I would like to use animator with my COBOL modules in Intermediate Code. In my COBOL modules I insert Oracle SQL Language. The ANIMATOR loops on verb CALL 'SQLBEX' or STOP RUN. COBSW= A export COBSW rtsora program01.int Resolution: When a Cobol module program01.cob ( the output file of the command procob progam01.pco ) is generated ( for example in Generated Code ), the file program01.idy can't be use to anim program01.int. If it is use , anim loops . So It is necessary to generate in two phases: Compile : cob program01.cob save the files program01.int & program01.idy Generate : cob -u program01.int and use the saved files to anim But it is possible to anim the Generated Code file after use the command: ob -ug program01.int Old KB# 2322
Problem: In cases where differing results are observed between the .INT version of a program and the .GNT,Callable shared object, or UNIX executable version of the same program there are a few basic steps to take in identifying the root cause of the difference. Resolution: The first thing to do is identify the line of code in the program where the difference can be observed, in most cases this will be an arithmetic operation or possible an evaluation operation (IF , EVALUATE etc). Make sure that the fields used in the offending statement contain expected values before proceeding, if any element contains an incorrect or unexpected value then the root cause of the difference has not yet been identified, you'll have to work backwards to see where the error is introduced. Once the offending statement is identified insert some code after the offending statement which will clearly indicate success or failure of the suspect operation. For example if the suspect
Problem: MySQL is the worlds most popular open source database because of its consistent fast performance, high reliability and ease of use. Can MySQL database be used with Net Express and Server Express? Resolution: Although the product documentation talks about specific databases such as DB2, Informix, Oracle and Sybase, it is possible to use any RDMS with OpenESQL and the relevant ODBC driver. Pre-requisites: 1. An ODBC driver manager such as unixODBC 2. An ODBC driver such as the one available from MySQL (version 3.51 was used to test the demo programs mentioned in this article) The unixodbc.org and mysql.com websites provide comprehensive documentation on installing and configuring the manager and driver. Please refer to $COBDIR/docs/readme.txt for details on the platforms supported by OpenESQL. Minimum ODBC configuration when connecting to database on local system: If using unixODBC the following configuration information goes into
Problem: My program is : 77 A PIC 9 VALUE 5. IF A > 0 IF A = 5 NEXT SENTENCE ELSE DISPLAY "1" END-IF DISPLAY "2" ELSE DISPLAY "3" END-IF
Problem: Using the command: p(cobsql) CSQLT=ORACLE8 KEEPCBL P(CP) SY ENDP produces the following errors * Micro Focus COBSQL Integrated Preprocessor with ASCII/EBCDIC Support * Server Express V5.0 Copyright (C)1984-2006 Micro Focus (IP) Limited. * URN AAAPA/ZZ0/00065 * CSQL-I-008: Invoking cp Preprocessor * CSQL-I-017: Creating "COSP318.cs9" * CSQL-I-018: Invoking ORACLE8 Precompiler/Translator * CSQL-I-020: Processing output of ORACLE8 Precompiler 435 IF mfsqlmsg-line(WS-DB2-ERR-LOOP)(2:4) = ' ' * 14-S********************************************* ** ** Invalid operand 438
Problem: Getting permissions errors when untarring the file. Resolution: You now have to be root to untar the update. Login as root user, create the directory where you want to install the WrapPack (this is a complete re-install, not an update or overlay), untar the files into that directory then run the install script. Old KB# 2273
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.