Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Записи и файлы.doc
Скачиваний:
1
Добавлен:
16.07.2019
Размер:
759.81 Кб
Скачать

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.