Il peut vous arriver de vouloir rechercher une chaine de caractères dans votre IFS voici comment vous pouvez faire en utilisant SQL service .
1) Recherche d’un nom fichier sur une chaine
SELECT cast(substr(PATH_NAME , 1 , 132) as char(132)) as PATH_NAME
FROM TABLE(IFS_OBJECT_STATISTICS(
START_PATH_NAME => ‘/HOME/PLB’ ,
OBJECT_TYPE_LIST => ‘*ALLSTMF’))
where ucase(PATH_NAME) like (‘%PRO%’)
Ici, recherche PRO dans le nom du fichier du répertoire /HOME/PLB
2) Recherche d’une chaine dans les fichiers
Création d’un fichier résultat !
CREATE OR REPLACE TABLE RETURN_TABLE
(STMF_NAME char(100),
LINE_NUMBER decimal(5 , 0),
LINE varchar(132))
Recherche de la chaine dans tous les fichiers
begin
for
SELECT PATH_NAME as IFS_PATH_NAME
FROM TABLE(IFS_OBJECT_STATISTICS(
START_PATH_NAME => ‘/HOME/PLB’ ,
OBJECT_TYPE_LIST => ‘*ALLSTMF’))
do
INSERT INTO RETURN_TABLE
SELECT IFS_PATH_NAME ,
LINE_NUMBER ,
cast(substr(LINE , 1 , 132) as char(132))
FROM TABLE(IFS_READ(
PATH_NAME => IFS_PATH_NAME))
WHERE UPPER(LINE) like ‘%’ concat ‘PRO’ concat ‘%’ ;
end for;
end
Ici, recherche PRO dans les fichiers du répertoire /HOME/PLB
Attention
Ces recherches sont très consommatrices elles doivent être soumises en batch
Conclusions :
Ça peut vous aidez dans vos recherches, mais attention au nombre de fichiers à scanner.
Si vous êtes amené à faire régulièrement ce type de recherche, préférer la mise en œuvre de OMNIFIND
Si vous voulez l’exemple en fonction table il est ici :
https://github.com/Plberthoin/PLB/tree/master/GTOOLS/SQL