Каков наиболее эффективный способ чтения и установки временных меток модификации файлов для наборов данных MVS и элементов PDS?

Я пытаюсь получить доступ к набору данных и метаданным участников в MVS и не могу найти механизм для получения и установки времени модификации (хорошо, и правила RACF, но сейчас это не важно). Одна из наших (многих) целей — согласовать метки времени в USS с аналогичным значением в MVS при развертывании файлов.

Очевидным механизмом является использование LISTCAT от TSO, но это показывает только год создания. день (так что сегодня 19.294). Это ужасно медленно, когда мне приходится сканировать тысячи файлов на наличие последних изменений. Я работаю в среде C, в которой есть возможность встраивать 360 инструкций ассемблера. Стандартные вызовы библиотеки z/OS C/C++, такие как fstat/stat, не поддерживают файлы MVS или элементы PDS.

В документации утилиты PDS есть намеки на то, что ISPF иногда устанавливает время модификации в пользовательской области каталогов PDS, и есть намеки на то, что используется формат 1 DSCB, но мы не смогли это проверить, и определения полей для этого формата не описывать временные метки модификации.


mvs
person Randall Becker    schedule 21.10.2019    source источник
comment
Даты для файлов MVS хранятся в формате 1 DSCB в томе VTOC, задокументированном в DFSMSdfp Advanced Services. Манипулировать DSCB сложно, и вы можете сломать VTOC, если не будете осторожны. Статистика ISPF хранится в каталоге PDS. Это проще при использовании служб ISPF, но это означает, что вам нужно вызывать ISPF с помощью SELECT PGM или CMD, указывающего на сценарий Rexx, который вызывает программу. Поскольку вы имеете дело с глубоким уровнем, я рекомендую использовать Metal C, который предназначен для работы с вещами на уровне ОС путем перехода к сборке за счет отсутствия большого количества подпрограмм stdlib.   -  person zarchasmpgmr    schedule 22.10.2019
comment
Спасибо. Я посмотрю на этот путь.   -  person Randall Becker    schedule 22.10.2019
comment
Нам удалось использовать поток REXX (файл, 'C', 'QUERY REFDATE') для получения дат. Однако разрешение зависит только от дня года, а не от секунд. Я решил, что зависимость от временных меток — не очень хороший план, поэтому мы используем другой дизайн. Спасибо за помощь.   -  person Randall Becker    schedule 29.10.2019
comment
Пожалуйста. К сожалению, z/OS для классических наборов данных не отражает время обновления.   -  person zarchasmpgmr    schedule 30.10.2019


Ответы (1)


Поскольку элементы PDS являются частью одного набора данных, и причина, по которой вы получаете смешанные указания, заключается в том, что ничто в самом наборе данных окончательно не записывает такую ​​отметку времени.

По умолчанию PDS не имеет такого поля для каждого члена. Утилиты ISPF используют поле данных пользователя, которое является частью каталога (в записи каталога содержится информация для каждого члена), для записи этого для членов PDS, которые редактируются/редактируются, если и только если они редактируются с использованием ISPF или API ISPF ( согласно LMMSTATS).

  • Обратите внимание, что статистика ISPF не является неприкосновенной и занимает место в каталоге, ее можно удалить, например, с помощью опции ISPF 3.5 (распространенная попытка исправления для D или E37 abends).

Если записи SMF типа 42 захватываются/записываются, то это может быть более показательным, но все же не всеохватывающим, поскольку такая информация записывается только при выдаче STOW (каталога обновления) (явно или неявно). Большинство программ, которые обновляют, создают или удаляют участников, должны выдавать STOW. Однако некоторые утилиты могут не работать.

Вас могут заинтересовать подтипы: -

20, 21, 24 и 25 (22 и 23 относятся к DFSMS).

person MikeT    schedule 17.11.2019