function Sci2AnnotationFile(FileInfoDatFile,SciFileName)
// function Sci2AnnotationFile(FileInfoDatFile,SciFileName)
// --------------------------------------------------------------------------------
// This function reads the .sci input file and generates the correspondig .ann
// file.
//
// Input data:
// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
//
// Output data:
//
// Status:
// 25-Jun-2007 -- Nutricato Raffaele: Author.
// -----------------------------------------------------------------

// ---------------------
// --- Load section. ---
// ---------------------
// --- Load File Info Structure. ---
load(FileInfoDatFile,'FileInfo');

// --- Load Shared Info Structure. ---
load(FileInfo.SharedInfoDatFile,'SharedInfo');

// --- Extraction of the function name and number. ---
funname   = SharedInfo.Next(1).SCIFunName;
funnumber = SharedInfo.NextSCIFunNumber;
// -------------------------
// --- End load section. ---
// -------------------------

// --- File names initialization. ---
[tmppath,tmpname,tmpext] = fileparts(SciFileName);
AnnFileName = fullfile(FileInfo.USER2CLibAnnDirName,tmpname+'.ann');

PrintStepInfo('Generate annotations file: '+AnnFileName,...
   FileInfo.GeneralReport,'both');

// ---------------------------------------
// --- Open the .sci file (read only). ---
// ---------------------------------------
[inscifid,inscierr] = mopen(SciFileName,'r');
if (inscierr < 0)
   SCI2Cerror(['Cannot open (in read mode): '+SciFileName]);
end

// ----------------------------------------------
// --- Loop over the lines of the input file. ---
// ----------------------------------------------
line_position = 0;
while (meof(inscifid) == 0)
   check_string = stripblanks(mgetl(inscifid,1));
   line_position = line_position + 1;
   if (length(check_string) >= 1)
      if ((SCI2Cstrncmps1size(SharedInfo.Annotations.GBLVAR,check_string)) | ...
         (SCI2Cstrncmps1size(SharedInfo.Annotations.VARTYPE,check_string)) | ...
         (SCI2Cstrncmps1size(SharedInfo.Annotations.FUNNOUT,check_string)) | ...
         (SCI2Cstrncmps1size(SharedInfo.Annotations.FUNSIZE,check_string)) | ...
         (SCI2Cstrncmps1size(SharedInfo.Annotations.FUNTYPE,check_string)))
         PrintStringInfo('Line '+string(line_position)+' - Found Annotation:: '+' ""'+check_string+' ""',...
            FileInfo.GeneralReport,'file','y');
         PrintStringInfo(check_string,...
            AnnFileName,'file','y');
 
      end
   end
end
// --------------------------------------------------
// --- End loop over the lines of the input file. ---
// --------------------------------------------------

mclose(inscifid);
endfunction