powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / z/OS / C++ / DB2 8
11 сообщений из 11, страница 1 из 1
z/OS / C++ / DB2 8
    #36428778
S370
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите плз чем можно воспользоваться для реализации C++ программы под zOS/DB2 8 и выше.
embedded SQL, CLI,...?

Нужны ли специальные/отдельные пакеты в z/OS
(кроме самого C++ компилятора)?

Хотелось бы все сделать/протестить под AIX (или Windows),
а уже потом просто собрать под z/OS наименьшими усилиями

Спасибо
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36430059
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да можно
embedded SQL работает прекрасно, на Cli я писать под z/OS не пытался

специальные/отдельные пакеты в z/OS в общем случае не нужны
может понадобится RRS, если есть двухфазные транзакции

>Хотелось бы все сделать/протестить под AIX (или Windows),
>а уже потом просто собрать под z/OS наименьшими усилиями


придётся пособирать грабли с дб2 z/OS сначала, продукты в принципе различны, общее только название

SQL у них также имеет различия (на z/OS более бедный, чем на Workstation)

ftp://public.dhe.ibm.com/ps/products/db2/info/vr8/pdf/letter/cpsqlrv11.pdf
ftp://public.dhe.ibm.com/ps/products/db2/info/xplatsql/pdf/en_US/cpsqlrv2.pdf

после того, как есть некоторый опыт работы с дб2 для z/OS так можно писать , я так и делал
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36430444
S370
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
embedded SQL - выглядит ок с первого взгляда.

по SQL, ничего такого особого использовать не придеться,
больше стандатные SIUD

меня больше интересовала сборка на стороне z/OS
без участия самого "программиста", т.е. делает один, а собирает другой...
и при этом, тот кто делает (как бы) не имеет представление о z/OS :)
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36430780
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
джоб чтоли надо
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36430847
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
напишите джоб, пусть кто не имеет представление о z/OS пускает его по ftp
ошибки C++ и прекомпиляции, думаю, так можно понять
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36430905
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прекомпиляция

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
//SYSPRG1P JOB CLASS=A,MSGCLASS=X,MSGLEVEL=( 1 , 0 )
//*
//*
//**********************************************************************
//*            PRECOMPILE ACCESS
//**********************************************************************
/*
//ACCESS   EXEC PGM=DSNHPC,
//          PARM='HOST(CPP),SOURCE,XREF,MARGINS(1,80),STDSQL(NO)',
//          REGION=0K
//STEPLIB  DD  DISP=SHR,DSN=DB2.V7R1M0.DSNA.SDSNEXIT
//         DD  DISP=SHR,DSN=DB2.V7R1M0.SDSNLOAD
//DBRMLIB  DD  DSN=SYSPRG1.DBRMLIB( xxxxxxx),DISP=SHR
//SYSCIN   DD  DSN=SYSPRG1.C(xxxxxxx),DISP=SHR
//SYSIN    DD  DSN=SYSPRG1.SQC(xxxxxxx),DISP=SHR
//SYSPRINT DD  SYSOUT=*
//SYSTERM  DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSLIB   DD  DSN=DB2.V7R1M0.DSNC.SRCLIB.DATA,DISP=SHR
/*

bind
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
//SYSPRG1M JOB CLASS=A,MSGCLASS=X,MSGLEVEL=( 2 , 0 ),REGION=0M
//JOBLIB   DD  DSN=CEE.SCEERUN,DISP=SHR
//         DD  DSN=DB2.V7R1M0.DSNB.SDSNEXIT,DISP=SHR
//         DD  DSN=DB2.V7R1M0.SDSNLOAD,DISP=SHR
//         DD  DSN=DB2.V7R1M0.DSNB.RUNLIB.LOAD,DISP=SHR
//* BIND LOADDB2
//BNDLOAD EXEC PGM=IKJEFT01,DYNAMNBR= 20 ,
//             COND=( 4 ,LT)
//STEPLIB  DD  DISP=SHR,DSN=DB2.V7R1M0.DSNA.SDSNEXIT
//         DD  DISP=SHR,DSN=DB2.V7R1M0.SDSNLOAD
//SYSTSPRT DD  SYSOUT=*
//SYSTSIN  DD  *
 DSN SYSTEM(DSNC)
  RUN PROGRAM(DSNTIAD) PLAN(DSNTIA71) -
       LIB('DB2.V7R1M0.DSNC.RUNLIB.LOAD') -
       PARM('SQLTERM(%)')
  BIND PLAN(XXXXXXX) -
       QUALIFIER( XXXXXXX) -
       VALIDATE(RUN) -
       MEMBER( -
            XXXXXX -
            ) -
       LIBRARY( -
           'SYSPRG1.DBRMLIB' -
            ) -
       ISOLATION(CS) -
       ACT (REP) -
       ENCODING(EBCDIC)
//SYSPRINT DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSIN    DD  *
//


C++ можно так

//SYSPRG1M JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(2,0),REGION=0M
//JOBLIB DD DSN=CEE.SCEERUN,DISP=SHR
//MAKE PROC
//CLIST EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DUMMY
//SYSUT2 DD DSN=&SYSUID..REPL.CLIST(MAKE),DISP=SHR
//SYSIN DD DUMMY
//MAKEALL EXEC PGM=IKJEFT01,DYNAMNBR=20,PARM='EXEC REPL(MAKE)'
//STEPLIB DD DSN=CEE.SCEERUN,DISP=SHR
//SYSPROC DD DSN=CBC.SCBCUTL,DISP=SHR
//SYSUDUMP DD DUMMY
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
// PEND
// EXEC MAKE
//CLIST.SYSUT1 DD *
CONTROL CAPS

IF &MAXCC < 4 THEN +
CXX C(xxxxxx) OBJ(OBJ(xxxxxx)) +
SEARCH('DB2.V7R1M0.SDSNC.H',) +
bool locale convlit(IBM-1025) define(DEBUG)

IF &MAXCC < 4 THEN +
CXXBIND OBJ( +
OBJ(EXEC) +
ещё добвать DSNALI
) LOAD(LOAD(xxxxx))
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36431194
Новый Год,

В дополнение, в настоящий момент есть более новый способ компиляции C/C++ модулей с включениями SQL-кода.
Этот способ исключает явный вызов препроцессора DB2.
Преимущества:
- Нет лишнего шага компиляции
- Нет ограничения на длину строки 80 символов для исходного кода на C/C++
- Область видимости SQL-переменных совпадает с областью видимости обычных переменных.
Документация: Processing SQL statements by using the DB2 coprocessor
Для корректной работы сопроцесора, в STEPLIB шага компиляции должны быть включены:
- библиотека подсистемы содержащая модуль DSNHDECP
- библиотеки SDSNLOAD и SDSNLOD2 соответвующей версии.
Исходный код нужно скопировать в z/OS с перекодировкой в кодовую страницу IBM-1025
Пример задания на компиляцию и линковку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
//DB2CBL  JOB REGION=0M                                      
// JCLLIB ORDER=CBC.SCCNPRC          <== БИБЛИОТЕКА ПРОЦЕДУР КОМПИЛЯЦИИ 
//* НАСТРОЙКИ ПРОЕКТА                                                   
// SET MEMBER=FUNCN031               <== ИМЯ МОДУЛЯ                     
// SET SRCLIB=PROJ1.SOURCE.C           <== БИБИЛИОТЕКА ТЕКСТОВ ПРОГРАММ   
// SET INCLIB=PROJ1.SOURCE.H           <== БИБИЛИОТЕКА ТЕКСТОВ ПРОГРАММ   
// SET LOADLIB=PROJ1.LOADLIB          <== PDS(E) ДЛЯ ЗАГРУЗОЧНЫХ МОДУЛЕЙ   
// SET DBRMLIB=PROJ1.DBRMLIB       <== PDS(E) ДЛЯ МОДУЛЕЙ DBRM        
// SET DB2IMOD=R                     <== ДОСТУП: R-RRSAF, A-CAF, E-TSO  
//* НАСТРОЙКИ ПОДСИСТЕМЫ DB2                                            
// SET DB2HLQ=DSN810                 <== ПРЕФИКС БИБЛИОТЕК DB2          
// SET DSNEXIT=DB2.DB8.SDSNEXIT      <== МОДУЛЬ DSNHDECP ПОДСИСТЕМЫ     
//* ВЫЗОВ КОМПИЛЯТОРА C/C++                                             
//STEP1    EXEC CBCCL,CPARM='OPTFILE(DD:CCOPT)'                         
//COMPILE.STEPLIB  DD DISP=SHR,DSN=CEE.SCEERUN2                         
//                 DD DISP=SHR,DSN=CBC.SCCNCMP                          
//                 DD DISP=SHR,DSN=CEE.SCEERUN                          
//                 DD DISP=SHR,DSN=&DSNEXIT                             
//                 DD DISP=SHR,DSN=&DB2HLQ..SDSNLOAD                    
//                 DD DISP=SHR,DSN=&DB2HLQ..SDSNLOD2                    
//COMPILE.SDSNCH   DD DISP=SHR,DSN=&DB2HLQ..SDSNC.H                     
//COMPILE.USERLIB  DD DISP=SHR,DSN=&INCLIB                              
//COMPILE.DBRMLIB  DD DISP=SHR,DSN=&DBRMLIB(&MEMBER)                    
//COMPILE.SYSIN    DD DISP=SHR,DSN=&SRCLIB(&MEMBER)                 
//COMPILE.CCOPT    DD *             <== ОПЦИИ КОМПИЛЯЦИИ            
  NODLL                                                             
  LIST                                                              
  SOURCE                                                            
  LOCALE(RU_RU.IBM- 1025 )                                            
  LANGLVL(EXTENDED)                                                 
  SQL(APOSTSQL STDSQL(NO))                                          
  SEARCH(DD:SDSNCH)                                                 
/*                                                                  
//LKED.SYSLMOD     DD DISP=SHR,DSN=&LOADLIB(&MEMBER)                
//LKED.DSNIMOD     DD DISP=SHR,DSN=&DB2HLQ..SDSNLOAD(DSN&DB2IMOD.LI)
//LKED.SYSIN       DD *                                             
  INCLUDE DSNIMOD                                                   
/*
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36431248
S370Подскажите плз чем можно воспользоваться для реализации C++ программы под zOS/DB2 8 и выше.
embedded SQL, CLI,...?

Нужны ли специальные/отдельные пакеты в z/OS
(кроме самого C++ компилятора)?

Если не хочется "связываться" с заданиями в системе z/OS, то можно выполнять компиляцию в среде Unix System Services (USS или OMVS).
В этом случае компиляция и сборка будет выполняться в Unix-среде операторами командной строки.
Можно написать Shell-скрипт, выполняющий сборку, а сами файлы копировать туда по FTP.
Доступ в USS можно получить стандартным telnet или ssh клиентом, номер порта нужно узнавать у сопровождающих.
Можно задействовать как EmbeddedSQL, так и CLI.
Для работы через CLI в C++ очень помогает библиотека OTL 4.0 . При правильном выставлении DEFINE-флагов она отлично работает в z/OS. Но в этом случае будет только динамический SQL.
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36431791
S370
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wow, даже неожидал за столь подробные ответы :)

Новый Год, Евгений Хабаров спасибо за информацию

как указывалось выше, смотрю в сторону препроцессора DB2
в голове пока каша про z/OS, читаю основы :)

может эта утопия, но идея всю разработку/dev-тестинг вести за пределами z/OS,
и только для qa->release->prod использовать ресурсы и админов z/OS (туда писателей программ так и так не пускают)
по первым впечетлениям, такое возможно
только нужно разобраться в build процессе доконца (люди как-бы есть но они больше на COBOL сборку сосредаточены, неуверен что это одно-и-тоже что и C++ собрать )

p.s.
сторонние компоненты использовать незя
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36431938
S370,

С небольшими оговорками такое возможно.
Где вести сборку в z/OS, в OMVS(Shell) или в MVS(JOB) - как привычнее тем, кто будет сопровождать. У обоих вариантов есть свои плюсы и минусы.

Что предпочесть CLI или EmbeddedSQL - зависит от структуры приложения.
Однако для компиляции CLI(ODBC) не нужен DB2 препроцессор/сопроцессор.

Оглядываться следует на SQL-запросы, чтобы они были совместимы с SQL-диалектом DB2 for z/OS.
В какой то момент обязательно возникнет вопрос с кодировками исходных текстов. Эти проблемы вполне решаемы, когда(если) столкнетесь - пишите.
Если в тексте C/C++ будет текст на русском языке, а тем более если это строковые константы, которые будут использоваться в SQL-запросах, правильное преобразование кодировки будет очень важно.

Доступ в отладочную z/OS систему все таки желателен.
Если не хотят пускать в MVS, может пустят в OMVS?

По существу компиляция и сборка приложения для СOBOL и C/C++ принципиально не отличаются.
Несколько отличается компиляция, а сборка(линковка) по сути одинаковы, используется общий Runtime (Language Environment).
...
Рейтинг: 0 / 0
z/OS / C++ / DB2 8
    #36432581
S370
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Евгений Хабаров,

все детали на данный момент неизвестны, идут обсуждения "на верхах"
а пока для себя понять минимум основ...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / z/OS / C++ / DB2 8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]