private SyntaxProperty<DataUsage> CreateUsageClause(CodeElementsParser.UsageClauseContext c)
 {
     return  CreateDataUsageProperty(DataUsage.Binary, c.BINARY()) ??
             CreateDataUsageProperty(DataUsage.Binary, c.COMP()) ??
             CreateDataUsageProperty(DataUsage.Binary, c.COMPUTATIONAL()) ??
             CreateDataUsageProperty(DataUsage.Binary, c.COMP_4()) ??
             CreateDataUsageProperty(DataUsage.Binary, c.COMPUTATIONAL_4()) ??
             CreateDataUsageProperty(DataUsage.FloatingPoint, c.COMP_1()) ??
             CreateDataUsageProperty(DataUsage.FloatingPoint, c.COMPUTATIONAL_1()) ??
             CreateDataUsageProperty(DataUsage.LongFloatingPoint, c.COMP_2()) ??
             CreateDataUsageProperty(DataUsage.LongFloatingPoint, c.COMPUTATIONAL_2()) ??
             CreateDataUsageProperty(DataUsage.PackedDecimal, c.PACKED_DECIMAL()) ??
             CreateDataUsageProperty(DataUsage.PackedDecimal, c.COMP_3()) ??
             CreateDataUsageProperty(DataUsage.PackedDecimal, c.COMPUTATIONAL_3()) ??
             CreateDataUsageProperty(DataUsage.NativeBinary, c.COMP_5()) ??
             CreateDataUsageProperty(DataUsage.NativeBinary, c.COMPUTATIONAL_5()) ??
             CreateDataUsageProperty(DataUsage.Display, c.DISPLAY_ARG()) ??
             CreateDataUsageProperty(DataUsage.DBCS, c.DISPLAY_1()) ??
             CreateDataUsageProperty(DataUsage.Index, c.INDEX()) ??
             CreateDataUsageProperty(DataUsage.National, c.NATIONAL()) ??
             CreateDataUsageProperty(DataUsage.ObjectReference, c.OBJECT()) ??
             CreateDataUsageProperty(DataUsage.ObjectReference, c.REFERENCE()) ??
             CreateDataUsageProperty(DataUsage.Pointer, c.POINTER()) ??
             CreateDataUsageProperty(DataUsage.FunctionPointer, c.FUNCTION_POINTER()) ??
             CreateDataUsageProperty(DataUsage.ProcedurePointer, c.PROCEDURE_POINTER()) ??
             null;
 }
 private void CreateSharingMode(CodeElementsParser.CallInputParameterContext parameter, ref SyntaxProperty<ParameterSharingMode> mode)
 {
     if (parameter.REFERENCE() != null) {
     mode = CobolStatementsBuilder.CreateSyntaxProperty(ParameterSharingMode.ByReference, parameter.REFERENCE());
     } else
     if (parameter.CONTENT()   != null) {
     mode = CobolStatementsBuilder.CreateSyntaxProperty(ParameterSharingMode.ByContent,   parameter.CONTENT());
     } else
     if (parameter.VALUE()     != null) {
     mode = CobolStatementsBuilder.CreateSyntaxProperty(ParameterSharingMode.ByValue,     parameter.VALUE());
     } else {
     var by = ParameterSharingMode.ByReference;
     if (mode != null) by = mode.Value;
     mode = new SyntaxProperty<ParameterSharingMode>(by, null);
     }
 }