/***************************************************************/
Type Fichier Implemente Public : IFlux Defaut Final TailleSegment 4 ConserverObjets
/* Objet : Encapsulation du type Fichier. */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des propriétés de IFlux. */
/*-------------------------------------------------------------*/
Prive :
ModeOuverture : ModeOuvertureFlux Lecture Public Trace;
NomFlux : Caractere Lecture Public Trace;
FinDeFlux : Booleen Lecture Public;
ModeOptimisation : ModeOptimisationFlux Lecture Public;
EstMultiplexe : Booleen Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet. */
/*-------------------------------------------------------------*/
Public :
Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
Procedure Convertir(O : Nul Ou Objet);
Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
Procedure SupprimerPropriete(NomPropriete : Caractere);
Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Heritage des methodes de IFlux. */
/*-------------------------------------------------------------*/
Public :
Constructeur Habilitation ();
Procedure Lire(B : Booleen Sortie);
Fonction Lire(B : Binaire Sortie, Nombre : Nul Ou Entier) Retourner Nul Ou Entier;
Fonction Lire(C : Caractere Sortie, Nombre : Nul Ou Entier) Retourner Nul Ou Entier;
Procedure Lire(E : Entier Sortie);
Procedure Lire(R : Reel Sortie);
Fonction LireUneLigne(C : Caractere Sortie) Retourner Nul Ou Entier;
Fonction LireUnMot(C : Caractere Sortie) Retourner Nul Ou Entier;
Procedure Ecrire(B : Nul Ou Booleen);
Procedure Ecrire(C : Nul Ou Binaire);
Procedure Ecrire(C : Nul Ou Caractere);
Procedure Ecrire(E : Nul Ou Entier);
Procedure Ecrire(R : Nul Ou Reel);
Procedure Fermer();
Fonction Optimiser(Invariant) LirePageDeCode() Retourner PagesDeCodesSupportees;
Procedure ChangerPageDeCode(P : PagesDeCodesSupportees);
Fonction LirePosition() Retourner Entier;
Procedure FixerPosition(Position : Entier, PositionReference : PositionFlux=PositionFluxDebut);
Procedure Vider();
Procedure Tronquer();
/*-------------------------------------------------------------*/
/* Methodes propres. */
/*-------------------------------------------------------------*/
Public :
Constructeur Habilitation Optimiser(Invariant, NulAbsorbant) (NomDuFichier : Nul Ou Caractere, ModeOuverture : ModeOuvertureFlux, ModeOptimisation : ModeOptimisationFlux=Asynchrone1024, EstMultiplexe:Booleen=Faux);
Procedure DeposerSurDisque();
Procedure Effacer();
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type Fichier modélise un fichier.
Le type Fichier possède un constructeur explicite permettant d'ouvrir un fichier en lecture, en écriture ou en lecture-écriture selon le paramètre ModeOuverture. Pour connaître la signification de la valeur de ModeOuverture, veuillez vous reporter à la fiche ModeOuvertureFlux.
Si NomFichier ou ModeOuverture est Nul, le fichier n'est pas ouvert.
Si le nom du fichier comporte un fichier d'accès, alors le séparateur de chemin peut être indifféremment division /
ou division inversée \
. En ce cas, Up ! System réalise la transcription du séparateur en le séparateur natif de la plate-forme.
Le nom du fichier peut comporter des variables environnement précédées par dollar $
. En ce cas, Up ! System réalise la substitution des variables environnement par leur valeur.
Le nom du fichier peut comporter un accès distant introduit par l'opérateur arrobase @
. En ce cas, l'opérateur doit introduire un nom d'un serveur disponible parmi les noeuds de la topologie gérée par Up ! Object Request Broker. L'objet est alors créé sur ce serveur et non en local.
Le paramètre ModeOptimisation permet de spécifier le mode d'optimisation pour réaliser des accès disque par bloc. Le paramètre EstMultiplexe permet de spécifier si le fichier doit être multiplexé ou non.
Si une erreur survient lors de l'ouverture, les exceptions OuvertureEcriture ou OuvertureLecture sont envoyées.
Variable
/******/
FichesPatients : Fichier;
/* 'FichesPatients' est une variable de type fichier. Elle est toujours renseignée. */
FichesProspects : Nul Ou Fichier;
/* 'FichesProspects' est une variable de type fichier. Elle n'est pas toujours renseignee. */
Principal
/*******/
Debut
FichesPatients=Fichier("$APP_HOME/fiches.txt", LectureTexte);
/* Ouverture du fichier 'fiches.txt' en lecture mode texte. Le chemin d'accès à ce fichier est donné par la variable environnement APP_HOME. */
...
Si FichesPatients==FichesProspects Alors
/* Egalité entre deux fichiers. */
...
Fin Si
Si FichesPatients!=FichesProspects Alors
/* Inégalité entre deux fichiers. */
...
Fin Si
Fin Principal
- | - | - | - | - | - | - | - | - |