Skip to content

Instantly share code, notes, and snippets.

@forstie
Last active June 7, 2023 09:52
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save forstie/0a8e785f487e55c67c991166afb5edb2 to your computer and use it in GitHub Desktop.
Save forstie/0a8e785f487e55c67c991166afb5edb2 to your computer and use it in GitHub Desktop.
The request was to provide an easy to use and customize approach for finding files within the IFS based upon generic names and including the date they were created.
-- With this style of SQL, you can search the IFS by file name, or by creation date, or both!
-- In fact, it is simple to search by any criteria you'd like to use.
--
-- Find files within the IFS where:
-- --> The name starts with "P"
-- --> The file suffix is ".txt"
-- --> The file was created on January 10, 2022
--
--
-- Note: Running the SQL in batch using RUNSQL will be the preferred approach if your IFS is huge.
--
create or replace table ifssearch.results as
(with ifs_search (timeOfSearch, file_name,
PATH_NAME, OBJECT_TYPE, SYMBOLIC_LINK, ASP_NUMBER,
TEXT_DESCRIPTION, FILE_IDENTIFIER_NUMBER, GENERATION_IDENTIFIER,
FILE_SYSTEM_IDENTIFIER, FILE_IDENTIFIER, FILE_ACCESS, CREATE_TIMESTAMP,
ACCESS_TIMESTAMP, DATA_CHANGE_TIMESTAMP, OBJECT_CHANGE_TIMESTAMP, LAST_USED_TIMESTAMP,
DAYS_USED_COUNT, LAST_RESET_TIMESTAMP, ALLOCATED_SIZE, DATA_SIZE, "CCSID", CODE_PAGE,
EXTENDED_ATTRIBUTE_COUNT, CRITICAL_EXTENDED_ATTRIBUTE_COUNT, EXTENDED_ATTRIBUTE_SIZE,
HARD_LINK_COUNT, OBJECT_READ_ONLY, OBJECT_HIDDEN, TEMPORARY_OBJECT, SYSTEM_FILE,
SYSTEM_USAGE, DEVICE_SPECIAL_FILE, OBJECT_OWNER, USER_ID_NUMBER, PRIMARY_GROUP,
GROUP_ID_NUMBER, AUTHORIZATION_LIST, SET_EFFECTIVE_USER_ID, SET_EFFECTIVE_GROUP_ID,
AUTHORITY_COLLECTION_VALUE, OBJECT_AUDIT, OBJECT_AUDIT_CREATE, JOURNALED,
JOURNAL_LIBRARY, JOURNAL_NAME, JOURNAL_BEFORE_IMAGE, JOURNAL_AFTER_IMAGE,
JOURNAL_IDENTIFIER, JOURNAL_START_TIMESTAMP, JOURNAL_OPTIONAL_ENTRIES,
JOURNAL_SUBTREE, PARTIAL_TRANSACTION, APPLY_STARTING_RECEIVER_LIBRARY,
APPLY_STARTING_RECEIVER, APPLY_STARTING_RECEIVER_ASP, OBJECT_SIGNED,
SYSTEM_TRUSTED_SOURCE, MULTIPLE_SIGNATURES, OBJECT_DOMAIN, BLOCK_SIZE,
AUX_STORAGE_ALLOCATION, AUX_STORAGE_OVERFLOW, MAIN_STORAGE_ALLOCATION, STORAGE_FREED,
STORED_LOCAL, VIRTUAL_DISK_STORAGE, DIRECTORY_FORMAT, STREAM_FILE_FORMAT,
UDFS_FILE_FORMAT, UDFS_PREFERRED_STORAGE, UDFS_TEMPORARY_OBJECT,
CASE_SENSITIVE_FILE_SYSTEM, RESTRICT_RENAME_AND_UNLINK, PC_ARCHIVE, SYSTEM_ARCHIVE,
ALLOW_SAVE, SYSTEM_RESTRICT_SAVE, INHERIT_ALLOW_CHECKPOINT_WRITER,
ALLOW_WRITE_DURING_SAVE, EXIT_PROGRAM_SCAN, EXIT_PROGRAM_SCAN_DIRECTORY, SCAN_STATUS,
CCSID_SCAN, CCSID_SCAN_SUCCESS, SCAN_SIGNATURES_DIFFERENT, BINARY_SCAN, CHECKED_OUT,
CHECKED_OUT_TIMESTAMP, CHECKED_OUT_USER) as (
select current timestamp,
rtrim(
substr(path_name, locate_in_string(path_name, '/', -1) + 1, length(path_name))
),
PATH_NAME, OBJECT_TYPE, SYMBOLIC_LINK, ASP_NUMBER, TEXT_DESCRIPTION,
FILE_IDENTIFIER_NUMBER, GENERATION_IDENTIFIER, FILE_SYSTEM_IDENTIFIER,
FILE_IDENTIFIER, FILE_ACCESS, CREATE_TIMESTAMP, ACCESS_TIMESTAMP,
DATA_CHANGE_TIMESTAMP, OBJECT_CHANGE_TIMESTAMP, LAST_USED_TIMESTAMP,
DAYS_USED_COUNT, LAST_RESET_TIMESTAMP, ALLOCATED_SIZE, DATA_SIZE, "CCSID",
CODE_PAGE, EXTENDED_ATTRIBUTE_COUNT, CRITICAL_EXTENDED_ATTRIBUTE_COUNT,
EXTENDED_ATTRIBUTE_SIZE, HARD_LINK_COUNT, OBJECT_READ_ONLY, OBJECT_HIDDEN,
TEMPORARY_OBJECT, SYSTEM_FILE, SYSTEM_USAGE, DEVICE_SPECIAL_FILE, OBJECT_OWNER,
USER_ID_NUMBER, PRIMARY_GROUP, GROUP_ID_NUMBER, AUTHORIZATION_LIST,
SET_EFFECTIVE_USER_ID, SET_EFFECTIVE_GROUP_ID, AUTHORITY_COLLECTION_VALUE,
OBJECT_AUDIT, OBJECT_AUDIT_CREATE, JOURNALED, JOURNAL_LIBRARY, JOURNAL_NAME,
JOURNAL_BEFORE_IMAGE, JOURNAL_AFTER_IMAGE, JOURNAL_IDENTIFIER,
JOURNAL_START_TIMESTAMP, JOURNAL_OPTIONAL_ENTRIES, JOURNAL_SUBTREE,
PARTIAL_TRANSACTION, APPLY_STARTING_RECEIVER_LIBRARY, APPLY_STARTING_RECEIVER,
APPLY_STARTING_RECEIVER_ASP, OBJECT_SIGNED, SYSTEM_TRUSTED_SOURCE,
MULTIPLE_SIGNATURES, OBJECT_DOMAIN, BLOCK_SIZE, AUX_STORAGE_ALLOCATION,
AUX_STORAGE_OVERFLOW, MAIN_STORAGE_ALLOCATION, STORAGE_FREED, STORED_LOCAL,
VIRTUAL_DISK_STORAGE, DIRECTORY_FORMAT, STREAM_FILE_FORMAT, UDFS_FILE_FORMAT,
UDFS_PREFERRED_STORAGE, UDFS_TEMPORARY_OBJECT, CASE_SENSITIVE_FILE_SYSTEM,
RESTRICT_RENAME_AND_UNLINK, PC_ARCHIVE, SYSTEM_ARCHIVE, ALLOW_SAVE,
SYSTEM_RESTRICT_SAVE, INHERIT_ALLOW_CHECKPOINT_WRITER, ALLOW_WRITE_DURING_SAVE,
EXIT_PROGRAM_SCAN, EXIT_PROGRAM_SCAN_DIRECTORY, SCAN_STATUS, CCSID_SCAN,
CCSID_SCAN_SUCCESS, SCAN_SIGNATURES_DIFFERENT, BINARY_SCAN, CHECKED_OUT,
CHECKED_OUT_TIMESTAMP, CHECKED_OUT_USER
from table (
qsys2.ifs_object_statistics(
start_path_name => '/', subtree_directories => 'YES',
object_type_list => '*ALLDIR *ALLSTMF *NOQSYS', ignore_errors => 'YES')
)
)
select *
from ifs_search
where file_name like 'P%.txt' and
date(CREATE_TIMESTAMP) = date('01/10/2022'))
with data
on replace delete rows;
stop;
select * from ifssearch.results;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment