cpalis
C CPALIS SOURCE PV 17/12/05 21:15:31 9646 C======================================================================= C Sous-programme cpalis (Collaborateur PAQuettage LIste) C Enregistre le message complet a envoyer dans le buffer bu a partir de C la position bufPos C Il faut s'assurer au prealabe que la taille du buffer est C suffisante, C======================================================================= integer iPile integer iPoint,nNoeud integer nNod integer bufPos integer iArgu,nArg character*(8) typNom -INC PPARAM -INC CCOPTIO -INC TMCOLAC segment LISARG character*8 nom(nArg) integer adress(nArg) endsegment segment BUFFER character ffer(lonBuf) endsegment segment LISNOD integer liste(nNoeud) endsegment pointeur jcolac.ICOLAC pointeur lisNoe.ITLACC pointeur bu.BUFFER pointeur seg2pi.ILISSE pointeur argume.LISARG C Liste de passage de la numerotation actuelle vers la numerotation C de communication pointeur ac2co.LISNOD pointeur co2ac.LISNOD C write(ioimp,*) 'Entree dans CPALIS' C nbPile=jcolac.kcola(/1) C lonBuf=bu.ffer(/2) co2ac=jcolac.kcola(32) nNoeud= nNod segini ac2co nNoeud=co2ac.liste(/1) seg2pi = jcolac.ilissg C pour chaque argument do 3 iArgu =1,nArg C recuperer son type C recuper le numero de pile associe if(iimpi.ge.7) then write(ioimp,*) 'Paquettage d un objet',typNom, iPoint endif if(iPoint.eq.0) then if(iimpi.ge.7) then write(ioimp,*) 'Pointeur nul, passage a l objet suivant' endif goto 3 endif C Redirection vers le traitement correspondant au type de la pile c a toutes fins utiles, les etiquettes suivantes sont ranges par ligne de 10 goto( & 0100, 0200, 0300, 0400, 0500, 0600, 0700, 0800, 0900, 1000, & 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, & 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000, & 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000, & 4100, 4200, 4300, 4400, 4500, 4600, 4700), iPile goto 2 c ******************** meleme ******************** 0100 continue goto 1 c ******************** chpoint ******************** 0200 continue goto 1 c ******************** mrigid ******************** 0300 continue goto 1 c ******************** ******************** 0400 continue goto 1 c ******************** ******************** 0500 continue goto 1 c ******************** bloq ******************** 0600 continue goto 1 c ******************** elem ******************** 0700 continue goto 1 c ******************** msolut ******************** 0800 continue goto 1 c ******************** mstruc ******************** 0900 continue goto 1 c ******************** mtable ******************** 1000 continue goto 1 c ******************** ******************** 1100 continue goto 1 c ******************** msostu ******************** 1200 continue goto 1 c ******************** imatri ******************** 1300 continue goto 1 c ******************** mjonct ******************** 1400 continue goto 1 c ******************** mattac ******************** 1500 continue goto 1 c ******************** mmatri ******************** 1600 continue goto 1 c ******************** mdefor ******************** 1700 continue goto 1 c ******************** mlreel ******************** 1800 continue goto 1 c ******************** mlenti ******************** 1900 continue goto 1 c ******************** mcharg ******************** 2000 continue goto 1 c ******************** ******************** 2100 continue goto 1 c ******************** mevoll ******************** 2200 continue goto 1 c ******************** superele ******************** 2300 continue goto 1 c ******************** logique ******************** 2400 continue C call cpalog(pilLoc,iPoint,bu,bufPos) goto 1 c ******************** flottant ******************** 2500 continue C call cparee(pilLoc,iPoint,bu,bufPos) goto 1 c ******************** entier ******************** 2600 continue C call cpaent(iPoint,bu,bufPos) goto 1 c ******************** mot ******************** 2700 continue C call cpamot(pilLoc,iPoint,bu,bufPos) goto 1 c ******************** texte ******************** 2800 continue goto 1 c ******************** listmots ******************** 2900 continue goto 1 c ******************** vecteur ******************** 3000 continue goto 1 c ******************** vectd ******************** 3100 continue goto 1 c ******************** point ******************** 3200 continue goto 1 c ******************** config ******************** 3300 continue goto 1 c ******************** mlchpo ******************** 3400 continue goto 1 c ******************** mbasem ******************** 3500 continue goto 1 c ******************** procedur ******************** 3600 continue goto 1 c ******************** bloc ******************** 3700 continue goto 1 c ******************** mmodel ******************** 3800 continue goto 1 c ******************** mchaml ******************** 3900 continue goto 1 c ******************** minte ******************** 4000 continue goto 1 c ******************** nuage ******************** 4100 continue goto 1 c ******************** matrak ******************** 4200 continue goto 1 c ******************** matrik ******************** 4300 continue goto 1 c ******************** objet ******************** 4400 continue goto 1 c ******************** methode ******************** 4500 continue goto 1 c ******************** esclave ******************** 4600 continue goto 1 c ******************** fantome ******************** 4700 continue goto 1 c ************************************************** C Gestion des erreurs 2 continue write(ioimp,*) 'Probleme dans la pile',typNom, iPile moterr(1:8)=typNom goto 3 C Fin du case 1 continue C Mise a jour du compteur d elements envoyes if(iimpi.ge.7) then write(ioimp,*) 'Objet paquette' write(ioimp,*) 'Position du buffer',bufPos endif C Fin de la boucle sur les piles 3 continue segsup ac2co C write(ioimp,*) 'Sortie de CPALIS' end
© Cast3M 2003 - Tous droits réservés.
Mentions légales