Я предполагаю, что вы хотите сделать это «самостоятельно» без внешних инструментов (более быстрый подход можно найти в конце).
Вы сначала должны «знать» свой источник:
- который компилятор это скомпилирован с (получить пособие для этого компилятора)
- , какие варианты были использованы
Тогда у вас есть для подготовки источника:
- включают в себя тетради (выполняющие заданные правила
REPLACING
, если таковые имеются)
- если источник находится в ссылочном формате свободной форме: сцепить содержимое последней строки и текущей строки, если вы нашли
-
в колонке 7
- проверка для
REPLACE
и изменить результат соответственно
- удалить все комментарии (возможно только
*
и \
в столбце 7 в формате фиксированной формы или аналогичных (расширения, такие как «переменный» формат/«терминальный» формат », ... существуют, может быть, только встроенные комментарии - когда в ссылочном формате свободной формы, в противном случае возможно встроенный комментарии *>
или специальные расширения для компилятора, такие как |
) - в зависимости от дальнейшей реорганизации, которую вы хотите сделать, может быть хорошей идеей извлечь их и сохранить они, по крайней мере, со ссылкой номер строки
вы, наконец, можно отслеживать имя процедуры со следующим правилом:
- идут назад к последнему периоду сепаратора (есть несколько правил, но правило «в хотя бы один разрыв строки, другой период, пробел запятая или точка с запятой «[Я никогда не видел последних двух в реальном коде, но это возможно» должно быть достаточно)
- проверить, существует ли только одно слово между этим разделителем период и следующий
- если это слово не зарезервировано Слово COBOL (это зависит s на вашем компиляторе), скорее всего, это имя процедуры
Начните с этого момента и проверьте вывод, а затем оцените правильность правильных ложных срабатываний или отсутствующих записей.
Если вы хотите сделать больше, чем только извлечь процедурные имена PERFORM
и GO TO
(вы должны по крайней мере проверить источники для PERFROM ... THRU
), то это может добраться до много работы ...
Faster подход с внешними инструментами:
- Выполнить COBOL компилятор на полных источников и сказать ему, чтобы сделать preparsing только - таким образом, у вас есть большая вторая точка решена уже
- если у вас есть возможность: сообщить компилятору или внешнему инструменту о создании таблицы символов/перекрестной ссылки - это скажет вам, в какой строке находится процедура, и ее имя (вы можете просто найти правильную процедуру, сравнив строку)
Только примечание: Вы можете проверить GnuCOBOL (formerly OpenCOBOL) для preparsing и/или генерации символов таблиц/перекрестные ссылки и/или printcbl для полного внешнего инструмента делает preparsing и/или cobxref для полной перекрестной ссылки поколение.
Существует вероятность того, что этот абзац фактически хранится в тетради. Если вы посмотрите на скомпилированную версию программы, вы сможете ее найти, даже если это копия. – SaggingRufus
Непонятно из вашего вопроса, что вы хотите. Как предположил @SaggingRufus, и если вы говорите о MBB Mainframe, в списке компиляции (по параметру компилятора) есть перекрестные ссылки имен процедур/данных-имен. Итак, какой компилятор и ОС вы говорите о запуске COBOL? –
@ Sandy, ответ или комментарий сработали для вас? Если да, пожалуйста, отметьте ответ, который сработал для вас, или укажите неясные точки. –