Скомпилируйте Cobol 4 с помощью компилятора Cobol 5

Мне нужно скомпилировать исходные коды Cobol в z / OS UNIX с помощью компилятора Cobol 4, но у меня есть только компилятор Cobol 5. Есть ли варианты ограничить Cobol 5 компиляцией Cobol 4? Я использую команду cob2, которую я смонтировал на PDS IGY520.HFS моей установки Cobol на z / OS. Я искал в документации IBM, но ничего не нашел.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
583
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Программы COBOL 5 обратно совместимы с COBOL 4 (они могут вызывать друг друга), но COBOL 5 не создает объектных модулей COBOL 4. Зачем нужна компиляция COBOL 4?

Я не уверен, что моя программа будет совместима с большей частью z / OS, если я скомпилирую ее в COBOL 5. Требуются ли для скомпилированного объекта COBOL 5 определенные установленные библиотеки на целевой z / OS, или они просто объект, и нет никакого способа объект COBOL 4 будет работать, а COBOL 5 - нет? Кроме того, в моих источниках есть особый синтаксис COBOL4.

Timothée 16.01.2019 17:32

COBOL V5 будет компилировать программы, которые COBOL V4 может компилировать; Единственная проблема с синтаксисом, с которой вы столкнетесь, - это если ваша программа использует что-то новое зарезервированное слово в V5, и если да, то это легко исправить. Во время компиляции вам не понадобятся никакие библиотеки. При запуске программы, скомпилированной с помощью V5, вам понадобится среда выполнения V5, но если предположить, что V5 и LE (языковая среда, частью которой является среда выполнения COBOL) установлены правильно, это не будет проблемой.

Mike Chase 16.01.2019 21:08

Что касается совместимости с другими программами, код V5 совместим с любым старым кодом COBOL, за исключением кода, скомпилированного с OS / VS COBOL. Вы можете увидеть различия в поведении, если какая-либо из программ COBOL в вашем приложении использует недопустимые данные. Я делаю ежеквартальную презентацию о проблемах перехода на COBOL V5 / V6, которые вы, возможно, захотите изучить; предыдущие записи и слайды можно найти здесь: ibm.ent.box.com/v/COBOLMigrationWorkshops

Mike Chase 16.01.2019 21:08

Есть одно важное различие между скомпилированным кодом V4 и V5: EC V5 создает объектный код в формате GOFF, который связыватель использует для создания программных объектов вместо модулей загрузки. Таким образом, с V5 требуется, чтобы все загружаемые библиотеки были PDSE, а не PDS (я не знаю наверняка об объектах-библиотеках, но PDSE там тоже не повредит).

piet.t 17.01.2019 08:23

Не то, чтобы я в курсе. Я вижу, что может быть полезно следующее.

CMPR2, FLAGMIG, and NOCOMPILE compiler options

The COBOL CMPR2, FLAGMIG, and NOCOMPILE options identify source statements that need to be converted to compile under Enterprise COBOL. The CMPR2 and FLAGMIG options are not available in Enterprise COBOL, but you can use your older compilers with these options to flag the statements that need to be changed in order to compile with Enterprise COBOL.

Enterprise COBOL> V4.2 FLAGMIG4 compiler option

A new compiler option, FLAGMIG4, is available with APAR PM93450 for Enterprise COBOL V4.2 to help you migrate to Enterprise COBOL V5 or V6. It is also recommended that you install PTFs for APARs PI12240, PI26838, and PI58762 as these contain updates to the FLAGMIG4 option. The FLAGMIG4 option identifies language elements in Enterprise COBOL V4 programs that are not supported, or that are supported differently in Enterprise COBOL V5 or V6. The compiler generates a warning diagnostic message for all such language elements.

COBOL 6.2 Руководство по миграции

Ответ принят как подходящий

Нет. Я настоятельно рекомендую вам изучить руководство по миграции, и любой ПОДЕЛИТЬСЯ презентациями по теме миграции, к сожалению, SHARE больше не делает свой отличный контент доступным для лиц, не являющихся участниками.

Наиболее распространенные проблемы связаны с недопустимыми данными, допускаемыми старыми компиляторами. Цитата из презентации SHARE Тома Росса ссылка выше ...

77 A1 PIC X(4) VALUE ’00 0’.  *> x’F0F040F0’, third byte
                              *> has x’4’ for zone bits.
                              *> OK in PIC X, not valid in
                              *> PIC 9 USAGE DISPLAY

77 A2 REDEFINES A1 PIC 9(4).

PROCEDURE DIVISION.    
    IF A2 = ZERO              *> Compiler could do character
      DISPLAY ’ZERO‘          *> or numeric compare
    ELSE
      DISPLAY ’NOT ZERO‘
    END-IF

Whether the program displays ‘ZERO’ or ‘NOT ZERO’ depends on the compiler options you use in COBOL V4 and earlier and in COBOL V6

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

Параметр компиляции NUMCHECK может помочь вам в этих ситуациях, но имейте в виду, что параметры компиляции не могут обнаруживать недопустимые данные во время компиляции, они могут только генерировать код для обнаружения недопустимых данных во время выполнения.

Спасибо за подробный ответ

Timothée 16.01.2019 17:40

Другие вопросы по теме