開發datastage parallel routine

1.首先用c語言編寫一個c語言程序:trans.c
#include <string.h>
#include <stdio.h>
char *transname(char *strname)
{
        char *str;
        char *str1="ZJ";
        char *str2="CRJ";
        if(strcmp(strname,str1)==0)
                str="梅西";
        else if(strcmp(strname,str2)==0)
                str="範迪塞爾";
        else str=strname;
        return str;

}
2.編譯,這一步是關鍵。必須選擇正確的編譯參數。一下是參考別人寫得Makefile文件:
CC = g++ -g -O -fPIC -c -m64
CCLIB = g++ -g -O -shared

.SUFFIXES: .c .o

APT_INCLUDE = $(APT_ORCHHOME)/include
APT_LIBDIR  = $(APT_ORCHHOME)/lib

APT_LIBS    = -lorchgeneralx86_64 -lorchsortx86_64 -lorchx86_64\
              -lorchcorex86_64 -lorchmonitorx86_64

LIB=-L$(APT_LIBDIR)  $(APT_LIBS)
INCL=-I"$(APT_INCLUDE)"

VERSION=V1.0

RM = rm -f


OBJECTS = trans.o
EXECUTE=trans.so

all: $(EXECUTE)

$(EXECUTE): $(OBJECTS)
        $(CCLIB) -o $(EXECUTE) $(LIBDIRS) $(OBJECTS) $(LIB)


.c.o:
        $(CC) -c $(INCL) $< -o $@ $(CXXFLAGS) $(CFLAGS)

clean:
        @$(RM) *.o 
3.編譯後會生成trans.o  trans.so兩個文件,其中.o是目標文件,.so是庫文件。
4.在datastage的designer中設計routine
5.設置例程的基本參數,名稱,外部函數等
需要注意的的是,按道理選擇“庫”,那麼庫路徑就應該是.so文件的路徑,選擇“對象”就應該是.o文件的路徑,但是我這裏選擇“對象”的時候,庫的路徑既可以選擇.o也可以選擇.so。選擇“庫”的時候選擇.o和選擇.so都報錯。
6.最後設置創建者和參數(主要是參數),這裏設置了一個輸入參數,且爲字符串類型
7.使用routine
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章