Брешенков А.В., Волкова Е.А., Галямова Е.В. - Разработка DB2 приложений (1075560), страница 2
Текст из файла (страница 2)
Однакопри внесении небольшого изменения в одну из программ, необходимовыполнить повторное связывание всего плана. Это также необходимосделать и в случае добавления индекса. Как вы знаете, в процессесвязывания DB2 обновляет свои оглавление и каталог. Обновление означаетнедопущение их обновления другими людьми (данные заблокированы инедоступны для них), так что выполнение большинства других действий вDB2 является практически невозможным.
Для того чтобы обойти этоограничение, были реализованы пакеты. Теперь необходимо только лишьвыполнить повторное связывание одного пакета, так что длительностьобновления очень мала, и воздействие на других пользователей почтиотсутствует. В настоящее время все еще используются планы свстроеннымипреобразованиеDBRM,вхотяпакеты.большинствоПланыкомпанийиспользуютсятолькомэйнфреймов. На других платформах они не используются.8выполняетвихсреде1.3.4 ЗапускПри выполнении приложения происходит загрузка загрузочного модуля восновную память. Когда встречается SQL-оператор, обращение к DB2(оператор CALL), заменивший SQL-оператор, передает его параметры вDB2.
Одним из параметров является маркер согласованности. Этот жемаркер (или отметка времени) присутствует и в пакете. Затем выполняетсяпросмотрпакетоввзаданномпланеDB2впоискахналичиясоответствующей отметки времени, после чего загружается и выполняетсяподходящий пакет. Таким образом, для запуска необходимо в качествепараметра задать имя плана.Последнее замечание: результатом SQL-выражения обычно являетсярезультирующеемножество(содержащеебольшеоднойстроки).Приложение может обрабатывать только одну запись или строку за раз. ВDB2 добавляется специальная конструкция, называемая курсором (cursor),который, в сущности, аналогичен указателю и позволяет во встроенномSQL-коде выбирать, обновлять или удалять по одной строке изрезультирующего множества за один раз.2.
Практическая частьВ этой лабораторной работе вы будете создавать приложение,обрабатывающее различные запросы к базе данных DB2, в том числе исетевые запросы. Последовательно выполняя этапы 1-4, вы познакомитесьсосновамиразработкиприложений,работающихсDB2,ипоследовательностью их запуска.2.1 DCLGENСначала вы будете использовать DCLGEN для создания SQLDECLARE и основной переменной структуры для таблиц и видов, которыевы только что создали, а также для master таблиц, которые вы будетекопировать, все из которых будут доступны в программах, которые вы9будете обновлять.
DCLGEN можно запустить из меню DB2I пункт 2.Изучите различные опции на экране. Используйте HELP, если этонеобходимо.Теперь используем DCLGEN для EMP таблицы.1. Заполните опции DCLGEN (см. рис.2), а затем нажмите клавишу "Enter"для запуска:TSOUsxx – ваш логин.2.Сделайте то же самое для таблицы DEPT.3. Сделайте то же самое для вида VPHONE.4.Сделайте то же самое для таблицы master DEPT, которая вам позжепонадобитсявпрограмме.НазваниетаблицыmasterDEPT-CF82.DEPT_MAST.5.И наконец, сделайте то же самое для CF82.EMP_MAST таблицы.Предложение:ИмянаборадляCF82.EMP_MASTструктуры:'TSOUsxx.CF82.INCLUDE (EMPMAST)'Примечание: При генерации двух выходных наборов для EMP таблицы иEMP master таблицы, вы увидите, что DCLGEN сгенерировал дваодинаковых набора основных переменных внутри структуры.
Ваша сборкане удастся (неоднозначные имена переменных), если вы не определитекаждое имя переменной при написании кода.6.Просмотрите содержимое сгенерированных частей (через ISPFBrowse)7.Вы можете экспериментировать с опциями 8 и 12, чтобы узнатьполуаемые результаты. Используйте:ACTION ...===> REPLACE.2.2 Структура программыИсследуйте следующие экраны,требующие обработки DB2.10онипоказываюттранзакцииПервый экран предлагает несколько функций (см. рис.3)Представим, что выбрана функция s, появится следующий экран (см. рис.4)Программа использует введенный номер и предоставит требуемуюинформацию, а затем вернется опять к первому экрану.Представим, что выбрана функция a, появится следующий экран (см.
рис.5)Программа использует введенные данные и добавит новые данные в DB2.Вам предоставляется готовый код программы на языках PL/I или COBOL.Можно использовать любой язык на выбор. Имя программы LABPGMCS(COBOL) или LABPGMPS (PL/I).Изучите код программы, используя ISPF Browse.Обратите внимание на использование операторов SQL, например, EXECSQL INCLUDE EMP END-EXEC.1. Найдите слова SQL COMMUNICATION AREA.2. ИзучитеSQL выражение добавляющее определение SQLCA впрограмму.3.
Найдите слова ERROR HANDLING.4. Изучите SQL для обработки ошибок5. Найдите слово INDICATOR.6. Изучите как объявляется переменная используемая DB2 дляобозначениязначенийNULLSELECTEDииспользуемаявпрограмме для установке значений NULL в выражениях INSERT иUPDATE.7. Найдите в программе блоки S, P, D, I, U, A. Определите выполняемыев них действия.2.3 Подготовка программы• Выберите Пункт 3 DB2I для подготовки программы.• Исследуйте опции на экране, и на всех последующих экранах,11используя HELP, если это необходимо.• На экране показанном на рисунке 6 - то, что вам нужно для запуска всехнеобходимых шагов для подготовки программы для запуска.• Сначала будем отображать все экраны DB2I относящиеся ко различнымшагам подготовки, так как мы используем эти функции в первый раз.• Затем Вы будете заменять большинство из YES на Display панели наNO.• pgmname во всем руководстве следует заменять на название источникапрограммы.• имена наборов данных могут варьироваться.Следующая панель, которую вы должны получить, это PRECOMPILEпанель:1.
Заполните панель как показано на рисунке 7.Следующая панель, которую вы получите, это BIND PACKAGE панель2. Заполните панель как показано на рисунке 8.3. Заполните BIND PACKAGE варианты по умолчанию, как показано нарисунке 9. Сделайте то же самое на следующем экране, на COMPILE,PRELINK, LINK и RUN панели (см. рис.10).4. Нажмите кнопку ENTER и проверьте вывод сообщений с цельюпроверки выполнения действия.5.
ИсследуйтеэлементывашегонабораданныхDBRM(TSOUsxx.CF82.DBRM).6. Ваша программа подготовки сгенерировала определенные наборыданных:TSOUsxx.TEMP.COBOL Модифицированный COBOL исходный кодTSOUsxx.TEMP.PLI Модифицированный PL / I исходный кодСвязь TSOUsxx.TEMP.DATA выход редактора связейСвязь TSOUsxx.TEMP.LINKLIST редактор связейTSOUsxx.TEMP.LIST листинг компилятора12Объект TSOUsxx.TEMP.OBJ объектный модульTSOUsxx.TEMP.PCLIST листинг препроцессораВаша программа не запустится, пока вы не выполните следующей частиэтого упражнения!Прежде, чем мы можем запустить программу, мы должны создать план слистингом пакета, который указывает на наш пакет.1. Составим план с таким же именем, что и программа, и с листингомпакета, выполнив следующее (см.
рис. 11) и нажав Enter:Давайте определим параметры BIND PLAN и составим план.Следующая панель, которую вы получите, это BIND PLAN панель:2. Заполните панель как показано на рисунке 12.Нужно оставить пустыми поля опций1 и 3. Иначе, вы создадитевнутрипотоковый DBRM.3. Заполните настройки BIND PLAN по умолчанию как показано нарисунке 13.4. Создайте листинг пакета.DB2I предлагает выбрать листинг пакета для плана (см. рис. 14).Единственный возможный выбор отображается на экране. Можно такжевыбрать использование collid .*, но тогда вам потребуется несколькодополнительных привилегий чтобы можно было выполнить это.Указывая TSOUsxx.pgmname в листинге пакета, Вы выбираете толькоодин пакет, который хранится в вашей коллекции.Закрыть панель нажатием PF клавиши F3.На данный момент, вы можете запускать программу!2.4 Запуск программыКод JCL для запуска вашей программы располагается в наборе данныхTSO: CF82.CNTL (RUNPGMC) или CF82.CNTL (RUNPGMP).13Текст скрипта RUNPGMC://TSOUxxxA JOB ,'DB2 RUN PROGRAM'//PH01S01 EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT)//*TEPLIB DD DSN=DB2.SDSNLOAD,DISP=SHR//CARDIN DD DSN=TSOUxxx.CF82.SOURCE(TRANSIN),DISP=SHR//REPORT DD SYSOUT=*//SYSOUT DD SYSOUT=*//SYSABOUT DD SYSOUT=*//SYSPRINT DD SYSOUT=*//SYSTSPRT DD SYSOUT=*//SYSTSIN DD *DSN SYSTEM(DSNC)RUN PROGRAM(pgmname) PLAN(pgmname) LIB(RUNLIB.LOAD)//*Обратите внимание на следующее:• Названием программы является IKJEFT01 – Запускается в TSO.• имя CARDIN DD -расположение входного файла TRANSIN.• имя REPORT DD - вывод - то же место, что и вывод задачи.• имя SYSTSIN DD определяет TSO команду запускающую загрузку, - вданном случае DSN, команда для запуска команд DB2 из TSO.
Кодподсистемы также необходимо указать.• В СУБД DB2 команда вызываемая здесь – RUN PROGRAM, с указаниемимени плана и имени программы(загрузочного модуля). Библиотеказагрузочного модуля также указана. Почему местонахождение плана ненужно указывать?1. Запустите этот JCL.2. Посмотрите на результаты в ISPF 3.8.3. Обратите внимание на код возврата.144.Кроме того, убедитесь в том, что вывод из программы (результатыдействий S, P, D, I, U, A из TRANSIN файла) согласован с выводомобразцом.Важное примечание: Любые изменения, вносимые в исходный код теперьдолжен быть приведены в действие повторением всех предыдущих шаговподготовки программы!3. Требования к отчетуОтчет о выполнении лабораторной работы должен содержать ответына вопросы, поставленные перед студентом в методических указаниях,скрин-шоты результатов компиляции программы, скрин-шоты результатоввыполнения разрабатываемой программы и ответы на контрольныевопросы.
Оформление отчета должно быть выполнено в соответствии стребованиями ГОСТов.4. Контрольные вопросыКак вставить код SQL в программу?Какие шаги необходимо проделать для подготовки программы DB2 кзапуску?Для чего необходима утилита DCLGEN?Чем отличается пакет от плана?5. Список литературы5.1Paolo Bruni, Mark Anders, «DB2 for z/OS: Data Sharing in a Nutshell»,International Business Machines Corporation, 2006.5.2Справочник «DB2 SQL Reference», International Business MachinesCorporation, 2003.5.3Mike Ebbers, Wayne O’Brien, Bill Ogden, «Introduction to the NewMainframe: z/OS Basics», IBM corp., 2005.15Содержание:Теоретическая часть ......................................................................................................... 31.1 Компиляция программ в z/OS ...................................................................................
31.2 Программирование приложений для DB2 ................................................................... 41.3 Подготовка программы в DB2: алгоритм .................................................................... 51.3.1 DCLGEN ................................................................................................................... 51.3.2 Прекомпиляция ........................................................................................................ 61.3.3 Связывание ............................................................................................................... 71.3.4 Запуск ........................................................................................................................
92. Практическая часть ............................................................................................................... 92.1 DCLGEN .......................................................................................................................... 92.2 Структура программы .................................................................................................. 102.3 Подготовка программы ................................................................................................ 112.4 Запуск программы .........................................................................................................