Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » ATL » [ATL] EMF VMException: Cannot create OUT!...
[ATL] EMF VMException: Cannot create OUT!... [message #1046824] Mon, 22 April 2013 12:30
Gunnar Arndt is currently offline Gunnar Arndt
Messages: 57
Registered: June 2012
Member
Hi members,

I have encountered a problem with my ATL transformation running on EMFVM. As far as I can tell, it occurs only when creating output model elements of the class org.iso.otx.ConditionHeader (see code below). I have come to that conclusion by commenting out the creation of the ConditionHeader that causes the message below; in that case, the same error occurs in another (called) rule when creating a ConditionHeader, too.
The two input models for which this issue occurs are slightly larger than the other ones I normally use, i.e. they are 3 and 5 MB in size (of the XML file).
As my transformation heavily relies on recursion by helpers and lazy rules, I'm wondering if a stack overflow might be the problem; on the other hand, I've had that problem months ago with a clear error message, and it could be avoided by setting the thread stack size to 8MB with -Xss8m as a JVM parameter.

Please note that it only occurs with the mentioned two input models, not for the dozens of other input models I've tested before, which definitely use the problematic rules, too. And there are other rules which create ConditionHeaders, too, but do not run into an Exception.

Can you give me a hint what that error message (VMException: Cannot create OUT!ConditionHeader) really means? How to find out why it cannot be created?
Thanks in advance!


The first rule which causes the problem:

helper context transformate!BooleanTestTacticTransformer def: growSelfFlow(tacticNode:
		transformate!TacticNodeTransformer, otxFlow: otx!Flow): OclAny =
	thisModule->BooleanTestTactic2Branch(tacticNode, self, otxFlow);

lazy rule BooleanTestTactic2Branch {
	from
		tacticNode: transformate!TacticNodeTransformer,
		source: transformate!BooleanTestTacticTransformer,
		otxFlow: otx!Flow
	to
		otxBranch: otx!Branch (
			id <- thisModule->getId(),
			name <- thisModule->createValidName(tacticNode.name),
			specification <-
				if source.description = '' then
					'Test a Boolean value.'
				else
				    source.description
				endif,
			metaData <- thisModule->createMetaData(source.sourceUrl,
				'BooleanTestTactic2Branch::otxBranch'),
			realisation <- otxBranchRealisation
		),
		otxBranchRealisation: otx!BranchRealisation (
			"if" <- otxIfConditionalFlow,
			"else" <- otxElseFlow
		),
		otxIfConditionalFlow: otx!ConditionalFlow (
			condition <- otxConditionHeader,
			flow <- otxIfFlow
		),
		otxIfFlow: otx!Flow (
		),
		otxElseFlow: otx!Flow (
		),
		otxConditionHeader: otx!ConditionHeader (
			id <- thisModule->getId(),
			name <- thisModule->createValidName(source.name),
			specification <- 'Test if the boolean value \'' +
				source.target->getDeclarationName() +
				'\' evaluates to \'true\'.',
			realisation <- source.target->createTerm()
		)
	do {
	    -- First add the local output to the Flow,
		otxFlow.branch <- otxFlow.branch->append(otxBranch);
	    -- then continue transformation in order to maintain the correct
  		-- order of Nodes in the Flow.
		thisModule->growPredecessorFlowFromMap(tacticNode.successors, 'Pass',
				otxIfFlow);
		thisModule->growPredecessorFlowFromMap(tacticNode.successors, 'Fail',
				otxElseFlow);
	}
}


The second rule which causes the problem when commenting out the creation of ConditionHeader in the first rule:

rule createConditionalFlow(variableName: String, results: Set(String)) {
	to
		otxConditionalFlow: otx!ConditionalFlow (
			condition <- otxConditionHeader
		),
		otxConditionHeader: otx!ConditionHeader (
			id <- thisModule->getId(),
			name <- thisModule->createValidName(variableName)
		)
	do {
		otxConditionalFlow;
	}	
}


The error message:

org.eclipse.m2m.atl.engine.emfvm.VMException: Cannot create OUT!ConditionHeader
	at BooleanTestTactic2Branch#74(transformate2otx.atl)
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE11, source=IN!Teste Boolean1, otxFlow=OUT!<unnamed>, ignore=OclUndefined, otxBranch=OUT!<unnamed>, otxBranchRealisation=OUT!<unnamed>, otxIfConditionalFlow=OUT!<unnamed>, otxIfFlow=OUT!<unnamed>, otxElseFlow=OUT!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[6000:2-6000:65])
		local variables: self=IN!Teste Boolean1, tacticNode=IN!NODE11, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE11, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE11, otxFlow=OUT!<unnamed>
	at growPredecessorFlowFromMap#24(transformate2otx.atl[5517:4-5517:43])
		local variables: self=transformate2otx : ASMModule, map=Sequence {IN!<unnamed>, IN!<unnamed>}, key='Pass', otxFlow=OUT!<unnamed>, kvp=IN!<unnamed>
	at TestTimerTactic2Branch#227(transformate2otx.atl[9203:3-9204:18])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE3, source=IN!Timer abfragen1, otxFlow=OUT!<unnamed>, ignore=OclUndefined, otxBranch=OUT!NODE3, otxBranchRealisation=OUT!<unnamed>, otxIfConditionalFlow=OUT!<unnamed>, otxConditionHeader=OUT!Timer_abfragen1, otxTimeout=OUT!<unnamed>, otxIfFlow=OUT!<unnamed>, otxElseFlow=OUT!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[9154:2-9154:63])
		local variables: self=IN!Timer abfragen1, tacticNode=IN!NODE3, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE3, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#134(transformate2otx.atl[911:3-911:37])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE3, otxPredecessorFlow=OUT!<unnamed>, ignore=OclUndefined, otxConditionalFlow=OUT!<unnamed>, otxBranchRealisation=OUT!<unnamed>, otxLoopAction=OUT!NODE3_LoopAssign, otxSelfFlow=OUT!<unnamed>
	at growPredecessorFlow#10(transformate2otx.atl[867:3-867:49])
		local variables: self=IN!NODE3, otxFlow=OUT!<unnamed>
	at RefreshPresenterTactic2ActionAndSuccessor#31(transformate2otx.atl[2682:10-2682:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE10, source=IN!<unnamed>, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[2663:3-2663:83])
		local variables: self=IN!<unnamed>, tacticNode=IN!NODE10, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE10, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE10, otxFlow=OUT!<unnamed>
	at growPredecessorFlowFromMap#24(transformate2otx.atl[5517:4-5517:43])
		local variables: self=transformate2otx : ASMModule, map=Sequence {IN!<unnamed>, IN!<unnamed>}, key='Pass', otxFlow=OUT!<unnamed>, kvp=IN!<unnamed>
	at BooleanTestTactic2Branch#196(transformate2otx.atl[6053:3-6054:16])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE6, source=IN!Teste Boolean1, otxFlow=OUT!<unnamed>, ignore=OclUndefined, otxBranch=OUT!NODE6, otxBranchRealisation=OUT!<unnamed>, otxIfConditionalFlow=OUT!<unnamed>, otxIfFlow=OUT!<unnamed>, otxElseFlow=OUT!<unnamed>, otxConditionHeader=OUT!Teste_Boolean1
	at growSelfFlow#4(transformate2otx.atl[6000:2-6000:65])
		local variables: self=IN!Teste Boolean1, tacticNode=IN!NODE6, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithJumps2Procedure#504(transformate2otx.atl[1901:3-1901:45])
		local variables: self=transformate2otx : ASMModule, source=IN!CB Hintergrundablauf Loop-Start, ignore=OclUndefined, otxRoot=OUT!2, otxBranchRealisation=OUT!<unnamed>, otxIf=OUT!<unnamed>, otxProcedure=OUT!CB_Hintergrundablauf_Loop_Start_3319, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxLoopDeclaration=OUT!LoopVariable, otxLoopDeclarationRealisation=OUT!<unnamed>, otxStringType=OUT!<unnamed>, otxStringLiteral=OUT!<unnamed>, otxOuterFlow=OUT!<unnamed>, otxLoop=OUT!CB_Hintergrundablauf_Loop_Start_Loop, otxLoopRealisation=OUT!<unnamed>, otxLoopConfiguration=OUT!CB_Hintergrundablauf_Loop_Start_LoopHeader, otxInnerFlow=OUT!<unnamed>, otxWhileLoop=OUT!<unnamed>, otxTrue=OUT!<unnamed>, otxBranch=OUT!CB_Hintergrundablauf_Loop_Start_Branch, otxIfFlow=OUT!<unnamed>
	at getProcedure#16(transformate2otx.atl[3881:3-3881:44])
		local variables: self=IN!CB Hintergrundablauf Loop-Start, predecessor=<null>, ignore=OclUndefined
	at Tree2Action#24(transformate2otx.atl[1738:4-1738:26])
		local variables: self=transformate2otx : ASMModule, source=IN!CB Hintergrundablauf Loop-Start, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at Tree2ActionAndSuccessor#21(transformate2otx.atl[1719:3-1719:44])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE4, source=IN!CB Hintergrundablauf Loop-Start, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[1640:3-1640:65])
		local variables: self=IN!CB Hintergrundablauf Loop-Start, tacticNode=IN!NODE4, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE4, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#134(transformate2otx.atl[911:3-911:37])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE4, otxPredecessorFlow=OUT!<unnamed>, ignore=OclUndefined, otxConditionalFlow=OUT!<unnamed>, otxBranchRealisation=OUT!<unnamed>, otxLoopAction=OUT!NODE4_LoopAssign, otxSelfFlow=OUT!<unnamed>
	at growPredecessorFlow#10(transformate2otx.atl[867:3-867:49])
		local variables: self=IN!NODE4, otxFlow=OUT!<unnamed>
	at Tree2ActionAndSuccessor#30(transformate2otx.atl[1722:10-1722:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE3, source=IN!CB Hintergrundablauf Start, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[1640:3-1640:65])
		local variables: self=IN!CB Hintergrundablauf Start, tacticNode=IN!NODE3, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE3, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE3, otxFlow=OUT!<unnamed>
	at ExceptionHandlerNode2Handler#304(transformate2otx.atl[2080:3-2080:56])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE7, otxFlow=OUT!<unnamed>, otxHandler=OUT!NODE7, otxHandlerRealisation=OUT!<unnamed>, otxTryFlow=OUT!<unnamed>, otxCatchingFlow=OUT!<unnamed>, otxCatchFlow=OUT!<unnamed>, otxCatchHeader=OUT!NODE7_CatchHeader, otxCatchRealisation=OUT!<unnamed>, otxExceptionVariable=OUT!NODE7_3306, otxUserExceptionType=OUT!<unnamed>, otxUserExceptionLiteral=OUT!<unnamed>, otxQualifier=OUT!<unnamed>, otxText=OUT!<unnamed>
	at growSelfFlow#3(transformate2otx.atl[936:2-936:57])
		local variables: self=IN!NODE7, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE7, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithJumps2Procedure#504(transformate2otx.atl[1901:3-1901:45])
		local variables: self=transformate2otx : ASMModule, source=IN!Hintergrundablauf, ignore=OclUndefined, otxRoot=OUT!2, otxBranchRealisation=OUT!<unnamed>, otxIf=OUT!<unnamed>, otxProcedure=OUT!Hintergrundablauf_3297, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxLoopDeclaration=OUT!LoopVariable, otxLoopDeclarationRealisation=OUT!<unnamed>, otxStringType=OUT!<unnamed>, otxStringLiteral=OUT!<unnamed>, otxOuterFlow=OUT!<unnamed>, otxLoop=OUT!Hintergrundablauf_Loop, otxLoopRealisation=OUT!<unnamed>, otxLoopConfiguration=OUT!Hintergrundablauf_LoopHeader, otxInnerFlow=OUT!<unnamed>, otxWhileLoop=OUT!<unnamed>, otxTrue=OUT!<unnamed>, otxBranch=OUT!Hintergrundablauf_Branch, otxIfFlow=OUT!<unnamed>
	at getProcedure#16(transformate2otx.atl[3881:3-3881:44])
		local variables: self=IN!Hintergrundablauf, predecessor=IN!Ansteuerung, ignore=OclUndefined
	at getSpecification#38(transformate2otx.atl[3602:8-3602:39])
		local variables: self=IN!Ansteuerung, ignore=OclUndefined
	at Presenter2Screen_ScreenSignature#208(transformate2otx.atl[3581:14-3581:40])
		local variables: self=transformate2otx : ASMModule, source=IN!Ansteuerung, basicName='Ansteuerung', screenSignatureId='3276', screenSignatureName='Ansteuerung_3276', otxRoot=OUT!2, otxScreenSignature=OUT!Ansteuerung_3276, otxScreenSignatureRealisation=OUT!<unnamed>, otxScreenParameterDeclarations=OUT!<unnamed>, otxStringType=OUT!<unnamed>, otxScreenOutParameterDeclarationRealisation=OUT!<unnamed>, otxScreenOutParameterDeclaration=OUT!Ansteuerung_OutParam
	at Presenter2Screen#84(transformate2otx.atl[3389:5-3389:57])
		local variables: self=transformate2otx : ASMModule, predecessor=IN!NODE2, source=IN!Ansteuerung, otxFlow=OUT!<unnamed>, otxRoot=OUT!2, basicName='Ansteuerung', otxAction=OUT!Action_3275, otxActionRealisation=hmi!<unnamed>, otxScreenVariable=hmi!<unnamed>
	at Presenter2ScreenAndSuccessor#31(transformate2otx.atl[3362:3-3362:61])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE2, source=IN!Ansteuerung, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[3343:3-3343:70])
		local variables: self=IN!Ansteuerung, tacticNode=IN!NODE2, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at SetVariableTactic2ActionAndSuccessor#40(transformate2otx.atl[5228:10-5228:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE10, source=IN!Setze Boolean1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[5206:2-5206:77])
		local variables: self=IN!Setze Boolean1, tacticNode=IN!NODE10, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE10, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE10, otxFlow=OUT!<unnamed>
	at Tree2ActionAndSuccessor#30(transformate2otx.atl[1722:10-1722:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE6, source=IN!CB vor Ansteuerung, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[1640:3-1640:65])
		local variables: self=IN!CB vor Ansteuerung, tacticNode=IN!NODE6, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at ExceptionHandlerNode2Handler#304(transformate2otx.atl[2080:3-2080:56])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE4, otxFlow=OUT!<unnamed>, otxHandler=OUT!NODE4, otxHandlerRealisation=OUT!<unnamed>, otxTryFlow=OUT!<unnamed>, otxCatchingFlow=OUT!<unnamed>, otxCatchFlow=OUT!<unnamed>, otxCatchHeader=OUT!NODE4_CatchHeader, otxCatchRealisation=OUT!<unnamed>, otxExceptionVariable=OUT!NODE4_3258, otxUserExceptionType=OUT!<unnamed>, otxUserExceptionLiteral=OUT!<unnamed>, otxQualifier=OUT!<unnamed>, otxText=OUT!<unnamed>
	at growSelfFlow#3(transformate2otx.atl[936:2-936:57])
		local variables: self=IN!NODE4, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE4, otxFlow=OUT!<unnamed>
	at SetVariableTactic2ActionAndSuccessor#40(transformate2otx.atl[5228:10-5228:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE14, source=IN!Set Boolean1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[5206:2-5206:77])
		local variables: self=IN!Set Boolean1, tacticNode=IN!NODE14, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE14, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE14, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithoutJumps2Procedure#192(transformate2otx.atl[1972:3-1972:43])
		local variables: self=transformate2otx : ASMModule, source=IN!Ansteuerung, otxRoot=OUT!2, otxProcedure=OUT!Ansteuerung_3250, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxFlow=OUT!<unnamed>
	at getProcedure#12(transformate2otx.atl[3883:6-3883:50])
		local variables: self=IN!Ansteuerung, predecessor=<null>, ignore=OclUndefined
	at Tree2Action#24(transformate2otx.atl[1738:4-1738:26])
		local variables: self=transformate2otx : ASMModule, source=IN!Ansteuerung, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at Tree2ActionAndSuccessor#21(transformate2otx.atl[1719:3-1719:44])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE2, source=IN!Ansteuerung, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[1640:3-1640:65])
		local variables: self=IN!Ansteuerung, tacticNode=IN!NODE2, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at SetVariableTactic2ActionAndSuccessor#40(transformate2otx.atl[5228:10-5228:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE4, source=IN!Set Boolean1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[5206:2-5206:77])
		local variables: self=IN!Set Boolean1, tacticNode=IN!NODE4, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE4, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE4, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithoutJumps2Procedure#192(transformate2otx.atl[1972:3-1972:43])
		local variables: self=transformate2otx : ASMModule, source=IN!Ansteuerung, otxRoot=OUT!2, otxProcedure=OUT!Ansteuerung_3244, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxFlow=OUT!<unnamed>
	at getProcedure#12(transformate2otx.atl[3883:6-3883:50])
		local variables: self=IN!Ansteuerung, predecessor=<null>, ignore=OclUndefined
	at Tree2Action#24(transformate2otx.atl[1738:4-1738:26])
		local variables: self=transformate2otx : ASMModule, source=IN!Ansteuerung, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at Tree2ActionAndSuccessor#21(transformate2otx.atl[1719:3-1719:44])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE6, source=IN!Ansteuerung, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[1640:3-1640:65])
		local variables: self=IN!Ansteuerung, tacticNode=IN!NODE6, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at Presenter2ScreenAndSuccessor#40(transformate2otx.atl[3365:10-3365:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE2, source=IN!Two-Pane Presenter1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[3343:3-3343:70])
		local variables: self=IN!Two-Pane Presenter1, tacticNode=IN!NODE2, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at SetVariableTactic2ActionAndSuccessor#40(transformate2otx.atl[5228:10-5228:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE10, source=IN!Setze Boolean1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[5206:2-5206:77])
		local variables: self=IN!Setze Boolean1, tacticNode=IN!NODE10, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE10, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE10, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithoutJumps2Procedure#192(transformate2otx.atl[1972:3-1972:43])
		local variables: self=transformate2otx : ASMModule, source=IN!Förderleistung, otxRoot=OUT!2, otxProcedure=OUT!Foerderleistung_3234, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxFlow=OUT!<unnamed>
	at getProcedure#12(transformate2otx.atl[3883:6-3883:50])
		local variables: self=IN!Förderleistung, predecessor=<null>, ignore=OclUndefined
	at Tree2ActionAndBranch#28(transformate2otx.atl[1660:4-1660:26])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE8, source=IN!Förderleistung, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at growSelfFlow#16(transformate2otx.atl[1638:3-1638:62])
		local variables: self=IN!Förderleistung, tacticNode=IN!NODE8, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE8, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE8, otxFlow=OUT!<unnamed>
	at createBranches#74(transformate2otx.atl[429:5-429:72])
		local variables: self=transformate2otx : ASMModule, successors=Sequence {IN!<unnamed>, IN!<unnamed>, IN!<unnamed>}, otxBranchRealisation=OUT!<unnamed>, variableName='ReturnVariable', doIf=false, successor=IN!<unnamed>
	at Tree2ActionAndBranch#229(transformate2otx.atl[1702:3-1703:32])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE2, source=IN!Startbaum_Kraftstoffdruck_Versuch_2, otxFlow=OUT!<unnamed>, otxProcedure=OUT!Startbaum_Kraftstoffdruck_Versuch_2_1872, otxAction=OUT!NODE2, otxActionRealisation=OUT!<unnamed>, otxArguments=OUT!<unnamed>, otxOutArgument=OUT!<unnamed>, otxOutVariable=OUT!ReturnVariable, otxBranch=OUT!Branch_3232, otxBranchRealisation=OUT!<unnamed>
	at growSelfFlow#16(transformate2otx.atl[1638:3-1638:62])
		local variables: self=IN!Startbaum_Kraftstoffdruck_Versuch_2, tacticNode=IN!NODE2, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithoutJumps2Procedure#192(transformate2otx.atl[1972:3-1972:43])
		local variables: self=transformate2otx : ASMModule, source=IN!M3 Ablauf, otxRoot=OUT!2, otxProcedure=OUT!M3_Ablauf_1868, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxFlow=OUT!<unnamed>
	at getProcedure#12(transformate2otx.atl[3883:6-3883:50])
		local variables: self=IN!M3 Ablauf, predecessor=<null>, ignore=OclUndefined
	at Tree2ActionAndBranch#28(transformate2otx.atl[1660:4-1660:26])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE13, source=IN!M3 Ablauf, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at growSelfFlow#16(transformate2otx.atl[1638:3-1638:62])
		local variables: self=IN!M3 Ablauf, tacticNode=IN!NODE13, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE13, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE13, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithoutJumps2Procedure#192(transformate2otx.atl[1972:3-1972:43])
		local variables: self=transformate2otx : ASMModule, source=IN!Ablauf_Istwerte_größer, otxRoot=OUT!2, otxProcedure=OUT!Ablauf_Istwerte_groesser_1865, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxFlow=OUT!<unnamed>
	at getProcedure#12(transformate2otx.atl[3883:6-3883:50])
		local variables: self=IN!Ablauf_Istwerte_größer, predecessor=<null>, ignore=OclUndefined
	at Tree2ActionAndBranch#28(transformate2otx.atl[1660:4-1660:26])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE11, source=IN!Ablauf_Istwerte_größer, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at growSelfFlow#16(transformate2otx.atl[1638:3-1638:62])
		local variables: self=IN!Ablauf_Istwerte_größer, tacticNode=IN!NODE11, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE11, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE11, otxFlow=OUT!<unnamed>
	at Presenter2ScreenAndSuccessor#40(transformate2otx.atl[3365:10-3365:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE14, source=IN!Presenter1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#10(transformate2otx.atl[3343:3-3343:70])
		local variables: self=IN!Presenter1, tacticNode=IN!NODE14, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE14, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE14, otxFlow=OUT!<unnamed>
	at growPredecessorFlowFromMap#24(transformate2otx.atl[5517:4-5517:43])
		local variables: self=transformate2otx : ASMModule, map=Sequence {IN!<unnamed>, IN!<unnamed>}, key='Pass', otxFlow=OUT!<unnamed>, kvp=IN!<unnamed>
	at BooleanTestTactic2Branch#196(transformate2otx.atl[6053:3-6054:16])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE8, source=IN!Test Boolean1, otxFlow=OUT!<unnamed>, ignore=OclUndefined, otxBranch=OUT!NODE8, otxBranchRealisation=OUT!<unnamed>, otxIfConditionalFlow=OUT!<unnamed>, otxIfFlow=OUT!<unnamed>, otxElseFlow=OUT!<unnamed>, otxConditionHeader=OUT!Test_Boolean1
	at growSelfFlow#4(transformate2otx.atl[6000:2-6000:65])
		local variables: self=IN!Test Boolean1, tacticNode=IN!NODE8, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE8, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE8, otxFlow=OUT!<unnamed>
	at growPredecessorFlowFromMap#24(transformate2otx.atl[5517:4-5517:43])
		local variables: self=transformate2otx : ASMModule, map=Sequence {IN!<unnamed>, IN!<unnamed>}, key='Fail', otxFlow=OUT!<unnamed>, kvp=IN!<unnamed>
	at BooleanTestTactic2Branch#202(transformate2otx.atl[6055:3-6056:18])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE6, source=IN!Test Boolean1, otxFlow=OUT!<unnamed>, ignore=OclUndefined, otxBranch=OUT!NODE6, otxBranchRealisation=OUT!<unnamed>, otxIfConditionalFlow=OUT!<unnamed>, otxIfFlow=OUT!<unnamed>, otxElseFlow=OUT!<unnamed>, otxConditionHeader=OUT!Test_Boolean1
	at growSelfFlow#4(transformate2otx.atl[6000:2-6000:65])
		local variables: self=IN!Test Boolean1, tacticNode=IN!NODE6, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE6, otxFlow=OUT!<unnamed>
	at createBranches#74(transformate2otx.atl[429:5-429:72])
		local variables: self=transformate2otx : ASMModule, successors=Sequence {IN!<unnamed>, IN!<unnamed>}, otxBranchRealisation=OUT!<unnamed>, variableName='ReturnVariable', doIf=false, successor=IN!<unnamed>
	at Tree2ActionAndBranch#229(transformate2otx.atl[1702:3-1703:32])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE19, source=IN!Istwerte_gr_oder_kl, otxFlow=OUT!<unnamed>, otxProcedure=OUT!Istwerte_gr_oder_kl_26, otxAction=OUT!NODE19, otxActionRealisation=OUT!<unnamed>, otxArguments=OUT!<unnamed>, otxOutArgument=OUT!<unnamed>, otxOutVariable=OUT!ReturnVariable, otxBranch=OUT!Branch_75, otxBranchRealisation=OUT!<unnamed>
	at growSelfFlow#16(transformate2otx.atl[1638:3-1638:62])
		local variables: self=IN!Istwerte_gr_oder_kl, tacticNode=IN!NODE19, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE19, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE19, otxFlow=OUT!<unnamed>
	at createBranches#74(transformate2otx.atl[429:5-429:72])
		local variables: self=transformate2otx : ASMModule, successors=Sequence {IN!<unnamed>}, otxBranchRealisation=OUT!<unnamed>, variableName='ReturnVariable', doIf=false, successor=IN!<unnamed>
	at Presenter2ScreenAndBranch#309(transformate2otx.atl[3489:3-3490:32])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE2, source=IN!Istwerte, otxFlow=OUT!<unnamed>, otxRoot=OUT!2, basicName='Istwerte', otxAction=OUT!Action_18, otxActionRealisation=OUT!<unnamed>, otxScreenVariable=OUT!Istwerte_23, otxScreenArguments=OUT!<unnamed>, otxOutVariable=OUT!ReturnVariable, otxScreenOutArgument=OUT!<unnamed>, otxBranch=OUT!Branch_24, otxBranchRealisation=OUT!<unnamed>
	at growSelfFlow#16(transformate2otx.atl[3341:3-3341:67])
		local variables: self=IN!Istwerte, tacticNode=IN!NODE2, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at StartCommunicationTactic2ActionAndSuccessor#31(transformate2otx.atl[2518:10-2518:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE16, source=IN!Kommunikation starten1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[2499:3-2499:85])
		local variables: self=IN!Kommunikation starten1, tacticNode=IN!NODE16, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE16, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE16, otxFlow=OUT!<unnamed>
	at SetVariableTactic2ActionAndSuccessor#40(transformate2otx.atl[5228:10-5228:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE20, source=IN!Set Boolean1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[5206:2-5206:77])
		local variables: self=IN!Set Boolean1, tacticNode=IN!NODE20, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE20, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE20, otxFlow=OUT!<unnamed>
	at SetVariableTactic2ActionAndSuccessor#40(transformate2otx.atl[5228:10-5228:56])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE3, source=IN!Set Boolean1, otxFlow=OUT!<unnamed>, successor=IN!<unnamed>
	at growSelfFlow#4(transformate2otx.atl[5206:2-5206:77])
		local variables: self=IN!Set Boolean1, tacticNode=IN!NODE3, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE3, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE3, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithoutJumps2Procedure#192(transformate2otx.atl[1972:3-1972:43])
		local variables: self=transformate2otx : ASMModule, source=IN!Selbstanpassung_Prüfung, otxRoot=OUT!2, otxProcedure=OUT!Selbstanpassung_Pruefung_8, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxFlow=OUT!<unnamed>
	at getProcedure#12(transformate2otx.atl[3883:6-3883:50])
		local variables: self=IN!Selbstanpassung_Prüfung, predecessor=<null>, ignore=OclUndefined
	at DiagTreeHeading2ActionAndBranch#123(transformate2otx.atl[1598:20-1598:53])
		local variables: self=transformate2otx : ASMModule, tacticNode=IN!NODE2, source=IN!DiagTree-Ueberschrift1, otxFlow=OUT!<unnamed>, otxRoot=OUT!2, basicName='DiagTree_Ueberschrift1', otxAction=OUT!NODE2, otxActionRealisation=OUT!<unnamed>, otxArguments=OUT!<unnamed>, otxOutArgument=OUT!<unnamed>, otxOutVariable=OUT!<unnamed>, otxBranch=OUT!<unnamed>, otxBranchRealisation=OUT!<unnamed>
	at growSelfFlow#16(transformate2otx.atl[1523:3-1523:73])
		local variables: self=IN!DiagTree-Ueberschrift1, tacticNode=IN!NODE2, otxFlow=OUT!<unnamed>
	at growSelfFlow#8(transformate2otx.atl[1443:3-1443:43])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at growPredecessorFlow#5(transformate2otx.atl[871:3-871:30])
		local variables: self=IN!NODE2, otxFlow=OUT!<unnamed>
	at StartNode2Action#77(transformate2otx.atl[2013:3-2013:50])
		local variables: self=transformate2otx : ASMModule, source=IN!NODE1, otxFlow=OUT!<unnamed>, otxAction=OUT!NODE1
	at growSelfFlow#13(transformate2otx.atl[931:2-931:45])
		local variables: self=IN!NODE1, otxFlow=OUT!<unnamed>, ignore=OclUndefined
	at TreeWithoutJumps2Procedure#192(transformate2otx.atl[1972:3-1972:43])
		local variables: self=transformate2otx : ASMModule, source=IN!Pruefung_Selbstanpassung, otxRoot=OUT!2, otxProcedure=OUT!main, otxProcedureRealisation=OUT!<unnamed>, otxParameterDeclarations=OUT!<unnamed>, otxLocalDeclarations=OUT!<unnamed>, otxFlow=OUT!<unnamed>
	at getProcedure#12(transformate2otx.atl[3883:6-3883:50])
		local variables: self=IN!Pruefung_Selbstanpassung, predecessor=<null>, ignore=OclUndefined
	at Context2Document#200(transformate2otx.atl[828:9-828:26])
		local variables: self=transformate2otx : ASMModule, source=IN!<unnamed>, ignore=OclUndefined, otxRoot=OUT!2, otxGlobalDeclarations=OUT!<unnamed>, otxSignatures=OUT!<unnamed>, otxProcedures=OUT!<unnamed>, otxDeclaration=OUT!<unnamed>, otxDeclarationRealisation=OUT!<unnamed>, otxStringType=OUT!<unnamed>, t=IN!Pruefung_Selbstanpassung, ignore2=OclUndefined
	at fillSubModels#95(transformate2otx.atl[49:6-50:37])
		local variables: self=transformate2otx : ASMModule, otxDateTimeDummy=time!<unnamed>, otxDiagComDummy=diag!<unnamed>, otxDiagDataBrowsingDummy=data!<unnamed>, otxEventDummy=event!<unnamed>, otxFlashDummy=flash!<unnamed>, otxHmiDummy=hmi!<unnamed>, otxI18nDummy=i18n!<unnamed>, otxJobDummy=job!<unnamed>, otxLoggingDummy=log!<unnamed>, otxMathDummy=math!<unnamed>, otxMeasureDummy=measure!<unnamed>, otxQuantitiesDummy=quant!<unnamed>, otxStringUtilDummy=string!<unnamed>
	at main#64(transformate2otx.atl)
		local variables: self=transformate2otx : ASMModule

Previous Topic:Lazy rule
Next Topic:UML2 change type of a transformed property
Goto Forum:
  


Current Time: Fri Oct 31 09:21:01 GMT 2014

Powered by FUDForum. Page generated in 0.01940 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software