Я лично отмечаю поле коллекций моих классов как final
, чтобы сохранить пользователей моего класса от проверки, является ли он нулевым или нет. Это работает, потому что, как только значение уже назначено конечной переменной, оно никогда не может быть переназначено другому значению, включая null.
SYSOUT
ничем не отличается от любого другого DD, но по соглашению используется для вывода. Вы можете создать такой DD в STEP, который создает файл:
//SYSOUT DD DSN=MY.SYSOUT,
// DISP=(NEW,CATLG,DELETE),UNIT=DISK,
// DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0),
// SPACE=(27998,(2500,2500),RLSE)
DCB будет варьироваться в зависимости от 133 (при условии, что символ ASA) является распространенным. Нет необходимости в другом шаге.
При желании вы можете в следующем шаге использовать IEBGENER для копирования диска на другой SYSOUT для сохранения содержимого в JOB. Насколько мне известно, на следующем шаге легко захватить SYSOUT и скопировать на диск.
Да. Вы должны правильно настроить LRECL и RECFM, но вы можете получить их из исходного кода в программу, которую вы выполняете. Большинство стандартных отчетов - 133 и FB или 132 и FBA. Кажется, я помню, что IDCAMS был 121 и VBA.
//WNMPRAD5 EXEC PGM=WNMPRAD5,COND=(4,LT)
//SYSPRINT DD SYSOUT=1
//SYSDBOUT DD SYSOUT=1
//ENTRADA DD DSN=WNMT.SCADUC.WGPT022.ZXDALMA.UNLDBI,DISP=OLD
//SORTIDA DD DSN=WNMT.SCADUC.WGPT022.ZXDALMA.OUTPUT.V02,
// DISP=(NEW,CATLG,DELETE),UNIT=DISK,
// DCB=(RECFM=FB,LRECL=278),
// SPACE=(27998,(2500,2500),RLSE)
//SYSOUT DD DISP=(NEW,CATLG,DELETE),
// DSN=&SYSUID..STEPNAME.SYSOUT,
// AVGREC=K,
// LRECL=133,
// RECFM=FB,
// SPACE=(500,(10,10))
//SYSIN DD *
N0100
/*
Укажите параметр расположения и имя набора данных в sysout. Итак, это будет что-то вроде
// sysout dd dsn = abc.xyz, disp = (по вашему выбору)