書きたいことが無かったわけじゃなけど、なんだろうなぁ.....3年前にも書いたけど、他で書き散らしているから、あんまりここに書くほどじゃないなんて感覚になってるな。
で、Talend Open Studioでのお話し。
お仕事でちょっと触るようになったので調べてみたりしたんだけれど、日本語の情報が少ないのね。結構困ったりもした。
この間、ホストからのS9形式の文字列を、int型にしたくて試行錯誤してた。
使う人も居ないかもしれないけれど、自分のメモとして公開。
/**
* S9toInt: S9 Format Strings to Int.
*
*
* {talendTypes} int
*
* {Category} User Defined
*
* {param} String origin: The original S9 Format strings to convert int.
*
* {example} S9toInt("01234N"); ⇒ int -12345
*/
public static int S9toInt(String origin) {
if (null == origin) {
return 0;
}
String convertStrings = S9toNormalStrings(origin);
int returnValue = Integer.parseInt(convertStrings);
return returnValue;
}
/**
* S9toNormalStrings: S9 Format Strings to nomal strings.
*
*
* {talendTypes} Strings
*
* {Category} User Defined
*
* {param} String origin: The original S9 Format strings to convert normal strings.
*
* {example} S9toInt("01234N"); ⇒ string "-12345"
*/
public static String S9toNormalStrings(String origin) {
if (null == origin) {
return null;
}
String lastChar = StringHandling.RIGHT(origin,1);
String replaceChar = lastChar;
String signChar = "-";
if (lastChar.equals("J")){
replaceChar = "1";
}else if (lastChar.equals("K")){
replaceChar = "2";
}else if (lastChar.equals("L")){
replaceChar = "3";
}else if (lastChar.equals("M")){
replaceChar = "4";
}else if (lastChar.equals("N")){
replaceChar = "5";
}else if (lastChar.equals("O")){
replaceChar = "6";
}else if (lastChar.equals("P")){
replaceChar = "7";
}else if (lastChar.equals("Q")){
replaceChar = "8";
}else if (lastChar.equals("R")){
replaceChar = "9";
}else if (lastChar.equals("}")){
replaceChar = "0";
}else {
signChar = "";
}
String convertStrings = signChar
+ TalendString.talendTrim(StringHandling.LEFT(origin, StringHandling.LEN(origin)-1),'0',1)
+ replaceChar;
return convertStrings;
}
COBOLもJavaも、まともに触ったこと無かったので、結構恥ずかしい事してるかもしれませんが.....。
最後のほうの、talendTrimは、前ゼロ取るのに使っています。
0 件のコメント:
コメントを投稿