/******************************************************************************
 * Programme : Verificación de existencia de archivo SASHDAT en CAS
 * Reference : VERIFIDA03
 * Source    : https://www.wearecas.eu/fr/sampleCode/VERIFIDA03
 ******************************************************************************/

/* --- BLOC 1 --- */
%if %sysfunc(exist(&outprefix._&lib)) ne 1 %then %do;
  %let rc=%sysfunc(dosubl(%nrstr(
    /* Read in table list (once per &lib per session) */
    proc cas;
      table.fileinfo result=source_list /caslib="&lib";
      val=findtable(source_list);
      saveresult val dataout=&outprefix._&lib;
    quit;
    /* Only keep name, without file extension */
    data &outprefix._&lib;
      set &outprefix._&lib(where=(Name like '%.sashdat') keep=Name);
      Name=upcase(scan(Name,1,'.'));
    run;
  )));
%end;

/* --- BLOC 2 --- */
/* Scan table for hdat existence */
%let dsid=%sysfunc(open(&outprefix._&lib(where=(name="&ds"))));
%syscall set(dsid);
%let rc = %sysfunc(fetch(&dsid));
%let rc = %sysfunc(close(&dsid));

/* Return result */
%if "%trim(&name)"="%trim(&ds)" %then 1;
%else 0;

