首页 > 解决方案 > 如何一次循环完整地记录一个字符?

问题描述

如何一次循环完整地记录一个字符?我想一次查询一个字符的 ASCII 文件中的记录,以查找和替换不可打印的字符。我尝试使用循环条件但没有运气。提前感谢您的帮助。

标签: datastage

解决方案


是的,这在 DataStage Transformer 中是可能的。

“循环条件”每次迭代都会创建一个新的输出行。它对接收到的每一行进行操作。您可能希望向输出链接添加一个约束,该约束仅在您的循环迭代完成时才成立(对于该行)。

一个小代码,用 '?' 替换每个 'ä' 通过逐个字符循环:

// Input Link "DSLink2" 
// provides a column named "text"


// Stage Variables:

NVarCHar(20) svLine := DSLink2.text
NChar(1)     svReplacementChar := "?"


// Loop Variables:

NChar(1)     lvCharToTest
Bit          lvCharOK := 0
NVarCHar(20) lvNewLine := ''
Integer      i := 0


// Loop Condition:

loop while (i < Len(svLine)) {
  i = i + 1
  lvCharToTest := svLine[i,1]

  // replace by proper test condition or function according to your needs:
  lvCharOK     := lvCharToTest = 'ä' 

  if (lvCharOK) {
    lvNewLine = lvNewLine + lvCharToTest
  }
  else {
    lvNewLine = lvNewLine + svReplacementChar
  }
}

// DSLink4_output:

If (i = Len(svLine)) {
  DSLInk4_output.text := lvNewLine
}

显示此示例的 Transformer 阶段的屏幕截图


推荐阅读