//////////////////// // PROCEDURE CALL // //////////////////// public override void EnterTcCallStatement(CodeElementsParser.TcCallStatementContext context) { var name = CobolWordsBuilder.CreateFunctionNameReference(context.functionNameReference()); var inputs = new List<CallSiteParameter>(); SyntaxProperty<ParameterSharingMode> mode = null; foreach(var p in context.callInputParameter()) { CreateSharingMode(p, ref mode); // TCRFUN_INPUT_BY inputs.Add(new CallSiteParameter { SharingMode = mode, StorageAreaOrValue = CobolExpressionsBuilder.CreateSharedVariableOrFileName(p.sharedVariableOrFileName()), }); } var inouts = new List<CallSiteParameter>(); foreach(var p in context.callInoutParameter()) { inouts.Add(new CallSiteParameter { // TCRFUN_CALL_INOUT_AND_OUTPUT_BY_REFERENCE SharingMode = new SyntaxProperty<ParameterSharingMode>(ParameterSharingMode.ByReference, null), StorageAreaOrValue = new Variable(CobolExpressionsBuilder.CreateSharedStorageArea(p.sharedStorageArea1())), }); } var outputs = new List<CallSiteParameter>(); foreach(var p in context.callOutputParameter()) { outputs.Add(new CallSiteParameter { // TCRFUN_CALL_INOUT_AND_OUTPUT_BY_REFERENCE SharingMode = new SyntaxProperty<ParameterSharingMode>(ParameterSharingMode.ByReference, null), StorageAreaOrValue = new Variable(CobolExpressionsBuilder.CreateSharedStorageArea(p.sharedStorageArea1())), }); } Context = context; CodeElement = new ProcedureStyleCallStatement(new ProcedureCall(name, inputs,inouts,outputs)); }
internal FunctionCall CreateUserDefinedFunctionCall(CodeElementsParser.UserDefinedFunctionCallContext context) { var name = CobolWordsBuilder.CreateFunctionNameReference(context.functionNameReference()); return new UserDefinedFunctionCall(name, CreateArguments(context.argument())); }