Section courante

A propos

Section administrative du site

Installation d'Algol 68C sur un IBM System/360 ou IBM System/370

L'Algol 68C a été développé pour la gamme d'ordinateurs IBM System/360 et IBM System/370 avec l'ensemble d'instructions universel exécutant OS/MVT Release 21. Il a également été installé avec succès sur des systèmes exécutant OS/MFT, OS/VS1 et OS/VS2 (SVS). On pense également qu'il fonctionne sous OS/MVS. Aucune instruction 370 uniquement n'est utilisée, à l'exception de STCK (horloge d'entreposage) n'étant exécutée que si le CVT indique que l'horloge de l'heure du jour est prise en charge. La fonction d'alignement des limites n'est pas nécessaire. Les versions actuellement distribuées d'Algol 68C sont appelées «Prerelease» car le système n'implémente pas le langage de programmation Algol 68C complet. Les fonctionnalités actuellement non implémentées sont décrites dans un document séparé. L'état actuel d'Algol 68C empêchait son utilisation par d'autres que l'utilisateur dédié. La mise en oeuvre complète se produisit à la fin de l'été 1976.

Le paquet de distribution comprend une bande magnétique, la sortie d'imprimante du travail ayant enregistré la bande et des impressions de divers documents (y compris ce document). Notez que, comme les bandes magnétiques sont préparées par lots et que les copies sources des documents sont mises à jour de temps à autre, les copies imprimées peuvent différer des copies correspondantes de ces documents sur la bande magnétique. En cas de divergence, la version imprimée est susceptible d'être la plus correcte.

Portabilité

Le système Algol 68C est conçu de manière à ce que son implémentation sur une nouvelle gamme de machines soit simple. Le compilateur produit du code dans un langage intermédiaire, le ZCODE. Le ZCODE est un langage d'assemblage simple pour une machine avec des registres arithmétiques et d'index conventionnels et un schéma d'adressage d'entreposage conventionnel.

Le compilateur lit une description simple de la machine cible (par exemple, le nombre et le type de registres, la taille des INT, ...) de sorte que le ZCODE produit soit adapté à la machine cible.

Un implémenteur d'Algol 68C sur une nouvelle gamme de machines doit écrire un traducteur (ou un interpréteur) pour ZCODE, et doit également écrire un système d'exécution. Trois à neuf mois-homme sont généralement nécessaires.

(Il ne faut que quelques heures pour installer le système Algol 68C sur un IBM System/360 ou un IBM System/370 à partir de la bande de distribution.)

Maintenance

L'Algol 68C était maintenu comme indiqué dans les Conditions de Distribution par le Service Informatique de l'Université de Cambridge.

Format de bande magnétique

Les paramètres d'enregistrement de bande magnétique suivants sont possibles :

Les fichiers sont enregistrés sur la bande magnétique dans des enregistrements bloqués de longueur fixe avec une longueur d'enregistrement logique de 80. La taille de bloc (longueur d'enregistrement physique) peut être spécifiée par le destinataire et doit être un multiple de 80 et ne pas dépasser 16320. Les contrôles de chariot ne sont pas utilisés. Les paramètres d'enregistrement standard pour le System/360 sont :

Les paramètres d'enregistrement standard pour le System/370 sont :

Veuillez noter qu'il est particulièrement peu pratique d'écrire les bandes magnétique Algol 68C avec des étiquettes standard, elles ne doivent donc être demandées qu'en cas d'absolue nécessité. Les fichiers sur la bande magnétique se présentent sous l'une des trois formes suivantes :

La disposition précise de la bande magnétique est décrite par des commentaires au début du travail ayant enregistré la bande magnétique. Ce travail correspond au fichier 3 de la bande magnétique et une impression accompagne la bande magnétique de distribution.

Codes de caractères

Les caractères sur la bande magnétique sont dans une extension du code EBCDIC différant de celui décrit dans le manuel IBM «System/370 Principles of Operation» (GA22-7000-3) dans la mesure où :

Caractère Description
"f" Crochet ouvrant est représenté par le nombre hexadécimal 42.
""" Crochet fermant est représenté par le nombre hexadécimal 43.
"Z" Ou logique est représenté par le nombre hexadécimal 63.
"Û" Et logique est représenté par le nombre hexadécimal 64.
"Ü" Flèche vers le haut est représenté par le nombre hexadécimal 65.
"Ý" Flèche vers l'arrière est représenté par le nombre hexadécimal 66.

(Le compilateur accepte également les codes EBCDIC suivants :

Caractère Description
"f" Crochet ouvrant hexadécimal AD.
""" Crochet fermant hexadécimal BD.

Les caractères «Z», «Û», «Ü» et «Ý» peuvent être utilisés comme opérateurs. Aucun de ces caractères n'a besoin d'être représenté lors d'une installation.

De même, les crochets ne doivent pas nécessairement être représentés lors d'une installation, car les parenthèses rondes sont également acceptables dans toutes les positions syntaxiques, sauf dans les déclarations de ligne. Si des parenthèses rondes doivent être utilisées à la place des crochets, une déclaration de ligne doit être précédée du symbole de ligne, par exemple au lieu de «f"AMODE a», utilisez «ROW()AMODE a».

Cependant, si les crochets ne sont pas disponibles, il faut faire attention lors de la transcription du matériel de la bande magnétique, car les crochets sont utilisés comme symboles de sous- et de bus standard.

Le premier fichier de la bande magnétique donne des détails sur l'ensemble de caractères et une impression de ce fichier est fournie avec la bande magnétique de distribution.

Installation du système Algol 68C à partir d'une bande magnétique

Installation

Le fichier 5 sur la bande magnétique est une tâche permettant d'installer le système Algol 68C à partir de la bande magnétique. La tâche suivante doit être exécutée pour copier les fichiers 5 et 6 sur le disque :

//ALGOL68 JOB (,),'CARTE DE TRAVAIL ADAPTE A L'INSTALLATION'
//*
//* COPIER L'ENSEMBLE DE DONNEES FB80
//*
//F PROC N=, NOM DE L'ENSEMBLE DE DONNEES
//       L=, NUMERO DE FICHIER DE BANDE MAGNETIQUE
//       SER=<TAPE>,UNIT=TAPE<TRKS>, NUMERO DE SERIE ET ??NOM DE L'UNITE DE LA BANDE MAGNETIQUE
//       DEN=<DEN>,LAB=<LAB>, DENSITE DE LA BANDE MAGNETIQUE ET TYPE D'ETIQUETTE
//       BLKSIZE=<BLK>, TAILLE DU BLOC DE BANDE MAGNETIQUE
//       TRAN='<TRAN>' TECHNIQUE D'ENREGISTREMENT 7 PISTES
// EXEC PGM=IEBGENER,REGION=80K
//SYSPRINT DD SYSOUT=A
//SYSIN DD DUMMY
//SYSUT1 DD UNIT=&UNIT,VOL=(,RETAIN,SER=&SER),
//          LABEL=(&L,&LAB),DISP=OLD,DSN=A68C&L,
//          DCB=(LRECL=80,BLKSIZE=&BLKSIZE,RECFM=FB,DEN=&DEN&TRAN)
//SYSUT2 DD UNIT=SYSDA,
// DISP=(,KEEP),DSN=&N,
// SPACE=(TRK,(1,1)),DCB=(RECFM=FB,LRECL=80,BLKSIZE=2480)
// PEND
//*
// EXEC F,L=5,N='AL68.D.JOB'
// EXEC F,L=6,N='AL68.D.JOB1'

Il peut être nécessaire de modifier la disposition de SYSUT2 de KEEP à CATLG si cela est requis dans l'installation réceptrice. Il est presque certain que les noms des ensembles de données «AL68.D. ...» devront être modifiés pour répondre aux exigences de l'installation. Les caractéristiques DCB peuvent devoir être modifiées pour les disques autres que les 3330s.

Le travail du fichier 5 (copié dans AL68.D.JOB) contient des commentaires décrivant en détail comment installer le système; cette description est reproduite ici :

//*
//* 1. Adaptez la fiche de travail à votre installation.
//*
//* 2.1 Ce travail construit le système ALGOL68C sur les ensembles de
//* données suivants :
//* A68LIB.OBJ ensemble de données de module d'objet
//* A68LIB.MOD charger l'ensemble de données du module
//* A68LIB.SYS environnements d'initialisation et de bibliothèque
//* A68LIB.PROCS procédures cataloguées
//* A68LIB.TESTS tests
//*
//* Les tailles de blocs pour ces ensembles de données sont optimisées
//* pour les disques 3330 et doivent être modifiées si d'autres disques
//* sont utilisés. De même, les allocations d'espace devront être modifiées
//* pour d'autres disques. Ces modifications doivent être effectuées lors
//* de la première étape, «X», de la tâche.
//*
//* 2.2 Si vous souhaitez modifier les noms de ces ensembles de données,
//* modifiez uniquement les noms de fichiers dans la première étape, «X».
//* Les autres étapes obtiennent les noms de fichiers en utilisant la
//* référence JCL, par exemple DSNAME=*.X.OBJ . Les ensembles de données
//* sont alloués sous la forme (NEW,PASS) dans la première étape et sont
//* conservés dans la dernière étape, «KEEP», uniquement si les codes de
//* retour des étapes précédemment exécutées sont 4 ou moins. Ainsi, si
//* le travail échoue pour une raison quelconque, corrigez la raison de
//* l'échec et exécutez à nouveau le travail complet.
//*
//* 2.3 Si vous souhaitez que les ensembles de données soient catalogués,
//* modifiez le DISP à la dernière étape de (OLD,KEEP) à (OLD,CATLG).
//*
//* 2.4 Si vous disposez déjà d'un système ALGOL68C avec des ensembles de
//* données portant les mêmes noms que ceux utilisés dans le travail, vous
//* devez soit créer un nouveau système avec des noms d'ensemble de données
//* différents (2.2 ci-dessus), soit modifier les noms d'ensemble de données
//* de la première étape pour qu'ils soient les noms d'ensemble de données
//* temporaires.
//*
//* &&OBJ
//* &&MOD
//* &&SYS
//* &&PROCS
//* &&TESTS
//*
//* et supprimez le paramètre CONDX de l'avant-dernière étape, «COPY». Cela
//* entraînera la construction du système sur les ensembles de données
//* temporaires, puis sa copie (avec l'option de remplacement) dans les
//* ensembles de données existants. Étant donné que l'option de remplacement
//* est utilisée, les noms par défaut, par exemple A68C, Z370, seront remplacés
//* par des alias décrivant le nouveau système. L'exécution de l'étape COPY
//* entraînera l'omission de la dernière étape, «KEEP», et ainsi les ensembles
//* de données temporaires seront correctement supprimés à la fin du travail.
//*
//* N.B. Assurez-vous que les ensembles de données existants disposent de
//* suffisamment d'espace et de blocs de répertoires pour recevoir les nouveaux
//* membres. Reportez-vous à la première étape, «X», pour obtenir une estimation
//* des besoins. Notez également que tous les ensembles de données doivent
//* exister avant l'exécution de la tâche.
//*
//* 3. L'ensemble de données "S.FORTLIB" (voir les procédures JCL) n'est pas
//* distribué car il contient les routines FORTRAN propriétaires utilisées pour
//* sin, cos, tan, arcsin, arccos, arctan, exp, sqrt. Il appartient à l'installateur
//* d'organiser la liaison avec un ensemble de routines adapté.
//*
//* Les versions ALGOL68C de ces routines sont en cours de développement et seront
//* distribuées avec les futures versions du système.
//*
//* 4. Stropping : la tâche standard construit un système ALGOL68C prenant en
//* charge le «stropping de casse» (c'est-à-dire que les balises sont écrites avec
//* des lettres minuscules et des chiffres, et les indicateurs sont écrits avec des
//* lettres majuscules). L'alternative, le «stropping de préfixe-guillemet», a des
//* balises écrites avec des lettres majuscules ou minuscules ou des chiffres et
//* les indicateurs doivent être immédiatement précédés d'une apostrophe simple
//* et sont écrits en majuscules. FOR construire un système de stropping de
//* préfixe-guillemet, changez la valeur par défaut du paramètre symbolique «Q»
//* dans la procédure «P» (décompresser dans pds) de null à Q (c'est-à-dire qu'au
//* lieu de «Q=,», utilisez «Q=Q,») et dans l'étape LKA68C pour éditer les liens
//* du compilateur, changez «INCLUDE(EBCDIC)» en «INCLUDE(QEBCDIC)».

Autres fichiers

Le travail du fichier 6 (copié dans AL68.D.JOB1) peut être modifié pour extraire d'autres éléments de la bande magnétique si nécessaire.

Procédures cataloguées

La tâche de construction du système ALGOL68C aura généré l'ensemble de données A68LIB.PROCS. Celui-ci contient des procédures JCL adaptées à SYS1.PROCLIB (ou à tout autre ensemble de données de procédure catalogué de l'installation). Bien entendu, les procédures peuvent également être utilisées «en flux» si une carte // PEND est ajoutée à la fin de chaque procédure.

Les procédures JCL fournies avec la bibliothèque sont celles utilisées sur le System 370/165 à Cambridge et peuvent devoir être modifiées pour d'autres installations. Chaque procédure contient une ou plusieurs étapes, dont quatre types, à savoir la compilation, la traduction, l'édition de liens et la lecture. Les utilisateurs n'ont jamais besoin de séparer les étapes de compilation et de traduction.

En raison des difficultés liées au remplacement des cartes JCL, un grand nombre de paramètres symboliques sont utilisés dans les procédures, de sorte que le remplacement des cartes JCL ne devrait normalement pas être nécessaire.

Étape de compilation

Le paramètre symbolique &SYSLIB, dont la valeur par défaut est A68LIB.MOD, spécifie la bibliothèque de modules de chargement à utiliser pour charger les modules à exécuter.

L'ensemble de données référencé par DDname INIT est défini comme un membre PDS avec un nom donné par &IDSN(INIT&SYSI), dont la valeur par défaut est A68LIB.SYS(INIT). Cet ensemble de données contient les définitions de la machine cible, l'environnement par défaut et les strops des mots réservés dans les programmes source Algol 68C. Le nom de cet ensemble de données ne sera normalement pas modifié par les utilisateurs, mais sa valeur par défaut peut être modifiée si une nouvelle version de l'ensemble de données doit être utilisée.

L'ensemble de données référencé par DDname SYSENV contient des détails sur les environnements de la bibliothèque. Il s'agit d'un PDS avec le nom par défaut A68LIB.SYS. Là encore, il n'est généralement pas nécessaire que les utilisateurs le modifient. Des environnements supplémentaires peuvent être fournis par l'utilisateur, y compris des cartes DD dans le JCL, par exemple.

//A68.MYENV DD DSN=MYFILE.ENVIRON,DISP=SHR

serait repris par une directive d'utilisation Algol 68C telle que :

USING FRED FROM "MYENV"

Un ensemble de données d'environnement défini de cette manière peut être un PDS contenant un environnement dans chaque membre. La directive d'utilisation prendrait alors la forme suivante :

USING FRED FROM "MYENV(membername)"

L'ensemble de données référencé par DDNAME XREF reçoit des informations de référence croisée si le mot clef CROSSREF a été inclus dans le champ PARM de l'instruction EXEC. Ces informations peuvent être traitées par un programme séparé pour produire une liste de référence croisée d'identificateurs.

L'ensemble de données référencé par DDname CODE reçoit la sortie ZCODE du compilateur. La taille de bloc de 2498 est une valeur appropriée pour les 3330s mais doit être modifiée pour d'autres périphériques.

L'ensemble de données référencé par DDname ENVOUT reçoit les données d'environnement des «descripteurs» définis dans le programme source. Il doit être défini dans le JCL comme un ensemble de données séquentiel physique et, pour les programmes sans descripteur dans leur texte source, sera le plus utilement DSN=NULLFILE (c'est-à-dire DD DUMMY) ou sinon un membre d'un PDS. Notez que sa disposition est OLD.

Le programme source est lu à partir de l'ensemble de données défini par la carte DD SYSIN et les informations de compilation et de diagnostic sont écrites dans l'ensemble de données défini par la carte DD SYSPRINT.

Étape de traduction

La carte DD STEPLIB est identique à celle de l'étape de compilation. L'ensemble de données référencé par la carte DD SYSIN contient la sortie ZCODE de l'étape de compilation. Dans les procédures, il s'agit toujours du fichier temporaire &ZCODE.

Le module objet est écrit dans l'ensemble de données défini par la carte DD SYSGO devant avoir des paramètres DCB acceptables pour l'éditeur de liaison. Les informations de traduction et les diagnostics sont écrits dans l'ensemble de données défini par la carte DD SYSPRINT.

Étape d'édition de lien

L'ensemble de données référencé par DDname SYSLIB définit un ensemble de bibliothèques contenant des modules pouvant être appelés par le programme Algol 68C, y compris le système d'exécution Algol 68C. La première bibliothèque est définie par le paramètre symbolique &SYSLIB définissant également le STEPLIB des étapes de compilation et de traduction, et est décrite ci-dessus. La deuxième bibliothèque est S.FORTLIB, contenant des modules pour le calcul du sinus, du cosinus, de l'exponentiel,... Il est suggéré d'utiliser les routines IBM FORTRAN à double précision avec un module d'interface, dont un exemple approprié se trouve sur la bande magnétique de distribution Algol 68C. Des routines appropriées seront éventuellement fournies dans le cadre du système Algol 68C.

Si le module lié avait un module parent nommé, alors ce module sera inclus à partir de la propre bibliothèque de l'utilisateur, devant être concaténée aux bibliothèques système.

SYSLMOD, SYSPRINT et SYSUT1 sont les mêmes que pour toute exécution de l'éditeur de liaison, et ne nécessitent donc aucune explication. La sortie de l'étape de traduction est contenue dans l'ensemble de données référencé par la carte DD SYSLIN. Si une carte DD SYSIN est fournie par l'utilisateur, l'ensemble de données auquel il fait référence sera concaténé à celui référencé par la carte DD SYSLIN. Cela peut être utilisé pour fournir des cartes de contrôle d'éditeur de liaison et ainsi récupérer des routines à partir de bibliothèques spécifiées plutôt que des valeurs par défaut.

L'étape d'aller

C'est très simple. La seule carte DD fournie dans la procédure est SYSPRINT, sur laquelle sont écrits les messages d'erreur d'exécution ; d'autres ensembles de données peuvent être fournis à partir du flux de travail appelant.

Programme de références croisées

Les informations écrites par le compilateur dans l'ensemble de données référencé par DDNAME XREF peuvent être traitées pour produire une liste de références croisées d'identificateurs. La procédure JCL A68XREF est fournie pour exécuter ce programme. Ses paramètres sont similaires à ceux des procédures du compilateur.

Les informations de références croisées du compilateur doivent être fournies sur DDNAME FROM. La liste formatée est écrite dans l'ensemble de données référencé par DDNAME TO, et tous les diagnostics sont envoyés au ensemble de données référencé par DDNAME SYSPRINT. Pour une exécution normale, aucun paramètre ni carte DD de remplacement ne doivent être spécifiés.

Test du système

L'ensemble de données A68LIB.TESTS contient un certain nombre de tests. Les membres JOB1, JOB2, JOB3, JOB4 sont des tâches permettant d'exécuter les tests. Les fiches de tâches de ces tâches devront être modifiées pour s'adapter à l'installation. Sur un System 370/165, un temps CPU de 75 secondes est suffisant pour exécuter chacune des tâches. Les résultats des tâches peuvent être comparés aux membres RESULTS1, RESULTS2, RESULTS3, RESULTS4.

Écriture de programmes Algol 68C

Les programmes peuvent être écrits en utilisant soit la suppression de la casse, soit la suppression des guillemets préfixes, selon la manière dont le système a été construit.

Avec la suppression de la casse, les indicateurs et les mots réservés sont écrits en majuscules et les balises en minuscules, par exemple BEGIN MODE FRED = STRUCT(INT a); REAL b.

Avec la suppression des guillemets préfixes, les indicateurs et les mots réservés sont écrits en majuscules et sont précédés d'une apostrophe simple, les balises sont écrites dans les deux cas. Par exemple 'BEGIN 'MODE 'FRED = 'STRUCT('INT A); 'REAL B.

Notez que si la suppression des guillemets préfixes est utilisée, la casse d'une lettre est importante (mais cela est susceptible de changer pour assurer la compatibilité avec la suppression des points).

Dans les deux cas, seules les lettres sont autorisées dans les indicateurs.

Il est prévu que le découpage préfixe-guillemet soit remplacé par le découpage point (préfixe) (étant identique au découpage préfixe-guillemet, sauf qu'un point est utilisé à la place d'une apostrophe). Par exemple, .BEGIN .MODE .FRED = .STRUCT(.INT A); .REAL B . Ce découpage est la norme acceptée par l'IFIP WG 2.1. Avec le découpage point, la casse d'une lettre n'est pas significative.

Le compilateur lit un entête de programme à partir du canal de paramètres. L'entête de programme sur le canal de paramètres doit être précédé d'un seul "/" étant utilisé pour séparer les options d'exécution de l'entrée du canal de paramètres. Par exemple :

// EXEC A68CLG,PARMC='/XREF USING USER FROM "SYSENV(REAL)"'

(Aucune option d'exécution n'a été implémentée.)

L'entête du programme peut également précéder le programme lu à partir de SYSIN.

L'entête du programme peut être constitué de n'importe quelle combinaison de directives :

Directive Description Exemple
USING Cette directive permet d'indiquer au compilateur comment la segmentation du programme doit être utilisée. USING FRED FROM "MYENV(FRED1)"
TRACE Cette directive permet de déboguer le compilateur. Un entier doit suivre pour spécifier le niveau de trace du compilateur. TRACE 63
KEY Cette directive n'est pas utile pour le moment. Il doit être suivi d'un entier. KEY 4
XREF Cette directive permet d'indiquer que le compilateur doit produire une sortie sur l'ensemble de données spécifié par la carte XREF DD pour un traitement ultérieur par le programme de références croisées. XREF
CROSSREF
NAME Cette directive permet de donner un nom à la section de contrôle (CSECT) produite par le traducteur. Cela entraîne également la construction d'une référence externe lors de la traduction d'un module fille. Le nom est spécifié sous la forme d'une chaîne de huit caractères maximum devant former un nom CSECT de système d'exploitation légal. NAME "MODULE1"
TITLE Cette directive permet d'entraîner l'inclusion du titre dans la sortie du compilateur vers SYSPRINT pour permettre de distinguer plusieurs compilations dans le même travail. TITLE Ceci est un titre c'est syntaxiquement une balise.
STRICT Cette directive permet d'indiquer l'intention de donner un message d'avertissement si des extensions d'Algol 68 sont utilisées. STRICT

Les mots USING, FROM, TRACE, KEY, XREF, CROSSREF, NAME, TITLE et STRICT doivent être supprimés. Le programme est constitué d'une clause sérielle.

Compilation séparée

Le mécanisme de langage de programmation permettant de prendre en charge la compilation séparée. Il permet de segmenter un programme de manière arborescente. Un programme segmenté doit d'abord être compilé à partir de la racine (afin que les environnements soient disponibles de manière arborescente). L'environnement produit par la compilation d'un module incluant un descripteur est écrit dans l'ensemble de données décrit par la carte DD avec le DDNAME ENVOUT. Cet ensemble de données est le plus utilement un membre d'un ensemble de données partitionné afin que les nombreux environnements d'un programme volumineux puissent être stockés ensemble de manière pratique.

Lorsqu'un module interne (au sens de la structuration en blocs) est compilé, tous les environnements des modules plus externes doivent être disponibles. L'environnement le plus immédiatement externe est spécifié dans une directive USING lorsque le module actuel est compilé. Les modules plus externes sont accessibles par les directives USING précédentes ayant été «copiées» dans les fichiers d'environnement lorsque ces modules ont été compilés. Ainsi, les mêmes noms d'entrée DDnames doivent être disponibles pour toutes les compilations des différents segments du programme.

Une directive USING a la format suivante :

USING handle FROM string

handle est l'identification du descripteur (un indicateur) et string est une dénotation de chaîne de caractères. La chaîne de caractères est l'idf utilisé pour ouvrir le fichier contenant l'environnement précédent.

Cela semble très compliqué, mais c'est en fait très simple, surtout lorsqu'un pds est utilisé pour sauvegarder des environnements.

Recouvrement

Les segments compilés séparément peuvent être en recouvrement à l'aide des fonctionnalités d'OS/360 et de son éditeur de liens. Cependant, le recouvrement doit être effectuée avec une certaine prudence car il est possible que des objets du magasin en cours de recouvrement soient pointés depuis un autre endroit du magasin. Il est difficile de décrire formellement quand cette condition peut survenir car elle dépend fortement de l'implémentation de la copie des éléments (pouvant changer d'une version du compilateur à une autre). En général, ce ne sera pas sûr si :

Exemples

L'exemple contient des tâches :

  1. PROC INT p;
  2. ENVIRON ONE;

lorsque le segment associé au descripteur contient :

  1. p := INT:(...);

un tel segment ne peut pas être en recouvrement en toute sécurité dans le cadre de la p.

L'exemple suivant permet de donner des valeurs :

  1. PROC INT p = ENVIRON TWO;

Le segment associé au descripteur ne peut pas être en recouvrement en toute sécurité dans le cadre de p. Notez que dans :

  1. PROC p = INT: ENVIRON THREE;

le segment associé au descripteur génère une valeur INT et, toutes choses étant égales par ailleurs, peut être en recouvrement en toute sécurité dans le cadre de p.

Il est prévu qu'à l'avenir, les recouvrements seront implémentées correctement ou qu'un message sera émis lorsqu'une condition dangereuse se présente.



Dernière mise à jour : Mardi, le 28 juillet 2015