QSYS2.IFS_OBJECT_STATISTICS en RPGLE

vos questions et suggestions sur ce forum, et son fonctionnement
Répondre
Larry57500
Messages : 5
Enregistré le : mer. 27 janv. 2021, 10:28:56
Localisation : Alsace

QSYS2.IFS_OBJECT_STATISTICS en RPGLE

Message par Larry57500 »

Bonjour,

J'ai un petit soucis pour reprendre via sql le dir d'un répertoire avec la nouvelle commande :
QSYS2.IFS_OBJECT_STATISTICS
Je fait un CHGJOB CCSID(1147)

Code : Tout sélectionner

D repertoire      s            100a     

Exec SQL                                                           
 DECLARE C1 CURSOR WITHOUT HOLD FOR                                
 SELECT CAST(path_name AS CHAR(100))                               
 FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/home/stephane','NO'))    
 where OBJECT_TYPE <> '*DIR';                                      
exec sql open C1;                                                  
exec sql                                                           
 fetch c1 into :repertoire;                                        
Dow sqlcode = 0;                                                   
 dsply %subst(repertoire:1:50);                                    
 exec sql                                                          
  fetch c1 into :repertoire;                                       
Enddo;                                                             
exec sql close c1;                                                 
Le sqlcode me donne une erreur. -501
Quelqu'un a déjà fait un programme utilisant cette fonction ?

D'avance Merci.

Stéphane

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

Re: QSYS2.IFS_OBJECT_STATISTICS en RPGLE

Message par cmasse »

J'ai testé le code

avec un utilisateur "normal", j'ai

Cause . . . . . : Un avertissement SQLSTATE de type 01xxx a été renvoyé par
la procédure ou la fonction IFS_OBJECT_STATISTICS définie par l'utilisateur
dans QSYS2 (avec le nom spécifique QSQIFSOBJS), ainsi qu'un texte de message
NOT AUTHORIZED TO RETRIEVE OBJECT ATTRIBUTES, OBJECT IS xxxxx

avec un utilisateur avec des droits, j'ai la liste des répertoires....
Christian Massé (Volubis.fr)

Larry57500
Messages : 5
Enregistré le : mer. 27 janv. 2021, 10:28:56
Localisation : Alsace

Re: QSYS2.IFS_OBJECT_STATISTICS en RPGLE

Message par Larry57500 »

Bonjour Christian,

Si je remplace par une chaine de caractère, c'est OK.

Code : Tout sélectionner

//Exec SQL                                                             
// DECLARE C1 CURSOR WITHOUT HOLD FOR                                  
// SELECT CAST(path_name AS CHAR(100))                                 
// FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/home/stephane','NO'))      
// where OBJECT_TYPE <> '*DIR';                                        
sql ='SELECT CAST(path_name AS CHAR(100)) +                            
  FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS(''/home/stephane'',''NO'')) + 
  where OBJECT_TYPE <> ''*DIR''';                                      
exec sql prepare s1 from :sql;                                         
exec sql declare c1 cursor for s1;                                     
//                                                                     
exec sql open C1;                                                      
Si je rajoute un ça avec le code de mon premier post :

Code : Tout sélectionner

Exec SQL  GET DIAGNOSTICS condition 1  
 :MessageText = MESSAGE_TEXT ;         
 dsply %subst(MessageText:1:50);       
Le diagnostique me remonte 'Le curseur C1 n'est pas ouvert.'????

Stéphane

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

Re: QSYS2.IFS_OBJECT_STATISTICS en RPGLE

Message par cmasse »

DU coup il faut récupérer le diagnostique après PREPARE et après OPEN du curseur ou bien aller voir la LOG (DSPJOBLOG)
Christian Massé (Volubis.fr)

Larry57500
Messages : 5
Enregistré le : mer. 27 janv. 2021, 10:28:56
Localisation : Alsace

Re: QSYS2.IFS_OBJECT_STATISTICS en RPGLE

Message par Larry57500 »

Bonjour,

J'y suis finalement arrivé, mais pas en sql natif, via une chaine de caractère, tout fonctionne bien.

Merci.

Stéphane

Répondre