Есть ли бесплатный (как в пиве) генератор блок-схем для кода COBOL?

Я никогда в жизни не читал COBOL, и мне поручили переписать старый код COBOL на новый язык. Существуют ли какие-либо бесплатные или бесплатные пакеты программного обеспечения, которые будут генерировать блок-схему для программы COBOL?

Я просмотрел «Visustin» и «Code Visual to Flowchart».

Визустин вырезает часть кода и делает случайные повороты в демо-версии, что делает демо менее точным.

Мне не удалось заставить визуальную блок-схему кода правильно работать с нашим кодом.

Знаете ли вы какие-либо другие пакеты, которые я мог бы попробовать?


person btelles    schedule 08.04.2010    source источник
comment
...получил задание переписать старый код COBOL на новый язык... Я почтил вас минутой молчания.   -  person Vivin Paliath    schedule 08.04.2010
comment
Посмотрите на вывод и продублируйте результаты имхо! PS остерегайтесь знака препинания (.)   -  person James Westgate    schedule 08.04.2010
comment
Ха-ха!!! Я ценю комментарии, правда.   -  person btelles    schedule 08.04.2010


Ответы (6)


Я написал простой генератор блок-схем для COBOL на python, который использует Graphiz. Это действительно тривиально и создать диаграмму .jpg, которая полезна для моих целей, возможно, она не будет такой же для вас.

В любом случае, если вы хотите, вы можете отправить мне письмо здесь http://www.contactify.com/a6148 и я пришлю тебе мой маленький скрипт. Если вы работаете в Linux, у вас почти наверняка установлен Python, в Windows вы должны установить его вместе с модулем yapgvb.

Дайте мне знать! до свидания

person synasius    schedule 08.04.2010
comment
Почему бы просто не опубликовать свой код на общедоступном сайте фрагментов кода и дать ссылку на него? - person NealB; 09.04.2010
comment
Эй, ты прав! Вот он: codepad.org/0sXIwrp2 - person synasius; 10.04.2010
comment
Я забыл сказать вам, что мой сценарий не перехватывает вызовы внешних процедур, потому что в нашем программном обеспечении cobol каждый вызов находится под меткой ... поэтому я просто перехватываю все метки; это работает для моей цели - person synasius; 10.04.2010
comment
... и он правильно обрабатывает операторы PERFORM? Проваливается из одного абзаца А в другой Б, перед лицом ВЫПОЛНЕНИЯ Б? Поток управления COBOL намного сложнее, чем вы думаете. - person Ira Baxter; 24.05.2010
comment
да, он обрабатывает оператор PERFORM! Но если у вас есть PERFORM LabelA THROUG LabelB под LabelC, вы получите ссылку только от LabelC к LabelA. Это связано с тем, что в нашем программном обеспечении мы используем оператор PERFORM THROUG только тогда, когда LabelB является меткой выхода. Как я уже говорил, этот скрипт предназначен для работы с нашим программным обеспечением, но я думаю, что его можно легко изменить, чтобы он лучше всего соответствовал вашим потребностям, поскольку Python — это простой в использовании язык. - person synasius; 28.05.2010
comment
Синасий, я в той же лодке. Я установил Python с модулем yapgvb. Я попытался запустить ваш файл в командной строке C:\Python27\Python raw.py test.CBL. Я получил сообщение «Ошибка NotImplemented». Я понятия не имею о Питоне. Не могли бы вы опубликовать дополнительные инструкции, как запустить этот файл. Я ценю вашу помощь. - person nav100; 30.08.2010

Я тебе не завидую. По большей части отслеживание программы COBOL вручную довольно просто (хотя и утомительно). Я был в такой же ситуации, и в итоге сделал это вручную. В любом случае выучить новый язык никогда не помешает, так что это не совсем напрасно.

Найдите фразу «PROCEDURE DIVISION» и начните с нее. Следуйте всем операторам «PERFORM», с которыми вы сталкиваетесь, чтобы проследить логику. Если ты не покончишь с собой, ты станешь лучше.

person brydgesk    schedule 08.04.2010
comment
Спасибо за поддержку. У меня есть около многих тысяч строк кода, на которые нужно обратить внимание, и хотя я хотел бы изучить COBOL, на данный момент это больше вопрос времени и прямой окупаемости инвестиций. Вы случайно не знаете каких-либо генераторов потока, подобных упомянутому выше? - person btelles; 08.04.2010
comment
Извините, я никогда не пользовался и не видел никаких генераторов потока, не говоря уже о бесплатных. Тем не менее, я понимаю проблему рентабельности инвестиций, COBOL обычно существует так долго и работает так хорошо, что редко кажется, что стоит тратить время и усилия на его замену. Конечно, как только все программисты на COBOL уйдут, у нас будут проблемы. - person brydgesk; 08.04.2010
comment
COBOL — несложный язык, и я подозреваю, что изучить его будет быстрее, чем автоматически переводить его в исходный код, а затем пытаться читать блок-схемы. Полезный совет: если вы думаете, что языковая конструкция, которую вы видите, слишком глупа, чтобы существовать, и должна иметь более глубокое значение, а вы находитесь в программе COBOL, вы ошибаетесь. - person David Thornley; 08.04.2010

COBOL старше нотации BNF и не может быть описан с помощью какой-либо грамматики типа LR(k). Большинство популярных стратегий лексического анализа/синтаксического анализа не работают для этого языка (по крайней мере, не без большого количества поздних ночей и птичьего языка). Следовательно, трудно найти качественные парсеры для COBOL. Те, что существуют, обычно стоят копейки.

Без надежных, свободно доступных синтаксических анализаторов ваши шансы найти бесплатные (как в речи, забудьте о пиве) инструменты для построения диаграмм для COBOL довольно малы. Все, с чем я столкнулся, (я здесь проявляю благотворительность) довольно слабое.

Создание собственных инструментов может оказаться непростой задачей. Ознакомьтесь с Грамматика COBOL. COBOL — большой язык, будьте готовы к серьезной работе.

Сначала займитесь серьезной математикой: сколько кода нужно преобразовать? Сколько стоит избавиться от COBOL? Если веские финансовые аргументы не могут быть приведены, просто живите с вашим текущим приложением COBOL.

Если у вас есть аргументы в пользу продолжения, попробуйте изучить OpenCobol в качестве отправной точки для своего кода. система анализа/преобразования. Тем не менее, вам нужно быть в курсе как C, так и COBOL, чтобы это работало. Если вы работаете с диалектом IBM COBOL и имеете доступ к компилятору мэйнфреймов IBM, загляните в параметр компилятора ADATA, это даст вам AST вашей программы. Это некоторые возможные отправные точки.

Альтернативой является получение коммерческого продукта преобразования/обновления COBOL. У меня нет большого личного опыта с этими продуктами, и я не могу рекомендовать какой-либо конкретный продукт вместо другого.

Если математика не поддерживает изучение COBOL достаточно хорошо, чтобы выполнить преобразование, тогда просто живите с существующим приложением COBOL. Вы не будете первым, кто придет к такому выводу!

person NealB    schedule 09.04.2010
comment
Фраза о том, что COBOL не может быть описан никаким LR(k), просто неверна, особенно если вы хотите делать то же самое, что ребята из GNU хотели делать для разбора C++ с помощью Bison. COBOL относительно легко анализировать с помощью парсеров GLR даже без этих хаков (у меня есть рабочий парсер IBM Enterprise, построенный таким образом). Я согласен, вы вряд ли найдете хороший из них бесплатно. - person Ira Baxter; 24.05.2010
comment
@Ира Бакстер. Я хорошо понял, синтаксические анализаторы GLR действительно решают проблему, я думал в духе классических синтаксических анализаторов LR, где разумные значения для K малы. Сколько времени вам понадобилось, чтобы написать синтаксический анализатор GLR для IBM Enterpise COBOL? Было ли много поздних ночей или нецензурной брани? - person NealB; 26.05.2010
comment
... мораль: вы действительно не хотите создавать свой собственный анализатор COBOL для одноразового инструмента. И проблема не в технологии синтаксического анализа, хотя, если вы используете более слабую технологию, это добавит вам проблем. Но это не главный источник проблемы. - person Ira Baxter; 26.05.2010

Я тоже ищу одного из них.

В настоящее время я пишу НОВЫЕ программы на языке COBOL, но менеджеру проекта нужны изображения, несмотря на то, что программы написаны, протестированы и развернуты!

Визустин выглядит хорошо, но для анализа некоторых программ требуется довольно много времени. Наверное, из-за того, что они довольно большие. Самый маленький — 3500+ строк.

Также не помогает то, что я работаю над мейнфреймом UNiSYS, используя COBOL74, а vistustin не понимает некоторые (ни какие) расширения COBOL74 для DMSII.

В любом случае, время поджимает, поэтому мы только что заказали копию. Надеюсь, это будет достаточно хорошо для тех, кто не может читать слова и хочет видеть это в виде диаграмм.

person Nev    schedule 29.04.2010

У IBM есть продукт под названием Asset Analyzer (в наши дни он, вероятно, продается как Rational Websphere Asset Analyzer или что-то в этом роде).

Он проанализирует всю вашу библиотеку исходного кода Cobol и поможет вам провести рефакторинг, а также предоставит множество отчетов о понимании программы. На самом деле он создает веб-сайт, поэтому вы можете просматривать логику своей программы на любом высоком или низком уровне, как вам нравится.

person Joe Zitzelberger    schedule 22.06.2010

Нет, не существует надежного инструмента для создания блок-схем COBOL, о котором я знаю (40-летний опыт).

Вопреки распространенному мнению, программа на языке COBOL может быть очень сложной.

Основы COBOL упрощены, правильное использование и логика COBOL — нет.

person Hank    schedule 09.04.2010
comment
Вот надежная блок-схема COBOL: (см. пример диаграммы потока управления COBOL) на этой странице: semanticdesigns. com/Products/DMS/FlowAnalysis.html. (Это не бесплатно). - person Ira Baxter; 24.05.2010