$BASICTYPE "P"
SUBROUTINE DBA.SELECTMV(RETURNVAL, INPUT, OUTPUT)
EXECUTE 'SET-THOUS .'
EXECUTE 'SET-DEC ,'
EXECUTE 'DATE.FORMAT'
* Slection d'articles d'un fichiers (par une phrase francais)
* puis selection des valeurs (att, val, sous-val)  retourner.
*
* RETURNVAL = valeur de retour
* INPUT:
*  att1 = selection avec critere et tri (ECLTYPE P)
*  att2 = nom du fichier sur la base de donnes
*  att3 = les descripteurs  renvoyer (si att4=null)
*         format:       n = attribut n
*
* CS:
*   -1 : open file error
*   -2 : open dict file error
*
EQU  TRUE  TO  1
EQU  FALSE TO  0
*
RETURNVAL=''
J = 0
I = 0
INPUT<3>=TRIM(INPUT<3>)

*
* Travail sur liste active: cration de la liste
*
FILENAME=INPUT<2>
*
OPEN FILENAME TO BUF.FILE ELSE
  RETURNVAL=-1
  RETURN 1
END
OPEN "DICT",FILENAME TO DICTBUF.FILE ELSE
  RETURNVAL=-2
  RETURN 1
END
*
* cration de la liste
EXECUTE 'ECLTYPE "P"' CAPTURING DUMMY
EXECUTE INPUT<1> CAPTURING DUMMY

*
* Retour de liste slectionne
*
OUTPUT=""
NBR=DCOUNT(INPUT<3>,' ') ;* Nombre d'attribut demand

10 *
READNEXT CLE THEN
CLE=CLE<1,1,1>
  * traitement de chaque article
  READ ITEM FROM BUF.FILE,CLE THEN
   TMP=''
   *
   * pour chaque descripteur rfrenc
   *
   FOR I=1 TO NBR
    ATTRIBUT=FIELD(INPUT<3>,' ',I)
    IF ATTRIBUT=0 THEN 
	TMP<1,I>=CLE 
    END ELSE 
	TMP<1,I>=""
	NB = DCOUNT( ITEM<ATTRIBUT>, CHAR(253) )
	FOR J = 1 TO NB
		TMP<1,I,J> = ITEM<ATTRIBUT,J>
	NEXT J
    END
   NEXT I
   *
   * resultat 
   *
   OUTPUT<-1>=TMP
  END
  GOTO 10
END
*
FIN: *
RETURN 1
