Обучение COBOL без доступа к мэйнфрейму

Я аспирант по специальности "Информатика". Мой отдел преподает большинство своих курсов с использованием Java (хотя я сделал один курс по системной архитектуре, который использовал C, чтобы продемонстрировать планирование процессора, управление памятью и т.д., Но я отвлекся).

Я хочу узнать больше о COBOL, но у меня нет доступа к системе мэйнфреймов. Кто-нибудь может рекомендовать компилятор COBOL бесплатно для Windows, который позволит мне пройти через некоторые базовые учебники по COBOL?

Отказ от ответственности: да, я уже это сделал, поэтому надеюсь, что некоторые опытные люди дадут дополнительную информацию.

Спасибо!

Ответы

Ответ 1

Другие плакаты предложили Tiny COBOL, но посмотрите OpenCOBOL. OpenCOBOL является кросс-компилятором к C и имеет довольно активное сообщество разработчиков.

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

Как указывал Велисарий, это не язык, а окружающая среда, которую нужно изучать. По аналогии, не так много узнать о языке C. Однако, просто зная, что C не доставит вас очень далеко - вам нужно работать с огромная стандартная библиотека, которая поставляется с ней. COBOL аналогичен тому, что уважение. Разница в том, что COBOL не поставляется с огромной стандартной библиотекой, она является частью пакета который часто включает в себя: CICS, DB/2, MQ-Series и множество других библиотечных сервисов (LE Services в среде IBM).

COBOL можно найти вне среды мэйнфрейма, но мэйнфрейм это его "настоящий дом". В качестве обобщения "мэйнфрейм" подразумевает использование мэйнфрейма IBM под управлением Z/OS (многие могут сделать исключение из этого утверждения). Эта публикация: Введение в Mainframe - z/OS это хорошее место, чтобы понять, что такое среда мейнфреймов IBM.

То, что я нахожу, характеризует COBOL:

  • COBOL - это процедурный язык. Некоторые поставщики добавили расширения OO и новые стандарты языка COBOL включают расширения OO, но это в значительной степени оформление окон. COBOL является в основном процедурным языком.

  • Объявление данных. Вещь PICTURE/USAGE - это немного изгиб ума. Объявление данных объединяет внутреннее представление данных (двоичное, упакованное десятичное число, плавающая точка, символ и т.д.) с представлением (количество цифр, ведущих нулей, знак и т.д.) в одно объявление.

  • REDEFINES используется для представления разных представлений одной и той же базовой памяти.

  • Иерархические декларации данных. Иерархия данных определяется с использованием номеров уровней. Уровень 1 определяет верхнюю часть иерархия и увеличение числа определяют более низкие уровни. Уровни 66 (совместно с RENAMES), 77, 88 имеют особые значения.

  • Поток управления. Многие программисты (даже некоторые ветеранские программисты COBOL) смотрят SECTION/PARAGRAPH аналогично процедуре вызова. Они совершенно разные. SECTION/PARAGRAPH do не следует нормальной семантике вызова/возврата, ориентированной на стек. COBOL использует уникальный механизм для управления вернуться из PERFORMed разделов/абзацев.

  • Монолитные программы с множеством глобальных переменных. Необычно найти исходные файлы COBOL работающих в тысячи строк с несколькими сотнями глобальных переменных. COBOL не нужно писать таким образом - я считаю, что это наследие, относящееся ко времени, когда вызовы процедур считались дорогостоящими, но PERFORMing a SECTION/PARAGRAPH был очень эффективным. Привычка похоже, застряли, и новые программы COBOL, как правило, также записываются как монолитные монстры.

  • Кошмар для обработки строк. COBOL делает финансовые расчеты очень хорошо. Это не делает обработка строк очень хорошо. Строковые дескрипторы INSPECT, STRING и UNSTRING могут выполнять ряд интересных вещей, но умудряются также усугублять себя.

  • COPY/REPLACING и REPLACE должны быть поняты директивы компилятора. Они ведут себя несколько иначе, чем включение файлов на большинстве других языков. Большинство магазинов используют COPY только для общей записи или декларация данных, другие используют их для общего процедурного кода (с REPLACING и или REPLACE).

Учитывая рабочие знания C, вы можете без проблем справиться с COBOL.

Ответ 2

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

  • COBOL - это легко обучаемый язык. Сначала вы почувствуете, что синтаксис сложный. Множество "разделов", "разделов", "абзацев"... просто попытайтесь понять, почему они существуют. Никто не пишет эти ярлыки. То, как COBOL использует и переопределяет структуры данных, возможно, является самой интересной концепцией, постарайтесь ее хорошо понять.

  • Это ключевой момент. Я сказал: "COBOL легко". Теперь плохая новость: быть честным программистом COBOL для мэйнфреймов НЕ легко. Но это не имеет никакого отношения к COBOL, это среда. Мейнфрейм большой, и там много "экосистем". У вас есть DB2, CICS, некоторые JCL и VSAM как минимум, и, возможно, еще дюжина, в зависимости от вашей установки. Принтеры, кассеты и другие специализированные и трудно управляемые аппаратные средства тоже. Каждому из них требуется несколько лет для приручения, и это реальная ценность хорошего программиста мейнфреймов. У микрофокуса был дорогой компилятор/продукт среды, который смог подражать некоторым из этих функций, но я думаю, что он вышел из рынка сейчас. Во всяком случае, ловкость с этими особенностями обычно приобретается "в магазине" и очень трудно (поверьте мне), чтобы получить от книги или учебного пособия.

Тем не менее, не ожидайте получить работу мэйнфрейма (кроме супер-младшего) после обучения и приручения COBOL. Это всего лишь первый маленький шаг.

НТН!

Ответ 3

Раньше существовал компилятор Cobol-to-C и Eclipse IDE от компании под названием "Компания". Продукт назывался "Коболь". Это позволит вам писать Cobol, используя среду на основе eclipse, которая будет похожа на то, что вы будете использовать для мэйнфрейма (Rational Developer for Z). У них есть бесплатная демо-версия и дешевая студенческая версия IIRC.

Вы обнаружите, что Cobol легко учиться, легко писать и трудно стрелять в ногу. Это одна из причин, по которой она очень популярна в финансовых учреждениях.

Я думаю, что здорово, что вы добавляете Cobol в свой инструментарий.

Ответ 4

Вы пробовали TinyCobol? Кажется, я использовал его один раз, и это было неплохо.

A назад, у MicroFocus была бесплатная версия их IDE + Compiler (Net Express), но они больше не предлагают его. Я почти уверен, что у меня есть экземпляр установщика где-то здесь, хотя я не уверен, что все равно будет законно устанавливать, если они больше не предлагают продукт. Я могу посмотреть позже сегодня вечером (это было бы на моем другом компьютере, который в настоящее время безголовый и неактивный) и посмотреть, что я придумал.

Ответ 5

Попробуйте OpenCOBOL http://www.opencobol.org/, он бесплатный, он работает на Windows и Linux и активно развивается.

Ответ 6

Micro focus теперь предлагает свою личную версию Visual COBOL бесплатно для некоммерческого использования. Этот COBOL работает либо с Microsoft Visual Studio, либо с языком .NET, либо с Eclipse. Он даже поставляется с облегченной версией Visual Studio, поэтому вам не нужно это покупать. Вы можете скачать его из https://www.microfocus.com/product-downloads/vcpe/vcpe22/index.aspx

Открытый OpenCOBOL на www.opencobol.org/теперь изменил свое название и местоположение. Теперь он называется GNU Cobol, он может быть найден на sourceforge.net/projects/open-cobol/. Это отличный COBOL, который реализует значительную часть стандартов ANS 85 и ISO 2002 COBOL.

Сайт GNU COBOL также имеет ссылку на Руководство программистов Gary Cutler по OpenCOBOL 1.1, которое является отличной ссылкой на язык. Если вы ищете учебные материалы, вы можете попробовать мой учебник COBOL по адресу: www.csis.ul.ie/cobol/course.

Существует также очень полезная онлайн-версия COBOL, которая использует компилятор OpenCOBOL. Он может быть найден в http://www.compileonline.com/compile_cobol_online.php Проверьте их слишком длинную программу "Hello world". В ISO 2002 COBOL ИДЕНТИФИКАЦИОННОЕ ОТДЕЛЕНИЕ не требуется, и поскольку программа останавливается, когда конец текста достигнут, STOP RUN также не требуется. На самом деле требуются только три строки, показанные ниже. Попробуйте сами.

PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
   DISPLAY 'Hello, world'.