2015-07-13 5 views
0

У меня есть набор данных, который имеет несколько строк данных, я должен что-то сделать с некоторыми из этих строк (не все, и нет никакой логики, чтобы их можно было бы выбрать), у меня есть список розеток, которые нужно выбрать, и это слишком большой список, чтобы скопировать их вручную.Получить только запись nr. x с помощью dfsort в JCL

Так кто-нибудь знает команду dfsort, что, например, может получить записи из этого бита данных:

parameter10000500006 
parameter20000100002 
parameter30000400007 
parameter40000000006 
parameter50000100001 
parameter60000500012 
parameter70000700013 

И только вернет мне 2-й и 3-й, например так:

parameter20000100002 
parameter30000400007 
+0

Я нашел что-то вроде startrec и endrec, но не уверен, как использовать это –

ответ

0

Понял, что вам нужно использовать outfile в сочетании с STARTREC и ENDREC, поэтому теперь я могу просто создать кучу файлов для каждой записи, в которой я нуждаюсь.

Для записи 2 и 3 она может выглядеть немного так:

//SYSIN DD * 
SORT FIELDS=(1,1,CH,A) 
OUTFIL STARTREC=2,ENDREC=3 
/* 
+0

. Итак, вы хотите, чтобы вторая и третья записи после SORTed? Можете ли вы сделать это ясно в своем вопросе, пожалуйста? –

0

Если вы хотите сделать это по одному за раз, было бы лучше использовать OPTION SKIPREC = 1, STOPAFT = 2:

OPTION SKIPREC=1,STOPAFT=2,COPY 

В вашем ответе вы просто видите простой оператор OUTFIL, начиная с первой колонки. Все заявления СОРТ должны начинаться после столбец один. Всегда должны быть явные или неявные операции SORT, MERGE или COPY, иначе ваш шаг завершится неудачно.

Операция COPY может быть указана как OPTION COPY или SORT FIELDS=COPY или MERGE FIELDS=COPY.

Причина, по которой это лучше сделать в инструкции OPTION, заключается в том, что данные удаляются/включаются как можно раньше.

Если у вас, например, была операция SORT (non-COPY), то ваше решение OUTFIL все равно будет работать, но вы должны были бы СОРТИРОВАТЬ весь файл до того, как получите окончательное исключение.

STARTREC и ENDREC обычно видны, когда SKIPREC и STOPAFT не могут использоваться для вашей задачи, потому что происходит СОРТИРОВКА или СЛУЧАЙ (так что вы не знаете, какая будет первая запись в новых данных).

В наборах данных на мейнфрейме у нас нет «строк» ​​данных, у нас есть записи. Это смутит вас, если вы обратитесь к документации о том, как обращаться с «строками», потому что вне DB2 этот термин в лучшем случае ничего не значит, или не то, что, по вашему мнению, означает в худшем случае.

+0

да, вы правы, перед этим у меня был своего рода шаг, я отредактирую свой ответ –

+0

@JeremyC вы хотите сделать это для более чем одного выбора сразу? –

+0

, это не очень важно, у нас есть сценарий rexx, который может запускать этот jcl несколько раз, он должен быть выполнен со временем (у нас есть несколько недель), все сразу займет слишком много времени, мы делаем около 10 каждый день во время обеда, когда система менее занята –

 Смежные вопросы

  • Нет связанных вопросов^_^