datastagedads - 图文

发布时间 : 星期四 文章datastagedads - 图文更新完毕开始阅读

工作总结 2007 如果上述情况都核实后,仍启动失败 请使用 \来启动服务,在 dsrpcd.log 文件中看到启动日志信息,根据实际情况解决。

2.22 Locked by other user

启动DataStag Director ,Job---->Clearup Resources,在这个操作窗口中,首先选择窗口下部 \中的\你可以看到窗口显示了所有lock的信息:PID#----Lock Type----Item Id。在Item Id的列表里找到你需要重新打开的job/routine和其对应的PID#值。然后选择上半部分\中的\All\鼠标选中刚才查到的PID#,然后LogOut。 如果不使用Diretor,你可以在DS administrator中使用\或者\command,同样会列出所有的lock信息。That's Ok!

2.23 dataStage Job Log的处理

如何在操作系统层面上,使用command的到job log?

在操作系统中我们可以使用engine(UNIX DSEngine)/bin 下的命令: dsjob -log [-info | -warn]

dsjob -logsum [-type] [-max ] [-userid]

dsjob -lognewest [-userid] []

event type = INFO|WARNING|FATAL|REJECT|STARTED|RESET|BATCH

dsjob -logdetail [useid] 可以编辑shell或者bat文件,将所有的job log输出。 在datastage内部有其相应的function: DSGetLogEntry DSGetLogSummary DSGetNewestLogId

2.24 一些BASIC语言中处理字符串的函数

Individual 2007-10 17 /

65

工作总结 2007 a 使用冒号\:\作为字符串连接的符号。 例如:\等价于字符串 \ 使用中括号[ ]来取出某个字符串的子串,其语法如下:

expression [ [ start, ] length ]

例如:strA=\那么strA[1,3]的意思就是从序号为1的字符开始,一共取出三个字符,其结果就是\。BASIC语言中数组或者字符串的第一个元素的序号是1。

b

c

Count (string, substring)用来计算字符串中的某个子串出现的次数。

例如:计算字符串\中的子串\出现的次数,arrCnt = Count(\\,那么arrCnt就等于2。

d Len (string) 用来计算字符串中包含的字符的个数。 例如:Len(\的值就是3。

e TRIMF (string) 用来删掉字符串首部的空格。 TRIMB (string) 用来删掉字符串尾部的空格。

例如,字符串strA=\,其首尾各有多个空格。经过strA= TRIMF (strA)和strA= TRIMB (strA)这样的处理就可以除掉字符串首尾的所有空格了,其结果是\。

f Index (string, substring, instance) 用来得到字符串中的某个子串的位置。其中instance表示这个子串是在整个字符串中是第几次出现。

例如:字符串为\,要计算子串\第二次出现在字符串中的位置。Index (\的结果就是5。

2.25 BASIC程序中使用到的一些语法知识

(1). BASIC语言有四种符号用来标记注释,分别是REM,*,! ,$*。例如,

*Initial. Validate the input parameters.

这一行以\星号开头,就表示这一行内容是程序的注释。

(2). 条件判断语句,其语法结构如下:

If condition Then statements End

[Else statements End]

其中condition可以是一个数字,也可以是一个比较关系式。当条件为真时,程序执行Then后面的表达式;当条件为假时,则会执行Else后面的表达式。在Basic语言中,逻辑关系运算符是这样的:

? AND (或者符号 &),表示逻辑与的关系。

Individual 2007-10 18 /

65

工作总结 2007 ? ? 例如:

OR (或者 !),表示逻辑或的关系。 NOT,表示逻辑非的关系。 If bitCount > arrCnt Then

Ans=\ Call DSLogWarn(Ans,\ GoTo ExitFunc End

由BitValue转化而来的二进制数的位数大于子串的个数时,就在日志信息中告诉用户BitValue的值和OriStr的值是不可能一一对应的,输入的数据有错误。

If BitValue >= 0 AND Count(BitValue, \ mask=Oconv(BitValue, \End Else

Ans=\ Call DSLogWarn(Ans,\ GoTo ExitFunc End

当输入变量BitValue的值大于零且不是小数的时候,就把它转化为二进制的数;否则为用户提出警告信息并且离开这个函数。

(3). 使用BASIC自带的一些功能函数。

Oconv(expression, conversion)

其中expression表示一个字符串,conversion则表示这个字符串的输出格式。 Oconv(\的功能是把十进制数\,转化为二进制数\;而 Oconv(\的功能是把十进制数\的小数点左移一位,转化为\。 DSLogInfo (Message, CallingProgName)和DSLogWarn (Message, CallingProgName) 的功能十分相似,都是在执行Server Job的时候,输入一些必要的日志信息,帮助用户了解程序的执行情况。其中Message为输出的日志信息的内容,CallingProgName就是调用这个函数的程序名。区别在于DSLogInfo输出的仅仅是普通的日志信息,而DSLogWarn则是输出一些警告的信息给用户。

例如:

Ans=\Call DSLogWarn(Ans,\

Call DSLogInfo(\

(4). 两种循环条件语句

a). For…Next语句,其基本语法如下:

For variable = start To end [Step increment] [loop.statements] Next [variable]

其中start To end定义了变量变化的区间;而increment定义了每次变量增加的值,当start的值大于end的值,increment的值可以是负数。

For num = 1 To arrCnt - bitCount mask = \

Individual 2007-10 19 /

65

工作总结 Next num 2007 如果二进制数的位数小于子串的个数,则在二进制数mask的前面补上\。比如,OriStr中有三个子串\,BitValue的值为2,把十进制的数\转化为二进制的数\。这时,二进制数的位数小于子串的个数,就需要在二进制数前面补上\,使其变成\才能和三个子串一一对应起来。

b). Loop…Repeat语句,其基本语法如下:

Loop

[statements]

[While | Until condition Do] [statements] Repeat

其中,Loop定义了循环的开始,Repeat定义了循环的结束。

While condition Do 的含义是,当条件为真的时候执行循环体中的代码。当条件为假的时候,退出循环。 Until condition Do 的含义正好相反,当条件为假的时候执行循环体中的代码。当条件为真的时候则退出循环。 例如:

pos = 1 start = 1 Ans=\ Loop

While pos <= arrCnt Do

idx = Index(proStr,separator,pos)

If mask[pos,1] = \

subStr = proStr[start,idx - start]

subStr=trim(subStr)

*make sure every substring matches the specified pattern If subStr match \ Ans=Ans:\ End Else

Ans=\ Call DSLogWarn(Ans,\ GoTo ExitFunc End

End

start = idx+1 pos+=1

Individual 2007-10 20 /

65

联系合同范文客服:xxxxx#qq.com(#替换为@)