Les processus discrets de lecture d'un fichier de données factuelles


o La classe d'initialisation de la lecture des enregistrements
o La classe d'exécution de la lecture d'un enregistrement
o Corps de méthodes prédéfinies pour la lecture d'un fichier de données factuelles
Deux sous-classes de processus discrets permettent d'installer un mécanisme de lecture, enregistrement par enregistrement, d'un fichier de données factuelles. On rappelle seulement ses enregistrements correspondent chacun à un instant quelconque, précisé dans les champs, et qu'ils sont rangés dans le fichier dans l'ordre croissant des instants.

Ce mécanisme nécessite la déclaration préalable d'une classe de FactualDataFile : on ne pourra lire que des fichiers physiques qui auront fait l'objet d'une instantiation de cette classe (fichier logique). Le symbole de la sous-classe en question de FactualDataFile est une propriété des processus (accessible par FileClassId()).

Les deux sous-classes sont les suivantes :

Il est d'ores et déjà important de noter que la tâche du modélisateur va se limiter à la gestion de l'initialisation, parce que celle-ci va lancer à son tour, et automatiquement, la série des lectures des enregistrements. L'attitude du modélisateur est donc ici identique à celle adoptée pour le processus (continu) de lecture des fichiers de données séquentielles (voir page dédiée). En conséquence, le modélisateur va spécifier dans le processus d'initialisation le fichier lu et la méthode d'exploitation des champs des enregistrements (méthode PostRead, voir plus loin), puis transfèrera ces spécifications au processus de lecture effective des enregistrements (classe ReadFactualDataRecordProcess).

Ces deux processus sont naturellement dotés d'une méthode d'exécution (mobilisée par la directive EXEC). Elles ont dans DIESE un corps prédéfini, mais surchargeable.

Pour le processus d'initialisation de la lecture, ce corps prédéfini réalise les tâches suivantes :

Quelques remarques communes aux processus de lecture des fichiers de données factuelles et aux processus de lecture des fichiers de données séquentielles sont faites dans le chapitre dédié à ces derniers (notamment sur la possibilité de surcharger les méthodes d'exécution, et sur la manière de spécifier le fichier que doit lire le processus).

Pour le processus d'exécution de la lecture, le corps prédéfini de la méthode d'exécution appelle la méthode ReadNextEnrgt de la classe FactualDataFile, sur l'instance associée au processus. Puis, le cas échéant, la méthode qui fait l'objet du paragraphe suivant.

Un processus de cette classe est aussi doté d'une méthode d'exploitation des données contenues dans l'enregistrement qui vient d'être lu sur le fichier physique dans le pas courant du processus (et, on le sait, installés dans les "champs" du fichier logique). Cette méthode n'est pas dotée d'un corps prédéfini. Si le développeur veut l'exploiter, il doit obligatoirement définir et écrire la fonction qui deviendra le corps de la méthode (par un appel à SetPostRead). A titre d'exemple, voici un contenu typique de cette fonction :

void myReadFiles_postReadProcesss_Body(ProcessMethod* pM) {
  ReadFactualDataRecordProcess* pCP 
     = (ReadFactualDataRecordProcess*)pM->DescribedProcess();
  BasicEntity* pE = pCP->ProcessedBasicEntity();
  FactualDataFile* pF = pCP->GetFile();
  float x = pF->GetFloatFieldValue(FIELD_X);
  // la valeur d'un champ est affectée à un descripteur d'une entité
  pE->SetFloatVarValue(X, x);
  ...
}

Pour la mise en oeuvre d'un processus de cette classe, se reporter à la documentation des processus (continus) de lecture d'un fichier de données séquentielles (voir page dédiée).


This page was generated with the help of DOC++.