您的位置:首页 > 其它

开发datastage parallel routine

2015-12-08 21:54 387 查看
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  datastage