AIX 中的 Informix + Cobol

标签 informix aix cobol

我在尝试使用 Informix 编译一个简单的 Cobol 时遇到了麻烦,它可以编译,但不会链接并生成可执行文件

这是我收到的消息:

ld: 0711-317 ERROR: Undefined symbol: .GETENV
ld: 0711-317 ERROR: Undefined symbol: .ECO_DB
ld: 0711-317 ERROR: Undefined symbol: .ECO_SQC
ld: 0711-317 ERROR: Undefined symbol: .ECO_XIM
ld: 0711-317 ERROR: Undefined symbol: .ECO_STM
ld: 0711-317 ERROR: Undefined symbol: .ECO_OC
ld: 0711-317 ERROR: Undefined symbol: .ECO_BOC
ld: 0711-317 ERROR: Undefined symbol: .ECO_SLC
ld: 0711-317 ERROR: Undefined symbol: .ECO_CMT
ld: 0711-317 ERROR: Undefined symbol: .ECO_CDB
ld: 0711-317 ERROR: Undefined symbol: .ECO_DCON
ld: 0711-317 ERROR: Undefined symbol: .ECO_CONN
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: The error code from the last command is 8.

我认为这是 libpath 的问题,但这是我的 .profile。

export PATH=$PATH:/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:/usr/informix/lib:.
export INFORMIXDIR=/usr/informix
export PATH=$PATH:$INFORMIXDIR/bin
export INFORMIXCOB=cob2
export INFORMIXCOBDIR=/usr/lpp/cobol
export INFORMIXCOBTYPE=ibm
export INFORMIXCOBDIR=/usr/lpp/cobol
export COBDIR=/usr/lpp/cobol
export INFORMIXCOB=cob2
export LIBPATH=$LIBPATH:/usr/informix/lib:/usr/informix/lib/esql:/usr/lpp/cobol/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lpp/cobol/lib:/usr/informix/lib:/usr/informix/lib/esql    

我尝试了很多方法,但没有结果..

这是我的作品,但我也尝试了 cob2 objet.o,得到了相同的结果。

这是生成文件

这是我的作品,但我也尝试了 cob2 objet.o,得到了相同的结果。

################################################################################
# Licensed Materials - Property of IBM
#
# ? Copyright IBM Corp. 2013
#
# The source code is provided "AS IS" without warranty of any kind. It is 
# provided solely as a sample. It may be used, executed, copied, and modified 
# for internal use only by Licensee without royalty.
################################################################################

################################################################################
#
# This makefile template can be used to build your AIX COBOL project.  Comments 
# are provided to help you understand how it works, and to help you edit it for 
# your needs.  There are 2 main sections:
#   1. Variables Section - defines targets to build, commands to use, and 
#       command options
#   2. Rules Section - defines how to build the targets.  For each target, it 
#       provides the commands to run to build them. 
#
################################################################################

# Add any other file extensions you will build or build from here
.SUFFIXES:
.SUFFIXES: .cbl .eco

################################################################################
# VARIABLES SECTION
#
# Define variables to control various targets, commands, comand options that are 
# used in various places in the makefile
################################################################################

## BUILD TARGETS -- Define all targets to build.  These are the final targets of 
## the build, usually an exectable (linked objects), executables (batch programs), 
## or a library (linked objects intended to be linked to by consuming projects).
## You may explicitly list your final target(s) by uncommenting the following 
## lines, and commenting the automatic setting of TARGET below
#TARGETS = PROGRAM1 \
#          PROGRAM2.exe \
#          PROGRAM3
## If your project only contains batch and/or CICS programs and is simple 
## enough, you can have the makefile determine the final targets automatically  
## by uncommenting this line and changing "*.cbl *.sqb" to the source 
## file extensions you use, as well as adding/removing the  
## corresponding ' -e sed "s/\.cbl//" ' arguments to 'sed'
TARGETS = `ls -1 *.cbl *.eco 2> /dev/null | sed -e "s/\.cbl//" -e "s/\.eco//"`

## COMPILE COMMAND
## Single-threaded compile
COB = cob2

## COMPILE OPTIONS
## You will want to add your include paths here too (where copybooks are, if not
## in same directory as source), eg. -I/include/path1 -I/include/path2
COB_OPTS = -g  

ESQLCOBOL = esqlcobol

## Link/bind options
LINK_OPTS= 

## SQL COMPILE SETTINGS -- Uncomment and set the following variables if you use
## embedded SQL in your source
## DB2_DIR:  DB2 install location
## DB_NAME:  Database name
## DB_USER:  DB2 userid
## DB_PASS:  DB2 user password
#DB2_DIR = /opt/IBM/db2/V9.7
#DB_NAME = 
#DB_USER = 
#DB_PASS = 
## Compile options for embedded SQL
#DB2_COB_OPTS = -qLIB -q"SQL('database $(DB_NAME) user $(DB_USER) using $(DB_PASS)')"

## DB2 Precompiler
DB2 = db2
DB2_PREP = $(DB2) prep
DB2_PREP_OPTS = target ibmcob


################################################################################
# RULES SECTION
#
# This section controls how targets are built from dependencies.
# The rule will get run if the dependencies change (become newer than the target)
# There are two types of rules:
#   1. Explicit rule.  Builds one explicit target from an explicit list of 
#       dependencies  
#           <target>: <dependencies>
#           <tab> <rules>
#       Example:
#           PROGRAM.exe: PROGRAM.cbl MYCOPY.cpy
#               cob2 PROGRAM.cbl -o PROGRAM.exe -I./
#   2. Implicit rule.  Builds targets with a specified file extension from a 
#       source file with the same basename and with a specified file extension.  If
#       only the target is specified then it builds a target with no file extension.
#           .<target_extension>.<source_extension>:
#           <tab> <rules>
#       Example 1:  For any .o targets that need to be built, if a .cbl file exists 
#       with the same name
#           .cbl.o:
#               cob2 $< -o $@
#       Example 2:  For any executable targets that need to be built with no file 
#       extension, if a .cbl file exists with the same name
#           .cbl:
#               cob2 $< -o $@
################################################################################

# 'all' is the default makefile target that is built for 'make' with no arguments
all: $(TARGETS)

## This rule builds batch COBOL source files to an exectuable program with the
## same basename as the source file with no file extension
.cbl:
    $(COB) $< -o $@ $(COB_OPTS) $(DB2_COB_OPTS) $(LINK_OPTS) 

## prar ficheros informix

.eco:
    $(ESQLCOBOL) $< -o $@ 

## .SQB (EMBEDDED SQL) RULES FOR COMPILER VERSION 4.1.1.10 OR LATER
## Comment these .SQB rules if using compiler version 4.1.1.9 or earlier, and 
## uncomment the .SQB rules following for compiler version 4.1.1.9 or earlier.
## This rule builds embedded SQL source in .sqb files.
.sqb:
    $(COB) $< -o $@ $(COB_OPTS) $(DB2_COB_OPTS) $(LINK_OPTS)

## .SQB (EMBEDDED SQL) RULES FOR COMPILER VERSION 4.1.1.9 OR EARLIER
## Comment above .SQB rules if using compiler version 4.1.1.9 or earlier, and 
## uncomment this rule.
## This rule preprocesses embedded SQL files, to produce .cbl files that will
## be compiled as usual
#.sqb.cbl:
#   $(DB2) connect to $(DB_NAME) user $(DB_USER) using $(DB_PASS)
#   $(DB2_PREP) $< $(DB2_PREP_OPTS)


## The clean rule gets run when you run 'make clean', which is the default
## Clean Build command for AIX COBOL projects in RD AIX & Linux.  It should
## clean up all files created by the build.  It is useful if you want to build
## from scratch (eg. if you change a copybook included by many source files).
clean:
    rm -f $(TARGETS) core *.lst *.adt *.adt2 cmpout.xml

这是预处理后的cobol源

0001   identification division.
0002   program-id. 'pruifx'.
0003   author. lmfa.
0004   date-written. Junio 2014.
0005    
0006  ******************************************************************
0007  *         prueba COBOL sql AIX (INFORMIX)                        *
0008  ******************************************************************
0009    
0010   environment division.
0011   configuration section.
0012   special-names.
0013       decimal-point is comma.
0014    
0015   input-output section.
0020   data division.
0025   working-storage section.
0026    


0053  *    exec sql include sqlca    end-exec.



      *************************************************************
      *  Title: sqlca.ibm
      *  Sccsid:        @(#)sqlca.ibm   9.1 10/06/96 15:13:54
      *  Description:
      *         SQLCA include file for IBM COBOL Set for AIX 1.1
      *************************************************************
        77  SQLNOTFOUND PIC S9(10) VALUE 100.
        01  SQLCA.
            05  SQLCODE         PIC S9(9) COMPUTATIONAL-5.
            05  SQLERRM.
                49  SQLERRML    PIC S9(4) COMPUTATIONAL-5.
                49  SQLERRMC    PIC X(70).
            05  SQLERRP         PIC X(8).
            05  SQLERRD         OCCURS 6 TIMES
                                PIC S9(9) COMPUTATIONAL-5.
            05  SQLWARN.
                10  SQLWARN0    PIC X(1).
                10  SQLWARN1    PIC X(1).
                10  SQLWARN2    PIC X(1).
                10  SQLWARN3    PIC X(1).
                10  SQLWARN4    PIC X(1).
                10  SQLWARN5    PIC X(1).
                10  SQLWARN6    PIC X(1).
                10  SQLWARN7    PIC X(1).
0053  *    exec sql include tabdes   end-exec.

      *EXEC SQL BEGIN DECLARE SECTION END-EXEC.


       01 TABDES.
       02 DESCOD PICTURE X(3).
       02 DESCLA PICTURE X(15).
       02 DESDES PICTURE X(62).

      *EXEC SQL END DECLARE SECTION END-EXEC.


0054    
0055  ****** Definicion de variables para tablas *******************

0238  *    exec sql begin declare section end-exec.


       01 base-datos PICTURE x(32).
       01 cnt-total PICTURE s9(4) value 200.
       01 cnt-totals redefines cnt-total PICTURE s9(4).
       01 cnt-pendientes PICTURE 9(4) value 0.
       01 sql-area PICTURE x(6) value '119953'.
       01 sql-fecha PICTURE x(10) value '23.05,201-'.
       01 sql-gm PICTURE xx value 'GM'.
       01 sql-rmp PICTURE xxx value 'RMP'.
       01 sql-m1 PICTURE x(50) value '*'.
       01 sql-m2 PICTURE xx value '*'.
       01 sql-m3 PICTURE xxx value '*'.

0254  *    exec sql  end  declare section end-exec.


0056    
       01  xor1   pic x(40) value '1234567890'.
       01  xor2   pic x(40) value '0987654321'.
       01  p1 pointer.

       01  aa pic 9 value zeros.
       01  cc pic 99 value 11.
       01  campo        pic x(64000).
       01  P pointer.
       01  ix-base      pic x(13) value 'INFORMIX_BASE'.
       01  ix-server    pic x(14) value 'INFORMIXSERVER'.
      *Beginning of ESQL/COBOL temporary variables.
       77  SQLCODETMP    PIC S9(9) COMP-5.
       77  SQLWARNTMP    PIC S9(9) COMP-5.
       77  SQLSTATE     PIC X(5).
       77  SQLTYPE       PIC S9(9) COMP-5.
       77  SQLLEN        PIC S9(9) COMP-5.
       77  SQLINAME      PIC S9(9) COMP-5.
       77  SQLITYPE      PIC S9(9) COMP-5.
       77  SQLILEN       PIC S9(9) COMP-5.
       77  SQLTEXTLEN    PIC S9(9) COMP-5.
       77  SQL2TEXTLEN   PIC S9(9) COMP-5.
       77  SQL3TEXTLEN   PIC S9(9) COMP-5.
       77  SQLINCNT      PIC S9(9) COMP-5.
       77  SQLUSEFLAG    PIC S9(9) COMP-5.
       77  SQLOUTCNT     PIC S9(9) COMP-5.
       77  SQLDIRECTION  PIC S9(9) COMP-5.
       77  SQLVALUE      PIC S9(9) COMP-5.
       77  SQLSCRFLAG    PIC S9(9) COMP-5.
       77  SQLOBJLEN     PIC S9(9) COMP-5.
       77  SQLBINDTYPE   PIC X(1).
       77  SQLDUMLEN     PIC S9(9) COMP-5 VALUE 1.
       77  SQLOBJECT     PIC X(18).
       77  SQLTEXT       PIC X(18).
       77  SQL2TEXT      PIC X(18).
       77  SQL3TEXT      PIC X(18).
       77  SQLDUMMY      PIC X(1) VALUE ' '.
       77  ECO-DSH PIC X(7) VALUE 'eco_dsh'.
       77  ECO-USH PIC X(7) VALUE 'eco_ush'.
       77  ECO-GST PIC X(7) VALUE 'eco_gst'.
       77  ECO-SQC PIC X(7) VALUE 'eco_sqc'.
       77  ECO-LYR PIC X(7) VALUE 'eco_lyr'.
       77  ECO-MSG PIC X(7) VALUE 'eco_msg'.
       77  ECO-SQU PIC X(7) VALUE 'eco_squ'.
       77  ECO-IQU PIC X(7) VALUE 'eco_iqu'.
       77  ECO-SIG PIC X(7) VALUE 'eco_sig'.
       77  ECO-SQS PIC X(7) VALUE 'eco_sqs'.
       77  ECO-SQE PIC X(7) VALUE 'eco_sqe'.
       77  ECO-SQB PIC X(7) VALUE 'eco_sqb'.
       77  ECO-SQBCB PIC X(9) VALUE 'eco_sqbcb'.
       77  ECO-SQD PIC X(7) VALUE 'eco_sqd'.
       77  ECO-DTS PIC X(7) VALUE 'eco_dts'.
       77  ECO-DAI PIC X(7) VALUE 'eco_dai'.
       77  ECO-DSI PIC X(7) VALUE 'eco_dsi'.
       77  ECO-DTC PIC X(7) VALUE 'eco_dtc'.
       77  ECO-DTX PIC X(7) VALUE 'eco_dtx'.
       77  ECO-INX PIC X(7) VALUE 'eco_inx'.
       77  ECO-FIN PIC X(7) VALUE 'eco_fin'.
       77  ECO-FFL PIC X(7) VALUE 'eco_ffl'.
       77  ECO-DTCVASC PIC X(11) VALUE 'eco_dtcvasc'.
       77  ECO-DTTOASC PIC X(11) VALUE 'eco_dttoasc'.
       77  ECO-INCVASC PIC X(11) VALUE 'eco_incvasc'.
       77  ECO-INTOASC PIC X(11) VALUE 'eco_intoasc'.
       77  ECO-IMN PIC X(7) VALUE 'eco_imn'.
       77  ECO-IDN PIC X(7) VALUE 'eco_idn'.
       77  ECO-IDI PIC X(7) VALUE 'eco_idi'.
       77  ECO-DAT PIC X(7) VALUE 'eco_dat'.
       77  ECO-DAY PIC X(7) VALUE 'eco_day'.
       77  ECO-DEF PIC X(7) VALUE 'eco_def'.
       77  ECO-FMT PIC X(7) VALUE 'eco_fmt'.
       77  ECO-JUL PIC X(7) VALUE 'eco_jul'.
       77  ECO-MDY PIC X(7) VALUE 'eco_mdy'.
       77  ECO-STR PIC X(7) VALUE 'eco_str'.
       77  ECO-TDY PIC X(7) VALUE 'eco_tdy'.
      *End of ESQL/COBOL temporary variables.
        77  SQLTEXT01     PIC X(32) VALUE 'set isolation to committed re
      -    'ad '.
        77  SQLTEXTLEN01  PIC S9(9) COMP-5 VALUE 32.
        77  SQLTEXT02     PIC X(44) VALUE 'select * from tabdes where de
      -    'scod = ''UBC'' '.
        77  SQLTEXTLEN02  PIC S9(9) COMP-5 VALUE 44.
        77  SQLTEXT03     PIC X(44) VALUE 'select * from tabdes where de
      -    'scod = ''UBC'' '.
        77  SQLTEXTLEN03  PIC S9(9) COMP-5 VALUE 44.
       local-storage section.
       linkage section.
       01  xor-campo              pic x(64000).
0111    
0231==*=================================================================
0232   procedure division.
0234    
0235   Principal section.
           Set P to address of ix-base
           Call "getenv" using by value P returning base-datos
0497  *     display 'INFORMIX_BASE' upon MY-ENV-NAME
0498  *     accept base-datos       from MY-ENV-VALUE
           .
       empezar.
           move 'xxxxx@xxxxxx' to base-datos

0499  *    exec sql database :base-datos end-exec

            MOVE 0 TO SQLVALUE
            MOVE 32 TO SQLOBJLEN
            CALL 'eco_db' USING base-datos, SQLVALUE, SQLOBJLEN
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE

0500    
0501       if not (sqlcode = zeros or = -377)
0502          display 'OpBD'
0503          go to sql-error
0504       end-if
0505    
           move 'set lock mode to wait 30' to sql-m1

      *    exec sql
      *        execute immediate :sql-m1 
      *    end-exec

            MOVE 50 TO SQLTEXTLEN
            CALL 'eco_xim' USING sql-m1, SQLTEXTLEN
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE

           display 'sqlcode->' sqlcode
0509    
0511  *-----------------------------------------------------------------

0513  *    exec sql
0514  *         set isolation  to committed read
0515  *    end-exec

            MOVE 0 TO SQLINCNT
            CALL 'eco_stm' USING SQLTEXT01, SQLINCNT, SQLTEXTLEN01
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE

           .

           move spaces to tabdes

      *    exec sql
      *         select *
      *           into :tabdes
      *           from tabdes
      *          where descod = 'UBC'
      *    end-exec

            MOVE 0 TO SQLINCNT
            MOVE 3 TO SQLOUTCNT
            CALL 'eco_oc' USING SQLOUTCNT
            MOVE 233 TO SQLTYPE
            MOVE 3 TO SQLLEN
            CALL 'eco_boc' USING SQLTYPE, DESCOD OF tabdes, SQLLEN
            MOVE 15 TO SQLLEN
            CALL 'eco_boc' USING SQLTYPE, DESCLA OF tabdes, SQLLEN
            MOVE 62 TO SQLLEN
            CALL 'eco_boc' USING SQLTYPE, DESDES OF tabdes, SQLLEN
            MOVE 0 TO SQLVALUE
            CALL 'eco_slc' USING SQLTEXT02, SQLINCNT, SQLOUTCNT, SQLVALU
      -    E, SQLTEXTLEN02
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE

           display 'TABDES:' tabdes
           . 
      *---------------------------------------------------------------

      *    exec sql commit   work end-exec

            CALL 'eco_cmt'
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE



      *    exec sql close database end-exec

            CALL 'eco_cdb'
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE



      *    exec sql disconnect all end-exec

            MOVE 2 TO SQLVALUE
            MOVE 0 TO SQL2TEXTLEN
            CALL 'eco_dcon' USING SQLVALUE, SQLDUMMY, SQL2TEXTLEN
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE


      *     display 'INFORMIXSERVER' upon environment-name
      *     display 'predesa2'       upon environment-value

           move 'xxxxxx@xxxxxx'         to base-datos


0871  *    exec sql
0872  *         connect to default with concurrent transaction
0873  *    end-exec

            MOVE 1 TO SQLVALUE
            MOVE 0 TO SQLTEXTLEN
            MOVE 0 TO SQL2TEXTLEN
            MOVE 0 TO SQL3TEXTLEN
            MOVE 0 TO SQLOBJLEN
            MOVE 1 TO SQLUSEFLAG
            CALL 'eco_conn' USING SQLVALUE, SQLDUMMY, SQLDUMMY, SQLDUMMY
           , SQLDUMMY, SQLUSEFLAG, SQLTEXTLEN, SQL2TEXTLEN, SQL3TEXTLEN,
            SQLOBJLEN
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE



0499  *    exec sql database :base-datos end-exec

            MOVE 0 TO SQLVALUE
            MOVE 32 TO SQLOBJLEN
            CALL 'eco_db' USING base-datos, SQLVALUE, SQLOBJLEN
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE

0500    
0501       if not (sqlcode = zeros or = -377)
0502          display 'OpBD'
0503          go to sql-error
0504       end-if
0505    
           move 'set lock mode to wait 30' to sql-m1

      *    exec sql
      *        execute immediate :sql-m1 
      *    end-exec

            MOVE 50 TO SQLTEXTLEN
            CALL 'eco_xim' USING sql-m1, SQLTEXTLEN
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE

           display 'sqlcode->' sqlcode
           move spaces to tabdes

      *    exec sql
      *         select *
      *           into :tabdes
      *           from tabdes
      *          where descod = 'UBC'
      *    end-exec

            MOVE 0 TO SQLINCNT
            MOVE 3 TO SQLOUTCNT
            CALL 'eco_oc' USING SQLOUTCNT
            MOVE 233 TO SQLTYPE
            MOVE 3 TO SQLLEN
            CALL 'eco_boc' USING SQLTYPE, DESCOD OF tabdes, SQLLEN
            MOVE 15 TO SQLLEN
            CALL 'eco_boc' USING SQLTYPE, DESCLA OF tabdes, SQLLEN
            MOVE 62 TO SQLLEN
            CALL 'eco_boc' USING SQLTYPE, DESDES OF tabdes, SQLLEN
            MOVE 0 TO SQLVALUE
            CALL 'eco_slc' USING SQLTEXT03, SQLINCNT, SQLOUTCNT, SQLVALU
      -    E, SQLTEXTLEN03
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE

           display 'TABDES:' tabdes

      *    exec sql commit   work end-exec

            CALL 'eco_cmt'
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE



      *    exec sql close database end-exec

            CALL 'eco_cdb'
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE



      *    exec sql disconnect all end-exec

            MOVE 2 TO SQLVALUE
            MOVE 0 TO SQL2TEXTLEN
            CALL 'eco_dcon' USING SQLVALUE, SQLDUMMY, SQL2TEXTLEN
            CALL 'eco_sqc' USING SQLCA, SQLCODETMP, SQLWARNTMP, SQLSTATE


      *     display 'INFORMIXSERVER' upon environment-name
      *     display 'desaobr2'       upon environment-value
           go to empezar.
           .


       sql-error.
           display 'Sqlerror->' sqlcode

           stop run
           .

如有任何帮助,我们将不胜感激

最佳答案

由于 COBOL for AIX 编译器默认将程序名称折叠为大写,因此,如果您的 COBOL 源代码包含对混合或小写字符的 C 函数的调用,则该函数将折叠为大写字符。链接器将找不到该程序,并会生成一条错误消息,指示未解析的符号。

您可以使用 PGMNAME 编译器选项来控制 COBOL for AIX 编译器处理名称的方式。默认为 PGMNAME(UPPER),但您可以使用 PGMNAME(MIXED) 按原样处理程序名,无需截断、翻译或折叠为大写。当您使用 PGMNAME(MIXED) 时,请记住使用程序名称的文字格式,即将程序名称设为文字字符串,例如“programname”,否则您将看到以下消息:

IGYDS1046-E 在“PGMNAME(MIXED)”编译器选项下发现用户定义的单词作为“PROGRAM-ID”名称。

当“PGMNAME(MIXED)”生效时,“PROGRAM-ID”名称应使用文字。名称以大写格式接受。

此外,链接时您需要指定包含以“eco_”开头的例程的 Informix 库。在您指定的 makefile 中,我没有看到列出任何 Informix 库或目标文件。

关于AIX 中的 Informix + Cobol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932819/

相关文章:

spring - 通过 SSL 连接 Informix JDBC

makefile - 在 AIX 的 native make 中实现特定于目标的变量分配

c - math.h 头文件在 AIX 上不起作用

Java FileInputStream 限制为 65535 字节

cobol - add 仅适用于 WORKING-STORAGE SECTION 中的字段吗?

java - 创建具有IBM I系列(AS400)特殊隐藏(不可打印和不可见?)字符的Java文件问题

history - COBOL 历史中未提及的部分

sql - 将一对多关系显示为 2 列 - 1 个唯一行(ID 和逗号分隔列表)

sql - 为什么我不能在 informix 子查询中使用 first

sql - Informix - 删除临时表(如果存在)