2014-09-19 28 views
2

我有麻煩試圖編譯使用Informix簡單的Cobol,彙編,但它不鏈接,並生成可執行的Informix + Cobol語言在AIX

這是我得到的消息:

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具有相同的結果。

是Makefile

這是我的化妝,但我也嘗試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 [email protected] 
#  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 [email protected] 
################################################################################ 

# '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 [email protected] $(COB_OPTS) $(DB2_COB_OPTS) $(LINK_OPTS) 

## prar ficheros informix 

.eco: 
    $(ESQLCOBOL) $< -o [email protected] 

## .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 [email protected] $(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 '[email protected]' 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 '[email protected]'   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 
      . 

任何幫助,將不勝感激

+0

快速搜索得到這可能有所幫助,http://www.linuxmisc.com/11-unix-aix/20032521df31cb0b.htm。你是如何得到兩個有三個觀點的問題提案?幸運。 – 2014-09-19 11:34:43

+0

謝謝,但它似乎並不一樣,但我會嘗試。 – 2014-09-19 11:48:51

+0

我打算建議把它帶到IBM的DeveloperWorks :-)我給出的鏈接包括'ld:0711-317錯誤:未定義的符號:.getenv',除了大小寫之外,它是您所擁有的。 – 2014-09-19 11:58:56

回答

2

由於對AIX編譯COBOL摺疊程序名稱默認爲大寫,如果你有COBOL後包含以混合或小寫字符調用C函數的源代碼,此函數將被摺疊爲大寫字符。鏈接程序不會找到該程序,並會生成一條錯誤消息,指示未解析的符號。

您可以使用PGMNAME編譯器選項來控制COBOL for AIX編譯器如何處理名稱。默認值是PGMNAME(UPPER),但您可以使用PGMNAME(MIXED)按原樣處理程序名稱,而不用截斷,翻譯或摺疊爲大寫。當您使用PGMNAME(MIXED)時,請記住使用程序名的文字格式,即使程序名爲文字字符串,例如「programname」,否則您將看到以下消息:

IGYDS1046 -EA用戶定義的單詞在「PGMNAME(MIXED)」編譯器選項下被找到爲「PROGRAM-ID」名稱。

當「PGMNAME(MIXED)」有效時,「PROGRAM-ID」名稱需要一個文字。該名稱以大寫格式接受。

另外,鏈接時,您需要指定包含以「eco_」開頭的例程的Informix庫。在您指定的生成文件中,我沒有看到列出的任何Informix庫或對象文件。