JCL_method_Generateから呼ばれる。メソッドを一つ作るモジュール。
使い方
JCL_method_Generateから呼ばれる。
//JCL_method_GenerateOne
//20130322 yabe
C_TEXT($1;$inFileText)
$inFileText:=$1 //読み込んだファイルの中身
C_TEXT($2;$inTableName)
$inTableName:=$2 //テーブル名
C_LONGINT($3;$inStartLineNr)
$inStartLineNr:=$3 //テーブル定義始まりの行番号,スタート行番号
C_TEXT($4;$inPrefix)
$inPrefix:=$4 //フィールドのプリフィックス
C_POINTER($5;$aryFileNamePtr)
$aryFileNamePtr:=$5
C_POINTER($6;$aryFileContentsPtr)
$aryFileContentsPtr:=$6
C_LONGINT($0)
ARRAY TEXT($lineAry;0)
ARRAY TEXT($itemAry;0)
C_LONGINT($numOfLines;$numOfItems)
ARRAY TEXT($aryFieldName;0) //フィールド名の配列
ARRAY TEXT($aryFieldType;0) //フィールドタイプの配列
ARRAY TEXT($aryCharLength;0) //文字長さの配列
C_TEXT($methodName)
C_TEXT($method)
$method:=""
C_DATE($date)
$date:=Current date
C_TIME($time)
$time:=Current time
C_TEXT($yearStr;$monthStr;$dayStr;$dateTimeStr;$dateStr;$timeStr)
//日付文字
$yearStr:=String(Year of($date);"####")
$monthStr:=String(Month of($date);"00")
$dayStr:=String(Day of($date);"00")
$dateStr:=$yearStr+$monthStr+$dayStr
//時刻
$timeStr:=String($time)
$timeStr:=Replace string($timeStr;":";"")
//所定文字列を作成
$dateTimeStr:=$dateStr+" "+$timeStr
ARRAY LONGINT($propertiesArray;7)
$propertiesArray{1}:=1 //メソッドが表示の時1、非表示なら0。
$propertiesArray{2}:=0 //メソッドが4DACTION、4DMETHOD、4DSCRIPTから利用可能であれば1、そうでなければ0。
$propertiesArray{3}:=0 //メソッドをWebサービスとして提供する場合1、そうでなければ0。
$propertiesArray{4}:=0 //propertiesArray{3}=1のとき、メソッドをWSDLで公開する場合1、そうでなければ0。
$propertiesArray{5}:=0 //メソッドをコンポーネントとホストデータベースで共有する場合1、そうでなければ0。
$propertiesArray{6}:=0 //メソッドがSQLから利用可能であれば1、そうでなければ0。
$propertiesArray{7}:=0 //メソッドに"サーバ上で実行"属性を設定する場合は1、そうでなければ0。
//改行で切り分ける
$numOfLines:=JCL_str_Extract ($inFileText;Char(Carriage return);->$lineAry)
//スタート行番号の次の行からフィールド定義を得る
For ($i;$inStartLineNr+1;$numOfLines)
DELETE FROM ARRAY($itemAry;1;Size of array($itemAry))
$numOfItems:=JCL_str_Extract ($lineAry{$i};Char(Tab);->$itemAry)
If (3<=$numOfItems)
If ($itemAry{1}#"_")
//最初のセルが_(アンダーバー)じゃなかったらフィールド情報取得
APPEND TO ARRAY($aryFieldName;$itemAry{1}) //フィールド名
APPEND TO ARRAY($aryFieldType;$itemAry{2}) //タイプ
APPEND TO ARRAY($aryCharLength;$itemAry{3}) //文字長さ
Else
//最初のセルが_(アンダーバー)だったらフィールド情報取得は終わり
$i:=$numOfLines+1 //ループを抜ける
End if
Else
$i:=$numOfLines+1 //ループを抜ける
End if
End for
For ($i;1;Size of array($aryFileNamePtr->))
//メソッド名生成
$methodName:=$aryFileNamePtr->{$i}
$methodName:=Replace string($methodName;"[--TABLE]";$inTableName)
$methodName:=Replace string($methodName;"[--PREFIX]";$inPrefix)
$date_time:=String(Current date)+" "+String(Current time)
//メソッド生成
$method:=$aryFileContentsPtr->{$i}
$method:=Replace string($method;"[--DATE]";$dateTimeStr)
$method:=Replace string($method;"[--TABLE]";$inTableName)
$method:=Replace string($method;"[--PREFIX]";$inPrefix)
$pos:=Position("[--FIELD]";$method)
If ($pos#0)
$len:=Length($method)
$row:=""
$newmethod:=""
For ($h;1;$len)
$chr:=Substring($method;$h;1)
$row:=$row+$chr
If ($chr=Char(Carriage return))
$pos:=Position("[--FIELD]";$row)
If ($pos#0)
For ($k;1;Size of array($aryFieldName))
//フィールド名を置換
$fieldName:=$inPrefix+"_"+$aryFieldName{$k} //20130501
//$newRow:=""
$newRow:=Replace string($row;"[--FIELD]";$fieldName)
//データ型を置換
$dataType:=JCL_tbl_DataType ($aryFieldType{$k})
$newRow:=Replace string($newRow;"[--DATATYPE]";$dataType)
//初期値を置換
$initValue:=JCL_tbl_InitValue ($aryFIeldType{$k})
$newRow:=Replace string($newRow;"[--INITVALUE]";$initValue)
$newmethod:=$newmethod+$newRow
End for
Else
$newmethod:=$newmethod+$row
End if
$row:=""
End if
End for
$method:=$newmethod
End if
//メソッドがなければ作成 //v14
METHOD SET CODE($methodName;$method)
End for
関連メソッド:JCL_method_Generate