internal SymbolReferenceVariable CreateProgramNameOrProgramEntryVariable(CodeElementsParser.ProgramNameOrProgramEntryVariableContext context)
 {
     if (context.programNameReferenceOrProgramEntryReference() != null)
     {
         SymbolReference symbolReference = CobolWordsBuilder.CreateProgramNameReferenceOrProgramEntryReference(context.programNameReferenceOrProgramEntryReference());
         return new SymbolReferenceVariable(StorageDataType.ProgramNameOrProgramEntry, symbolReference);
     }
     else
     {
         StorageArea storageArea = CreateIdentifier(context.identifier());
         return new SymbolReferenceVariable(StorageDataType.ProgramNameOrProgramEntry, storageArea);
     }
 }
        internal SymbolReferenceVariable CreateProgramNameOrProgramEntryVariable(CodeElementsParser.ProgramNameOrProgramEntryVariableContext context)
        {
            SymbolReferenceVariable variable = null;
            if (context.programNameReferenceOrProgramEntryReference() != null)
            {
                SymbolReference symbolReference = CobolWordsBuilder.CreateProgramNameReferenceOrProgramEntryReference(context.programNameReferenceOrProgramEntryReference());
                variable = new SymbolReferenceVariable(StorageDataType.ProgramNameOrProgramEntry, symbolReference);
            }
            else
            {
                StorageArea storageArea = CreateIdentifier(context.identifier());
                variable = new SymbolReferenceVariable(StorageDataType.ProgramNameOrProgramEntry, storageArea);
            }

            // Collect storage area read/writes at the code element level
            if (variable.StorageArea != null)
            {
                this.storageAreaReads.Add(variable.StorageArea);
            }

            return variable;
        }