Professional Documents
Culture Documents
Sommaire
1. 2. 3. 4. 5. Introduction ____________________________________________________________ 2 Un petit peu dhistoire____________________________________________________ 2 Organisation du stockage _________________________________________________ 3 Les diffrentes mthodes daccs ___________________________________________ 5 Les fichiers texte ________________________________________________________ 6
5.1. Les caractristiques du stockage et des enregistrements _________________________ 6
Le codage ASCII ____________________________________________________________ 6 Le codage UNICODE _________________________________________________________ 6 Le stockage _________________________________________________________________ 7 Ouverture __________________________________________________________________ Oprations sur les donnes _____________________________________________________ Fermeture __________________________________________________________________ Tester lexistence du fichier ____________________________________________________ 7 8 8 9 5.1.1. 5.1.2. 5.1.3.
5.2.
6.
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 1 - 13
1. Introduction
Ce document prsente dans une premire partie les notions de base relatives aux fichiers, les mthodes daccs et les types de fichiers, puis dans une deuxime partie, les instructions qui nous seront utiles pour manipuler les donnes sous cette forme.
De telles cartes comportaient 80 colonnes dans lesquelles on pouvait coder les valeurs 0 et 1 en perforant la carte ou en la laissant intacte. Sur une carte perfore, on pouvait donc enregistrer 80 octets. Cela vous parat tre lge de pierre de linformatique ? Cest vrai mais sachez aussi que si vous lisez un programme crit en RPG (GAP), langage utilis pour le codage de programmes sur des AS 400 vous trouveriez cette structure pour reprsenter vos instructions ! Ainsi, nous trouvons des enregistrement de type I qui correspondent la description des donnes en entre de programme et des instructions de type O qui reprsentent la description des donnes en Sortie.
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 2 - 13
Initiation la manipulation de fichiers Pour enregistrer des quantits plus grandes d'informations, il suffisait alors d'utiliser un grand nombre de ces cartes. On obtient alors un paquet de fiches plus ou moins pais qui constitue un "fichier informatique" plus ou moins volumineux !
Ces fichiers contenaient donc les donnes faire traiter par l'ordinateur ou les programmes faire excuter. Quand les supports magntiques ont t utiliss plus frquemment, lappellation fichier informatique a perdur, fichier informatique reprsentant tous les paquets d'informations enregistres. Nous nous intresserons bien sr seulement la notion de fichiers de donnes par la suite.
3. Organisation du stockage
Quand les supports magntiques ont t utiliss plus frquemment, on a continu d'appeler fichier informatique tous ces paquets d'informations enregistres sur support numrique. Le disque dur d'un ordinateur pouvant supporter des milliers de fichiers, il doit pouvoir retrouver chacun d'eux trs rapidement. Pour ce faire, il a besoin d'un systme d'organisation efficace de ces fichiers. Il doit pouvoir, sur demande de lutilisateur, charger lun de ces fichiers trs rapidement. Ce travail didentification et de classement est pris en charge par le systme dexploitation. Lutilisateur na pas besoin de ce soucier o se trouve stock physiquement le fichier. Il existe plusieurs faons, pour les systmes d'exploitation, de grer l'accs aux fichiers. Il existe de nombreux systmes diffrents de gestion de fichiers, fonction des systmes dexploitation devant les prendre en charge. Nous pouvons citer FAT, NTFS, Ext2, FAT, dont lacronyme signifie "File Allocation Table", utilise un catalogue des fichiers stocks sur les disques durs de lordinateur. Lorsquun fichier fait lobjet dune demande daccs, le systme consulte le catalogue et identifie sa position physique sur le disque. Le catalogue contient le numro de piste et le secteur o se trouve chaque fichier. Ce catalogue est stock un endroit rserv par le systme. Ainsi, cest presque instantanment que vous avez accs au fichier.
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 3 - 13
Initiation la manipulation de fichiers L'illustration ci-dessous reprsente le catalogue du disque. Le catalogue est figur sur la premire piste. Les codes couleur prsentent diffrents fichiers.
Lutilisateur o le programmeur naura jamais se soucier de lindexation des fichiers et de lorganisation de leur stockage physique. Ce quils voient est une vue logique, prsente sous la forme dune arborescence de rpertoires, leur permettant de saffranchir de toute la complexit sous-jacente cette organisation. Pour chaque fichier, les renseignements les plus importants indiqus dans la FAT sont le nom du fichier et la piste et secteur o le fichier commence. Il y a bien entendu de nombreuses autres informations, notamment les proprits du fichier, mais il nest pas ncessaire de rentrer dans ces dtails qui nont pas dintrt pour lobjectif poursuivi.
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 4 - 13
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 5 - 13
A la diffrence des fichiers binaires, que nous verrons par la suite lors de linitiation la programmation, et qui stockent des octets non directement comprhensibles et souvent dans un codage propre une application ou langage, les fichiers texte stockent des caractres directement affichables. Ils peuvent tre cods selon diffrentes normes et standards. Nous traiterons ici des normes usuelles que sont lASCII et lUnicode.
5.1.1.
Le codage ASCII
Plusieurs dclinaisons de ces encodages existent. En fait, si nous prenons le cas de lencodage ASCII, un caractre est cod un octet. Nous avons donc 256 possibilits. Cela ne permet pas de prsenter lensemble des caractres des diffrents alphabets. Il existe donc un transcodage des caractres fonction dun code de page prdfini. Ainsi, un caractre ayant la mme valeur pourra avoir plusieurs reprsentations en fonction du code page qui servira pour sa translation. En fait, la table des caractres ASCII est constitu de deux parties. La premire partie prsente les caractres communs utiliss par tous : on trouvera dans cette partie les caractres spciaux (_ ;@,$ ;), les majuscules et minuscules de lalphabet europen non accentues. La deuxime partie prsentera les caractres qui peuvent, en fonction de la page de code utilise, avoir des reprsentations diffrentes. Il sagit notamment du jeu de caractres accentus. Voir table ASCII en annexe.
5.1.2.
Le codage UNICODE
Les applications ont aujourdhui besoin de disposer de jeu de caractres tendus et qui, pour des raisons de globalisation et dchanges internationaux, ncessitent de supprimer toute ambigit sur la nature du caractre stock. Ainsi est ne la norme Unicode. Un caractre Unicode sera stock sur 2 octets (16 bits), ce qui permet de reprsenter plus de 65000 caractres. La norme Unicode est donc adapte aux applications internationales multilingues et en simplifie les dveloppements. La norme Unicode intgre la premire partie de la table Ascii qui est commune l'ensemble des langues. Il existe aujourd'hui des mcanismes d'extension la norme Unicode qui permet par recours des paires de substitution d'tendre le nombre de caractres pouvant tre reprsents plus d'un million. Un substitut ou paire de substitution est une paire de valeurs de codage Unicode 16 bits qui reprsentent elles deux un seul caractre. Ce qu'il faut garder l'esprit est que chacune de ces paires correspond en fait un caractre 32 bits. Et l, on peut envisager de disposer dun Document Millsime Page OFPPT @ C-E-001.doc mars 12 6 - 13
Initiation la manipulation de fichiers alphabet particulirement riche, comme le jeu de caractres chinois par exemple.
5.1.3.
Le stockage
Dans un fichier texte, chaque enregistrement sera stock sur une ligne du fichier et un caractre de fin d'enregistrement dlimite celui-ci. Les enregistrements peuvent tre de longueur fixe ou de longueur variable, et les diffrentes zones de l'enregistrement isoles les unes des autres par un caractre de sparation appel couramment dlimiteur de texte. Le point virgule est couramment utilis pour les fichiers avec lextension CSV par exemple.
5.2.
Avant de pouvoir manipuler les donnes, il faut raliser une opration douverture de fichier. 3 modes sont disponibles qui permettront de louvrir en lecture, en criture ou en ajout. Votre programme ne communique pas directement avec le fichier physique stock sur le disque mais passe par une zone tampon intermdiaire dsign sous le terme de Buffer. Cest au moment de la rcriture sur disque que les donnes prsentes dans le buffer seront stockes sur le disque et le buffer vid. En fait pour tre manipules, les donnes doivent tre charges en mmoire RAM. Le buffer sera identifi par un N compris entre 1 et 255.
5.2.1.
Ouverture
Lors de louverture du fichier il faut prciser pour quelle opration celui-ci sera utilis, Entre, Sortie ou Ajout. On indiquera aussi par un n le buffer qui sera la reprsentation du fichier en mmoire. Dans notre pseudo-langage nous utiliserons :
OUVRIR nomdufichier POUR operation COMME NumBuffer
O : Nomdufichier : nom physique complet du fichier, exemple c:\monfichier.txt Operation : ENTREE, SORTIE ou AJOUT (INPUT, OUTPUT ou APPEND) NumBuffer : un numro de 1 255 prcd du caractre #
Ainsi, nous crirons pour lire les enregistrements dun fichier EcritureComptable.csv stock dans le rpertoire Compta du disque E.
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 7 - 13
Initiation la manipulation de fichiers OUVRIR E:\COMPTA\EcritureComptable.csv POUR LECTURE COMME #1 Le N de buffer doit tre unique. Ainsi, si plusieurs fichiers doivent tre manipuls par le mme programme, choisissez des rfrences diffrentes. Dans un fichier ouvert pour ajout, les enregistrements seront stocks la fin du fichier.
5.2.2.
Deux oprations trs simples : la lecture depuis le buffer et lcriture dans le buffer :
MaVariable LIREFIC NumBuffer ECRIREFIC MaVariable NumBuffer
Lors dune opration de lecture les donnes sont consommes, cest dire que le programme se place juste avant lenregistrement suivant afin dtre prt le lire. Elles sont stockes dans une variable de type Chaine qui reoit les donnes lues. Dans le cas de lcriture, le contenu de la variable est plac la fin du buffer. Dtection de fin de fichier Une variable systme permet de dfinir que le programme a atteint la fin du fichier et quil ny a plus dlments lire. Cette variable sera nomme par un mot cl rserv EOF pour End Of File assigne par buffer.
EOF NumBuffer
Le code qui suit permet de lire lensemble des donnes dun fichier pour les afficher lcran.
OUVRIR c:\liste.xtx POUR LECTURE COMME #1 TANT QUE NON EOF #1 FAIRE VARTAMP LIREFIC #1 ECRIRE VARTAMP FTQ
5.2.3.
Fermeture
Pour terminer le traitement dun fichier, il faudra librer celui-ci pour quil puisse tre de nouveau utiliser par un autre programme. Lopration de fermeture, prcise sous le terme FERMEFIC permettra daccomplir cette action. Attention, lopration de fermeture provoque le transfert des donnes de la zone tampon, buffer, sur le disque dans le cas dun fichier ouvert pour
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 8 - 13
Initiation la manipulation de fichiers sortie ou ajout. Si vous oubliez de fermer le fichier, les donnes de celuici ne seront pas sauvegardes.
FERMERFIC NumBuffer
5.2.4.
Si vous ouvrez un fichier en sortie et que celui existe dj, les donnes quil contient seront remplacs par celles que vous venez dintroduire lors de la fermeture du fichier qui provoquera lcriture de la zone tampon sur le disque. De mme, lors dune ouverture pour lecture ou ajout, il faut sassurer de lexistence pralable du fichier. Nous introduisons donc ici une nouvelle fonction qui nous permet dobtenir la certitude de lexistence ou non dun fichier un emplacement donn sur le disque. Cette fonction est une fonction boolenne qui renverra vrai si le fichier existe ou faux sinon.
Cette fonction est valable quelle que soit la nature du fichier et le mode daccs retenu. Ainsi, vous pouvez la mettre en uvre avec des fichiers texte accs squentiels ou des fichiers accs alatoire.
EXISTEFIC NomFichier
NomFichier reprsente lemplacement physique et le nom du fichier comme lexemple ci-dessous lillustre.
SI EXISTEFIC c:\liste.xtx = VRAI ALORS OUVRIR c:\liste.xtx POUR LECTURE COMME #1 SINON ECRIRE Le fichier demand nexiste pas FSI
Dans un fichier accs alatoire, ou accs direct, nous allons nous dplacer directement un enregistrement demand du fichier. Pour accder un enregistrement, nous devrons prciser le N de celui-ci. Contrairement aux fichiers accs squentiel vus prcdemment, nous pouvons tout la fois lire et crire dans un fichier ouvert pour accs alatoire. Un fichier accs alatoire dispose dun enregistrement structur : nous connaissons la dfinition et la nature des donnes quils contiennent, sous la forme dune structure. Une structure est compose dune ou plusieurs zones reprsentes au sein du programme par des variables types. Ainsi, si nous considrons un enregistrement client, nous pourrions le dsigner sous la forme de 5 rubriques qui seront reprsenter
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 9 - 13
Initiation la manipulation de fichiers par 4 variables dans le programme : NumClient, NomClient, AdresseClient, CodePostalClient, VilleClient respectivement Entier, chaines de caractres de longueurs 20, 40, 5 et 25. La structure dun enregistrement tant donne, nous pouvons en dduire la taille. Le nombre denregistrements contenus dans le fichier sera donc le rsultat de la division de la taille du fichier par la longueur de lenregistrement, donc de la longueur de la structure. Nous aurons donc besoin, pour dterminer le nombre denregistrements, dintroduire une nouvelle proprit dsignant la taille du fichier.
6.2.
La description de la structure dun enregistrement, ou type, se dfinit entre deux mots cls qui borne la dfinition de celle-ci STRUCTURE et FINSTRUCTURE. Entre ces deux mots cls ne doivent figurer que les zones, reprsentes par des variables, qui composent lenregistrement. Nous allons ici introduire un nouveau type de donnes, les chaines. Les chaines sont des ensembles de caractres. Lorsque lon dfinie une chaine, on prcisera ventuellement sa longueur.
CHAINE Machaine CHAINE NomClient * 20
Les chaines sont gnralement de longueur variable. Mais, pour la dfinition dune structure, afin que la longueur de lenregistrement puisse tre fixe, elle sera prcise. Quel que soit la valeur dune chaine dont on a prcis la longueur, la place occupe sera toujours celle de la longueur dfinie. Une chaine dispose dune proprit LONGCHAINE et sapparente un tableau de caractres. Nous pourrons donc extraire les caractres dune chaine en ayant recours une valeur de chaine indice. Si nous voulons connatre la valeur du 3me caractre dune chaine Nomclient et lafficher, nous crirons :
AFFICHER NomClient(3)
Pour afficher lensemble des caractres dune chaine prcds du numro dordre dans la chaine, nous avons recours la proprit LONGCHAINE et un cycle POUR :
POUR i ALLANT DE 1 A LONGCHAINE Nomclient FAIRE AFFICHER N Ordre : AFFICHER i AFFICHER Caractre : AFFICHER Nomclient(i) FINPOUR
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 10 - 13
Dans lexemple prcdent, lenregistrement aura donc une longueur de 94 octets (4 + 20 + 40 + 5 + 25, un entier tant stock par convention sur 4 octets). Par convention, nous prcisons que les variables, selon leur type, prendrons les longueurs suivantes : BOOLEEN : 1 Octet CAR : 1 Octet ENTIER : 4 Octets REEL : 6 Octets CHAINE : fonction de sa longueur
6.3.
Ouverture
Lors de louverture du fichier, lopration prcise toujours quil sagit dun accs alatoire, donc RANDOMACCESS. On indiquera l encore par un n le buffer qui sera la reprsentation du fichier en mmoire. Dans notre pseudo-langage nous utiliserons :
OUVRIR nomdufichier POUR Operation COMME NumBuffer LONGUEUR LongEnregistrement
O : Nomdufichier : nom physique complet du fichier, exemple c:\monfichier.txt Operation : RANDOMACCESS NumBuffer : un numro de 1 255 prcd du caractre # LongEnregistrement : longueur de lenregistrement fonction de sa structure
6.4.
Les oprations sont de mme nature que prcdemment, lecture et criture. Dans notre pseudo-langage elles seront dsignes par LIREEENR et ECRIREENR. Pour lire un enregistrement et charges les valeurs dans la structure qui contient sa dfinition, nous indiquons :
LIREENR NumBuffer , NumEnregistrement, NomStructure
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 11 - 13
Initiation la manipulation de fichiers Le numro denregistrement doit tre compris entre 1 et le nombre denregistrement calculs laide de la proprit LONGUEURFICHIER qui se calcule ainsi :
ENTIER NombreEnregistrements, LongEnregistrement, LongFichier ENTIER LongEnregistrement LongEnregistrement 94 LongFichier LONGUEURFICHIER NumBuffer NombreEnregistrements LongFichier / LongEnregistrement
Pour manipuler les valeurs de la structure, on utilise le nom de la variable prcde du nom de la structure et spars par un point. Pour afficher la valeur du nom client :
AFFICHER NomStructure.Nomclient
6.5.
Fermeture
Le fichier sera ferm avec lordre FERMERFIC comme dans le cas des fichiers accs squentiel.
FERMERFIC NumBuffer
OFPPT @
Document
C-E-001.doc
Millsime
mars 12
Page 12 - 13