JCL_method_GenerateOne

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