- •Уд.2. Обработка простых документов. Операции над таблицами
- •13. (Химанализ.)
- •Уш.З. Иерархия типов данных
- •15. (К годовому отчету.) в каждой компоненте файла ста-тистика-по-рапо содержатся следующие сведения:
- •16. (Обработка файла платежи,- Формирование новых файлов.) в каждой компоненте файла платежи содержатся следующие сведения:
- •17. (Итоги экзаменационной сессии.) Каждая компонента файла сессия содержит следующие данные из экзаменационной ведомости:
- •18. (Контроль ключевого поля.) в каждой компоненте файла кадры содержится:
- •19. (Обработка файла поставки. - Упорядоченные файлы.) Каждая компонента файла поставки содержит:
- •20. (Поквартальный план.) Каждая компонента исходного файла поквартальный-план, имеющего отношение к выпуску обуви некоторым предприятием, содержит:
- •21. (Подписная компания.) Каждая компонента файла подписные издания содержит:
- •1.2. При составлении одношаговых заданий рекомендуется рассмотреть следующие виды наборов данных:
1.2. При составлении одношаговых заданий рекомендуется рассмотреть следующие виды наборов данных:
а) Набор данных во входном потоке (файл INPUT или другой текстовый на перфокартах).
б) Набор данных в выходном потоке (файл OUTPUT или другой текстовый для печати).
в) Входной каталогизированный набор данных. В DD -операторе используются только операнды DSN = имя набора данных, DISP = (диспозиция до шага задания, диспозиция после шага задания).
Примечание к п. в). Диспозиция до - обычно SHR (только для чтения), диспозиция после - КЕЕР (сохранить) или UNCATLG (раскаталогизировать) - случай, когда программа шага генерирует обновленную копию этого набора данных).
г) Входной некаталогизированный набор данных (с содержательной точки зрения менее важный для предприятия). В DD -операторе используются операнды DSN, DISP,UNIT= тип устройства ,VOL = SER = серийный номер тома.
Примечание к п. г). Диспозиция до - обычно SHR, диспозиция после - КЕЕР или CATLG (каталогизировать - мотивация: после проверки программой шага задания набор данных получил статус очень важного для предприятия) или DELETE (уничтожить - мотивация: программа шага задания сгенерировала обновленную копию либо данные этого файла впредь не понадобятся - например, данные файла изменений). Тип устройства:
SУSDA (диск) или ТАРЕ (магнитная лента).
д) Выходной (а значит, новый в случае последовательных файлов) набор данных. В DD -операторе используются операнды: DSN , DISP = ( NEW, диспозиция после), UNIT = SYSDA), VOL= SER=,...,SPACE= (единица измерения, (основной объем, дополнительный объем)).
Примечание к п. г). В операнде SPACE единицей измерения могут быть: либо ТRК (дорожка объемом 3000 байтов), либо СУL(цилиндр объемом 10 дорожек), либо "целое без знака" (обычно длина компонента файла). Основной объем задается в единицах измерения, исходя из содержательной оценки числа компонентов в файле. Обычно при составлении учебных заданий значения операнда SPACE выписываются формально, без расчетов.
1.3. При составлении многошаговых заданий, кроме наборов данных, указанных в п.1.2, рассматриваются также и рабочие наборы данных. Поскольку они используются только в рамках своего задания, то их разумно определять как временные. Рекомендуется рассмотреть следующие виды наборов данных:
а) Выходной (новый) набор данных в некотором шаге задания, передаваемый в последующие шаги этого задания. В DD -- операторе используются операнды DSN = && имя набора данных, DISP= ( NEW, PASS), UNIT=SYSDA, SPACE.
б) Входной набор данных в некотором шаге задания, принятый от одного из предыдущих шагов этого задания. В DD -операторе используются операнды DSN = && имя набора данных, DISP= (SHR, диспозиция после), UNIT=SYSDA.
Примечание. Для временных наборов данных допустимо опускать операнд VOL=SER=... В этом случае внешняя память будет
// PASCPCLG PROC R=178K,V=,LlB=,M=,NAME=,C=,DATA=,LANG=,
// VLOCAL=MVT61G,MD=,DM1=,DM2='DUMMY '•,DM3=
//***** КОММЕНТАРИЙ **************************************************
//* LIB - ИМЯ БИБЛИОТЕКИ, ГДЕ НАХОДИТСЯ ПАСКАЛЬ-ПРОГРАММА *
//* ПОЛЬЗОВАТЕЛЯ И ДАННЫЕ *
//*М ИЛИ NAME - ИМЯ РАЗДЕЛА, ГДЕ ХРАНИТСЯ ПАСКАЛЬ-ПРОГРАММА *
//* ПОЛЬЗОВАТЕЛЯ В ВИДЕ ИСХОДНОГО МОДУЛЯ *
//* V - ИМЯ ТОМА, ГДЕ НАХОДИТСЯ ТЕКСТ ПРОГРАММЫ *
//* VLOCAL - ИМЯ ТОМА ДЛЯ ЛОКАЛЬНЫХ ФАЙЛОВ *
//* R - ОБЪЕМ ПАМЯТИ НЕОБХОДИМЫЙ ДЛЯ РЫАБОТ транслятора *
//* С - ВЫХОДНОЙ КЛАСС ПРИ ПЕЧАТИ В ВЫХОДНОМ ПОТОКЕ(ДЛЯ *
//* СООБЩЕНИЙ ТРАНСЛЯТОРА, РЕДАКТОРА, ПРОГРАММЫ И *
//* ФАЙЛА OUTPUT ПАСКАЛЬ-ПРОГРАММЫ *
//* МD - ИМЯ РАЗДЕЛА. ГДЕ ХРАНЯТСЯ ДАННЫЕ(ФАЙЛ INPUT ) *
// ***** ШАГ РАСПАКОВКИ **********************************************
// UNPK EXEC PGM=UNPACK
// SYSUT1 DD DDNAME=SYSIN
// SYSUT2 DD DISP=(,PASS),UNIT=SYSDA,DSN=&UNP,
// SPACE=(80, (50, 10)),DCB=BLKSIZE=80
// SYSIN DD DISP=SHR,UNIT=SYSDA,VOL=SER=&V,
// DSN=&LIB(&M.&NAME)
//***** ШАГ ТРАНСЛЯЦИИ **********************************************
// PASC EXEC PGM=PASCAL,PARM='/NOREPORT',REGION=&.R
// STEPLIB DD DISP=SHR,DSN=PASCAL.LIB
// PАDUMP DD &DM1 ,SYSOUT;&C,DCB=(RECFM=FA,BLKSIZE=128)
// SYSPRINT DD SYSOUT=&C,DCB=(RECFM=FBA,BLKSIZE=645,LRECL=129)
//SYSTERM DD &DM2,SYSOUT=&C,DCB=(RECFM=FA,BLKSIZE=129)
// BPASMSGS DD DISP=SHR,DSN=PASCAL.MSG&LANG
// SYSG0 DD DISP=(MOD,PASS') ,UNIT=SYSDA,DSN=&LOADSET,
// SPACE=(TRK,(3,5)),
// DCB = (RECFM=F,BLKSIZE=80 ,LRECL=80)
// SYSIN DD DISP=(OLD,DELETE),DSN=*.UNPK.SYSUT2
//***** ШАГ РЕДАКТИРОВАНИЯ *******************************************
// LKED EXEC PGM=UNPACK,PARM='LIST,LET',COND=(4,LT,PASC)
// SYSPRINT DD &DM3,SYSOUT=&C
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK, (5,5))
//SYSLIN DD DISP=(OLD,DELETE),DSN=&LOADSET
//SYSIN DD DISP=SHR,DSN=PASCAL.Llb
// DD DISP=SHR,DSN=SYS1.FORTLIB
// SYSLMOD DD DISP=(,PASS),UNIT=SYSDA,DSN=&&GOSET(GО),
// SPACE=(TRK,(2,10,1),RLSE)
//****** ШАГ ВЫПОЛНЕНИЯ ***************************************************
// GО EXEC PGM=*.LKED.SYSLMOD,
// COND=( (4,LT,PASC) , (4,LT,LKED))
//PАDUMP DD SYSOUT=&C,DCB=(RECFM=FA,BLKSIZE=128)
//SYSPRINT DD SYSOUT=&C,DCB=(RECFM=FA,BLKSIZE=128)
//PАLOCAL DD DISP=OLD,UNIT=SYSDA,VOL=SER=&VLOCAL
//FT06F001 DD SYSOUT=&C
//SISIN DD &DATA,DISP=SHR,UNIT=SYSDA,VOL=SER=&V,DSN=&LIВ(&MD)
//**************************************************************************
РИС. 8. ТЕКСТ ПРОЦЕДУРЫ PASCPCLG
выделена из собственных ресурсов вычислительной системы. Связь между передаваемыми и принимаемыми наборами данных осуществляется:
- либо благодаря совпадению имен наборов данных в операндах DSN соответствующих DD -операторов;
- либо с помощью другого значения операнда DSN в принимавшем DD -операторе, а именно; DSN = * . имя передающего шага задания. Go . имя передающего DD -оператора (где go - имя передающего шага в процедуре).
1.4. При составлении заданий понадобятся каталогизированные процедуры PASCCG и PASCPCLG (напомним, что мы ориентируемся на Pascal ). Текст второй процедуры приведен на стр. 34 . Полный текст процедуры PASCPCLG обычно рассматривается в лекционном курсе с объяснением назначения всех наборов данных и объяснением операндов DD - и exec --операторов. Поэтому на практических занятиях тексты этих процедур не изучаются, а отрабатываются лишь навыки использования процедур при составлении заданий. Рекомендации об условиях, когда используются процедуры PASCCG и PASCPCLG , и общие сведения об этих процедурах, достаточные для их использования в учебных задачах, даны ниже.
а) Процедура PASCCG используется в условиях:
- Паскаль-программа в виде исходного модуля на перфокартах вводится через входной поток.
- Данные файла input на перфокартах также поступают через входной поток. Процедура содержит два шага с именами:
PASC - шаг трансляции;
GO - шаг выполнения.
Шаг PASC не содержит DD-оператора с именем SISIN , который должен описывать набор данных, содержащий Паскаль -программу в виде исходного модуля. (Следовательно, в задании нужно предусмотреть соответствующий DD -оператор
с именем PАSC .SYSIN .)
Шаг GO не содержит DD -оператор с именем SYSIN , который должен описывать набор данных - файл input программы пользователя. (Следовательно, в задании нужно предусмотреть
соответствующий DD -оператор с именем GO.SISIN .)
Текст процедуры PASCCG в каждом шаге содержит оператор с именем SysPrint , что обеспечивает программам шагов возможность печати в выходном потоке (в частности, это обеспечивает печать в шаге GO через файл
output ) Процедура имеет параметр С , значение которого при вызове процедуры задает выходной класс при печати в выходном потоке.
б) Процедура PASCPCLG используется в условиях:
- Паскаль-программа в виде исходного модуля находится в одном из разделов одной из библиотек.
- Данные файла input поступают в программу из той же библиотеки, но некоторого другого ее раздела. Процедура pаscpclg содержит четыре шага с именами:
UNPK- шаг распаковки;
PАSC- шаг трансляции;
LKED- шаг редактирования;
GO - шаг выполнения.
Чтобы настроить процедуру на конкретное размещение информации, необходимо при ее вызове задать значения параметров Lib, V, M или NAME,MD, С, DATA . Содержательная информация об этих параметрах содержится в комментариях в тексте процедуры.
2. Примеры заданий по теме "Данные типа ФАЙЛ" Всюду ниже первый оператор в задании (JOB ) типа
//FIOGG”NJ JOB 'M090309GG NN', 'ФАМИЛИЯ И. О. CLASS=J,MSGCLASS=J,MSGLEVEL=(2,0)
будет опускаться.
2.1. Задача IX.14б:
~ программа размещена на перфокартах во входном потоке;
- набор данных об абитуриентах каталогизирован на втором уровне под именем prijom.ekzamen ; в программе он описан как файл abitur:
//S1 EXEC PASCCG,C=J
//PASC.SYSIN DD *
PROGRAM PR (OUTPUT,ABITUR);
TYPE T=...;
\/AR ABITUR : FILE OF T;
И Т.Д.-ПРОДОЛЖЕНИЕ ПРОГРАММЫ
/*
//GO.ABITUR DD DSN=PRIJOM.EKZAMEN,DISP=(SHR,KEEP)
//
2.2. Задача IX. 14ж:
- требования к заданию, касающиеся программы и набора данных об абитуриентах, остаются прежними, (как и в п.2.1);
- предусмотреть ввод через файл INPUT во входном потоке.
В задание 2.1 добавить перед концом задания:
//GO.SYSIN DD *
КАРТА С НАИМЕНОВАНИЕМ ПРЕДМЕТА
/*
Кроме того, в заголовке программы добавить input.
2.2.1. Другой вариант:
- программа и данные файла input находятся в библиотеке НТКШ, размещенный на томе OS 000I, в разделах FIOGG#NP И FIOGG#ND:
// STEP1 EXEC PASCPCLG,LIB=KTK111,V=OS0001, // NAME=FIOGG#NP,MD=FIOGG#ND,C=J
//GO.ABITUR DD - КАК В П.2.1
2.3. Задача IX.I4e:
- требования те же, что в п.2.2.1, но файл input не используется;
- набор данных об абитуриентах не каталогизирован, а размещен на магнитной ленте под именем PREKZ (серийный номер тома МT01 ), имя соответствующего файла в программе - abitur;
- результат программы - файл resultat - сформировать на диске (том 0S КТК), считая, что размер компонента файла не превышает 80 байтов, а число компонентов в файле не превышает 300, и каталогизировать под именем PRIJOM.A
//ODIN EXEC PASCPCLG,LIB=KTK111 ,V=OS0001,
// NAME=FIOGG#NP,C=J,DATA^'DUMMY '
//GO.ABITUR DD DSN=PREKZ,DISP=(SHR,KEEP) ,
// UNIT=TAPE,VOL=SER=MT01
//GO.REZULTAT DD DSN=PRIJOM. A,DISP= (MEW, CATLG) ,
// UNIT=SYSDA,VOL=SER=OSKTK,
// SPACE=(80,(300,0))
Другой вариант: SPACE = (TRK,(8,1))
Расчет произведен по формуле:
80 байтов X 300 _ = 8 дорожек
3000 байтов/дорожка
2.4. Задача 1Х.19г:
- файл ПОСТАВКИ, каталогизированный под именем набора данных
DOGOVOR.TEK , раскаталогизировать по окончании задания;
- файл РАЗРЫВ ДОГОВОРОВ НА ПОСТАВКУ, размещенный на магнитной ленте (том MT15 ) под именем набора данных IZM , уничтожить по окончании задания;
- новый файл ПОСТАВКИ каталогизировать под именем набора данных
DOGOVOR.NOW.
DD -операторы:
//GO.POSTAVKI DD DSN=DOGOVOR.TEK,DISP=(SHR,UNCATLG)
//GO.RAZPIV DD DSN=IZM,DISP=(SHR,DELETE),
// UNIT=TAPE,VOL=SER=MT15
// GO.NPOSTAVK DD DSN=DOGOVOR.NOW,DISP=(NEW,CATLG), // UNIT=SYSDA,VOL=SER=OSKTK,
// SPACE=(CYL, (10,5))
Л И Т Е Р А Т У Р А
1. Вирт H. Алгоритмы + Структуры данных = Программы - М.: Мир, 1985.
2. Грунд Ф. Принципы операционной системы ОС ЕС.-M.:
Финансы и статистика, 1984.
3. Дал У., Дейкстра Э., Хоор К. Структурное программирование .-М.: Мир, 1975.
4. Зиглер К. Методы проектирования программных систем.-М.: Мир, 1985.
5. Йенсен K., Вирт H. ПАСКАЛЬ. Руководство для пользователя и описание языка .-М.: Финансы и статистика, 1982.
6. Практикум на ЭВМ. Задачи для программирования по теме:
"Циклическая структура управления, массив как структура данных." - Под общей ред.В.С.Кугуракова .- Казань: КГУ, 1984.
7. Флорес И. Структуры и управление данными. - М.: Финансы и статистика, 1982.
8.Эшли Р., Фернандес Д. язык управления заданием.-М.: Мир, I98I.