FR 2142831 A1 19730202 FR 7123348 A 19710625 La présente invention concerne l'extraction d'informations, et plus particulièrement la recherche et l'identirication de données enregistrées sous forme de texte en langage clair, par des itérations successives faites au moyen d'un code de format interne où chaque itération est limitée à un sous-groupe identifié par une précédente recherche effectuée d'après des données de base enregistrées dans une mémoire à accès direct Des procédés d'extraction d'informations ont été imaginés jusqu'à présent pour répondre à des besoins particuliers ,et ltex- traction d'informations est largement pratiquée .Ces opérations font apparattre clairement que de besoin existe d'un procédé d'extraction d'informations d'application générale susceptible de s'adapter à des données de longueur variable et qui ne soit pas assujetti à des formats rigides de données Des exemples de procédés d'extraction d'informations connus jusqu a présent sont décrits dans "Application of Electronic Data Processing Systems to Legal Research" du "Bureau or National Affairs" , 1960, pages 7 à 10 et également incorporés dans le "Commuter Query System" décrit dans une publication du titre cidessus publiée par le National Institute Or Health ,Division of Research Grants, Statistics and Analysis Branch La présente invention concerne un procédé d'extraction d'informations selon lequel des données enregistrées dans des positions de mémoireadressables peuvent être recherchées pour identifier un premier sous-groupe . Les données sont ensuite traitées en fonction de l'enregistrement des adresses des données enregistrées dans le premier sous-groupe , les itérations suivantes n'ayant lieu qu'en fonction des données contenues aux adresses enregistrées Plus particulièrement, selon l'invention l'extraction des informations s'effectue par l'intermédiaire d'une mémoire à accès direct dans laquelle les données sont enregistrées sous forme de textes en langage clair . E;; fonction de variables enregistrées, ou labels, les données de la banque de données sont interrogées en vue d'ideltifier et d'enregistrer les adresses des données de ladite banque et qui correspondent aux variables . Le sous-groupe des données qui correspondent aux adresses enregistrées est ensuite recherché en fonction d'au moins une variable additionnelle, dont l'apparition vraie dans le sous-groupe identifie les adresses de données correspondantes En outre, toutes les opérations s'effectuent de manière à sa tisfaire une ou plusieurs des trois conditions de bases :ET,OU , NON D'autres caractéristiques de l'invention apparattront au cours de la description qui va suivre Aux dessins annexés donnés uniquement à titre d'exemple les Fig.l et 2 illustrent la majeure partie du procédé de traitement des données et particulièrement la routine SELECTION les Fig.3 à 5 illustrent la construction d'une configuration (BUILPRO) à partir d'instructions introduites dans le calculateur à partir d'un organe d'entrée périphérique donné ; la Fig.6 illustre une sous-routine (XLAT) de traduction qui est utilisée en différentes pointes du traitement UELECTION-ITERATION ; les Fig.7 et 8 illustrent un sous-programme LOGSYN utilisé pour évaluer des énoncés logiques ;; la Fig.9 contient l'organigramme du sous-programme LOGIQUE qui est utilisé pour déterminer les valeurs vraies d'une configuration sélectionnée la Fig. 10 est le diagramme de l'ensemble du procédé et la Fig.ll est le diagramme général de QUESTRAN La présente invention sera décrite en regard d'une application particulière du GIPSY (General Information Processing System)au traite tement et à l'extraction d'informations et dans le cas d'extraction dans d'importantes collections de données .La nature générale du prccédé sera d'abord décrite et après cela , un mode de collectage d' in- formations et d'établiRsfmentGedonnées de base qui sont enregistrées dans la mémoire à accès direct d'un calculateur La structure du procédé sera ensuite décrite, en se référant aux Figures, dans son utilisation des données de base en vue d'identifier et d'extraire l'information qu'elle contient en fonction de critères choisis, spécifiés par l'utilisateur . Ces critères peuvent, selon le désir de l'utilisateur, comporter des données variables et des spécifications logiques Le système de Traitement d'Informations Générales (GIPSY) concerne le collectage et l'interrogation de grands ensembles de données constituées d'informations numériques, en langage codé ou en langage clair. Le système GIPSY permet à l'utilisateur de poser des ques lons complexes concernant tout ou partie des informations collectée et lui permet de répondre à toute enquête effectuée lorsque le n= nées ont été rassemblées, sans être soumis aux rigueurs complexes et coûteuses d'une programmation supplémentaire Dans un mode d'application de l'invention décrite, les informations sont introduites par un document destiné à une application particulière et rempli par l'utilisateur . Le document est fait de manière que chaque article à collecter est identifié par un seul label .Seules les informations décrites par l'utilisateur sur le document d'entrée sont introduites . Une description da formulaire est ensuite faite afin de décrire la structure du document d'origine et d'identifier les articles d'informations sur le document en vue de l'identification et de l'impression L'interrogation de la collection de données s'effectue dans le langage QUESTRAN qui est le langage d'extraction du système GIPSY .L'interrogation en QUESTRAN peut se faire par un dispositif à cartes perforées ou par un périphérique téléimprimeur Les questions sont posées en identifiant, par leur label unique mentionné ci-dessus , les articles à rechercher dans un enregistrement, la ou les conditions que les articles doivent satisfaire s'il y a lieu, et la relation logique (ET,OU, NON) qui existe entre les articles spécifiés .Les résultats de l'interrogation peuvent être les indications du nombre total d'enregistrements sélectionnés et du nombre des enregistrements qui satisfont à chaque article spécifié ces indications pouvant etre imprimées .Si la commande en est donnée, l'une ou la totalité des opérations ci-après peuvent être effectuées a)Impression de tout ou partie des enregistrements sélectionnés. b) Classement des enregistrements sélectionnés c) Création, avec les enregistrements sélectionnés, d'un fichier de longueur et de champ fixés sur différents types de fichiers tels que disque, bande ou cartes Le système GIPSY se traduit dans le langage d'assemblage OS/360 et se traite sur les calculateurs IBM de la série 550 avec au minimum un ensemble à disques 2511 ( ou une mémoire à accès direct de même capacité ) et une mémoire à tores de 64.000 mots Le système peut être transféré d'une configuration 560 à une autre Le processus du collectage des données et de la création de banques de donnes peut etre considéré en quatre étanes La première étape consiste en l'analyse des informations Une banque de données est réalisée après avoir déterminé quelles sont les informations qui peuvent être nécessaires pour résoudre un problème donné et le niveau auquel seront collectées ces informations. Ce niveau, avec les informations associées , constitue une unité de base connue sous le nom d'enregistrement . Un enregistrement est un groupe distinc d'articles concernant par exemple un malade ou un enregistrement d'inventaire se rapportant à une partie spécifique .L'enregistrement est l'unité de référence de base utili ée dans le système GIPSY .I1 est constitué d'un certain nombre d'éléments d'informations connexes appelés "articles" .La banque de données est la plus grande entité d'enregistrement .L'enregistrement est l'unité logique à propos de laquelle les informations sont collectée.L'article est une unique unité logique des informations contenues dans un enregistrement dont il constitue une partie variable prédéterminée qui peut être classée d'après un label unique Chaque enregistrement peut avoir une dimension variable ,c'està-dire que le nombre de caractères qu'il contient peut varier .I1 peut également contenir un nombre variable d'articles d'informations La seconde étape consiste en l'établissement du formulaire d'entrée . Un document d'origine est rempli par un utilisateur et ensuite généalement perforé pour être introduit Le label de document constitue l'unique descripteur associé à chaque article .Il est utilisé pour identifier l'article au moment où il est introduit et, au moment de la recherche , les articles individuels sont référencés par leurs labels Dans l'attribution des labels aux articles d'informations , il convient de commencer par établir les lignes hiérarchiques des informations à collecter. Par exemple, un résumé personnel pourrait commencer par les grandes divisions suivantes A.Données personnelles B. Etudes C. Passé professionnel D Références S.Prêférences professionnelles La première grande division peut ensuite être détaillée A.Données personnelles 1.Nom 2. Adresse 5.Numéro de téléphone 4.Situation de famille 5.Sexe 6.Date de naissance Le détail peut être poussé plus avant 4. Situation de famille A.Marié B.Célibataire C Divorcé D.Veuf 5. Sexe A. Masculin B.Féminin 6. Date de naissance A. Mois B.Jour C.Année Le label peut être alphabétique , numérique ou alphanumérique. Les labels utilisés ne comportent pas plus de sept caractères .Un label ne doit associer aucun niveau hiérarchique à l'article d'informations qu'il identifie . Les labels peuvent être construits de caractères pris au hasard ou aléatoires , mais une suite logique dans leur attribution est préférable Il existe plusieurs façons d'enregistrer des informations sur un document d'origine dont les plus courants sont 1.Une liste exhausive de réponses simples 2.Une liste exhausive de réponses multiples 5.Une liste non exhausive 4.Une liste modifiée , et 5.Un texte en langage clair , cette classe pouvant englober les autres Le système GIPSY permet d'utiliser tout ou partie des formulaires d'entrée pour enregistrer des informations sur un document d'origine .Chaque formulaire a des utilisations spéciales et offre des avantages aussi bien que des inconvénients .Le choix du formulaire d'entrée et la réalisation du document d'origine dépendent de l'application spécifique faite par l'utilisateur Un nom de formulaire composé d'un nombre prédéterminé de caractères, de préférence huit ou moins, est donné à chaque document d'origine .Les caractères alphan.mériques ainsi utilisés identifient la description du document ,telle qu'elle apparatt dans le diction naire et dans les enregistrements à rechercher lors de l'extrac- tion. Les documents sont perforés pour être introduits .Le nom du formulaire est perforé sur la première carte de chaque enregistrement .Ce nom est ensuite placé dans chaque enregistrement sur le fichier physique et utilisé comme référence lors de l'extraction. La troisième étape consiste à préparer le dictionnaire et le formulaire . Chaque description de formulaire utilisé est introduite dans une collection de dictionnaires de descriptions de formulaires, contenant un label , un niveau, une description d'article , un code de format interne et une option d'impression pour chaque article d'information (variable) d'un enregistrement .De préférence, chaque formulaire décrit contient, pour chaque entrée, les informations suivantes l.Label -un identificateur alphanumérique unique ne comportant pas plus de sept caractères, attribué à chaque article de données 2.Commande d'espacement et de niveau -c'est un nombre à deux chiffres qui détermine à combien d'espaces de la marge de gauche cette entrée doit être imprimée.Ce nombre joue aussi le rôle d'un indicateur de niveau qui détermine si les niveaux précédents dans la description du formulaire (s'il en existe) doivent être imprimés pour qualifier le présent niveau .L'entrée de commande d'espacement et de niveau sera prise à la valeur de un (1) si elle est laissée en blanc . 3. Option d'impression - cette option concerne l'impression du texte (s'il existe) écrit par l'utilisateur pour une variable donnée en relation avec la description d'information donnée dans le formulaire .Trois options sont prévues 1. Imprimer sur la même ligne la description d'article et toute entrée de texte 2.N'imprimer que l'entrée de texte de l'enregistrement (s'il n'en n'existe pas , ne rien imprimer ). 3.Imprimer la description d'article sur une ligne et toute entrée de texte associé sur la ligne suivante en retrait de deux positions; si aucun texte-n' existe, n'imprimer que la description d'article .Un manque d'option est interprêté comme un (1). 4.Espacement d'impression - cette option commande l'espacement de lignes entre entrées Les codes USASI à un seul caractère utilisés sont Codes USASI Signification (blanc) Simple espace normal Codes USASI Signification (zéro) Double espace - (pointillé) Triple espace 1 Saut en haut de la page (plus) Suppression d espace L'absence d'option pour l'espacement d'impression est interprêté comme le blanc correspondant à un simple espace normal. 5.Code de format interne - à chaque label est attribué un nombre unique dans chaque description de formulaire à utiliser dans la mise en mémoire interne de chaque enregistrement .Au "temps de formation d'enregistrement " ce nombre est placé dans l'enregistrement , à la place du label auquel il est associé . Cela est fait dans un but d'économie, de mise en mémoire et d'efficacité de la recherche . Dans le présent exemple, le nombre attribué a une longueur de cinq chiffres ou moins Tous les enregistrements créés utilisant un formulaire spécifique contiendront des labels attribués à des codes de format interne basés sur cette description de formulaire . Des modifications ultérieures de la description de formulaire ne peuvent s'effectuer qu'à la condition que les mêmes codes de format interne soient attribués aux mêmes labels qu avant la modification 6. Description d'article - cette description en texte de l'article de données est utilisée aux fins d'impression pour décrire l'entrée ou établir une rubrique ou un titre aux entrées de niveau inférieur Format de cartes Colonnes de cartes Entrée 1à7 Label 9 et 10 Espacement et niveau combinés 12 Option d'impression 14 Espacement d'impression 16 à 20 Code de Format interne 22 à 60 Description d'article Le fichier de dictionnaires de formulaires est créé et maintenu par un programme auxiliaire DBUILD .Ce programme permet à l'utilisateur de constituer un nouveau dictionnaire ou d'ajouter des descriptions de formulaires à un dictionnaire existant Une modification des descriptions de formulaire déjà cataloguées s'effectue en reconstituant le dictionnaire avec tous les formulaires catalogués, com portant les modifications appropriées effectuées dans les descriptions La quatrième étape consiste à créer l'enregistrement .La création d'enregistrement sur le fichier est effectuée par le programme RBUILD du système GIPSY.Le fonctionnement commandé par le programme consiste à l.Classer les cartes suivant le numéro de séquence contenu dans les colonnes 1 à 3 des cartes afin d'éviter les erreurs dues à des entrées non ordonnées 2.Contrôler les erreurs à l'entrée afin de s'assurer que les labels figurent dans la description du formulaire et que la perforation du format est correcte 3.Créer sur le fichier les enregistrements de format interne pour tous les enregistrements sans erreur 4.Imprimer une liste de tous les enregistrements dans lesquels une ou plusieurs erreurs ont été détectées et indiquer la nature de ou des erreurs 5.Perforer un double jeu de cartes pour tous les enregistrements qui contiennent des erreurs 6.En option, la possibilité d 'imprimer une copie de tous les enregistrements qui ont été créés sur le fichier La longueur d'un enregistrement du système GIPSY est limitée à la longueur maximale permise de ;'enregistrement physique du dispositif à accès direct utilisé . La relation ci-après doit etre satisfaite 4 (C + P) X P (P + 2 ) + K C=Nombre de labels hors-contrôle (labels sans texte associé) P=Nombre d'entrées en texte P=Longueur moyenne des textes K=Constante = 20 R=Longueur maximale d'enregistrement physique d'un dispositif à accès direct exprimé en multiplets d'enregistrement Pour un disque IBM 2311 cette relation se ramène à 4 C 1 SP P.P 3.605. n suppo-ant que P comporte vingt caractères et sans aucune entrée en texte, 901 labels hors contrôle sont permises et, sans labels hors contrôle, 13 & entrées en texte sont permises Le procédé d'extraction du système GIPSY consiste en modules de programme, commandés par un dispositif d'exécution qui confirme le formulaire d'entrée , dirige les interrogations du fichier et traite la sortie . La communication se fait par l'intermédiaire d'un langage par incréments dicté par l'utilisateur et connu sous le nom de QUESTRAN . Par ce moyen, l'utilisateur spécifie les paramètres de sa question ,identifie le fichier à interroger et sélectionne le traitement approprié pour la sortie. Le processus d'extraction se déroule de la manière générale indiquée ci-après 1. Une banque d'informations est identifiée 2. Une question est introduite, par exemple en introduisant par l'intermédiaire du clavier d'un périphérique téléimprimeur, les labels des variables impliqués et leur association logique 3. Une recherche en série du fichier d'enregistrements est déclenchée en vérifiant les paramètres d'interrogation sur tous les enregistrements du fichier ou d'un sous-groupe 4. Les enregistrements qui satisfont aux critères de recherche sont sélectionnés et leurs adresses sont enregistrées dans un fichier d'enregistrements sélectionnés 5.Un décompte du nombre d'enregistrements explorés, du nombre d'enregistrements sélectionnés et du nombre d'enregistrements satisfaisant à chaque variable individuelle est affiché après chaque interrogation Le système d'extraction peut fonctionner selon deux modes de traitement . Ces modes sont le mode par cartes perforées et le mode de télétraitement ou mode à distance L'opération d'extraction du système GIPSY implique, dans le langage par incréments QUESTRAN, des commandes et des paramètres. Les commandes décrivent les opérations fonctionnelles principales du système et les paramètres décrivent les macro-opérations déclenchées par les commandes . Les routines e.cutives interprêtent les commandes et font appel à des modules de programme spéciaux qui, à leur tour, interprêtent et sont commandés par les paramètres spéci iques .Les commandes en QUESTRAN sont FORMULAIRE IMPRESSION SELECTION LISTE ITERATION SOMME EFFACEMENT MESSAGE CLASSEMENT COPIE La commande l'FORMULAIRE'' est utilisée pour sélectionner une description de formulaire spécifique .Le paramètre est le nom de la description de formulaire voulue .Cette commande est émise au commencement de chaque cycle d'opération du système GIPSY Mais, une fois démarré, le programme ne se référera qu a ce formulaire spécifié jusqu a ce qu'une autre commande de formula-fre soit émise ou que le cycle se termine . Une fois introduite, la ccmmande de formulaire n'a plus besoin d'être réintroduite pendant le fonctionnement, aussi longtemps que l'utilisateur ne désire pas accéder à des données enregistrées dans le fichier d'enregistrement au moyen d'un formulaire différent La commande "SELECTION" est utilisée pour mettre en route le mécanisme d'extraction de QUESTRAN .Les paramètres sont classés en deux types et sont utilisés pour décrire l'interrogation Les paramètres, pour la commande de sélection, sont la description de variables et la description logique La description de variables décrit les caractéristiques de sélection d'une interrogation . Par exemple, si la question "Imprimer les enregistrement de tous les employés âgés de plus de 25 ans, titulaire du diplôme BA et habitant New York " était posée au calculateur en se référant à un fichier de personnel, les employés seraient sélectionnés suivant les caractéristiques suivi vantes A. plus de 25 ans B. diplôme BA C. habite New York La description logique indique la manière dont les variables sont liées . La logique utilise les fonctions Booléennes ET, OU, NON. Dans l'exemple ci-dessus, le critère global à satisfaire correspond à l'association logique ET entre les variables (plus de 25 ans, ET diplôme BA, ET habite New York). Chaque description de variables est composée d'un "désigna teur " de variable, d'un label et d'un argument de recherche Un désignateur de-variable est un caractère alphabétique unique séparé utilisé pou distinguer Ane variable d'une autre dans une question séparée .Un label désigne un article de donnée spécifique dans un enregistrement .I1 est utilisé pour identifier un élément spécifique d'information, tel qu'une entrée sur une lis te, ou une région de l'enregistrement dans laquelle la conditi spécifique sera appliquée .Un argument de recherche spécifie le critère qui doit être recherché dans la zone de texte identifiée par le label associé .Cette condition est spécifiée, soit dans un mode par mot , soit dans un mode par nombre l.Mode par mot- Dans ce mode il est recherché un simple mot, phrase, suite ou partie de mot dans l'ensemble cu texte introduit et décrit par un label donné .Aucune interprétation de la condition spécifiée n'est faite . La recherche est spécifiée pour le nombre exact de caractère Quatre procédés sont utilisés pour introduire une recherche de mot Préfixe- Spécifié par l'insertion d'un blanc en tête dans 1 argument de recherche par exemple A. PRO entratnerait la recherche d'un mot dans le texte introduit sous le label PRO (profession) et commençant par les lettres "mon". Par exemple "Monteur", "Moniteur" mais non "mo" comme "Modeleur" ou "Ramoneur" . Suffixe. Spécifié par un blanc introduit après le mot voulu dans l'argument de recherche . Par exemple C. PRO Existence .Spécifié par l'absence de blanc en avant ou en arrière dans l'argument de recherche . Par exemple W. PRO AS entratnerait la recherche des lettres "as" au nébut, au milieu ou à la fin d'un mot dans le texte introduit sous le label PRO. Par exemple "assistant" , masseur" mais non "au" ou "absent" Mot. Spécifié par l'insertion de blancs à la fois devant et derrière l'argument de recherche. Par exemple P. PRO entraînerait la recherche du mot "appel" dans le texte introduit sous l'étiquette PRO. Par exemple, le mot serait trouvé, mais non "rappel", "appelant", "rappelé" etc.. Les quatre options sont également utilisées pour Suite de mots- Spécifiée par les deux extrémités de la suite, par exemple X. PRO à 2. Mode par nombre Dans ce mode, une entrée spécifiée du texte est recherchée jusqu a ce que le premier nombre soit détecté, et l'argument de recherche spécifié est alors comparé avec lui. Les nombres sont automatiquement convertis en une forme standard associée pour les comparaisons .Dans le mode par nombre @ 05 05,0 5,0 et 5 seraient donc égaux .Il y a quatre procédés pour spécifier la condition de mode par nombre Egal D. AGE EG.10,0 Dans ce cas, des nombres égaux numériquement à 10 sont recherchés dans le texte introduit sous le label AGE. Il serait trouvé " + 10", "10,00", "0010" mais non "-10" ou "10.000001". Inférieur à E. AGE LT 20,5 Dans ce cas les nombres inférieurs à 20,5 sont recherchés Par exemple "19", "20,0" "+10" mais non "20,5" ou "30". Supérieur à F. AGE GT 5 Dans ce cas, les nombres supérieurs à 5 sont recherchés. c'est-à-dire "10.0025", " -6", "5,001" mais non "-5", "4,9999" ou "5". Suite de nombres H. VALEUR -10 à 5,03 Dans ce cas les nombres situés entre -10 et 5,03 inclus sont recherchés Par exemple "2,01", "-10", "5,05" ,"5,029999", "-1,8" mais non "-11", "5,031" ou De préférence, la description des variables ,c'est-à-dire le label est raccourcie par l'utilisation d'un signe sténographique, ou marque du même genre, pour le label . Une marque de ce genre ( le $ ) est utilisée pour 1. La duplication du label P utilisé précédemment A. PRO PROGRAMMEUR B. $ ANALYSTE C. $ OPERATEUR 2. La duplication de l'argument de recherche spécifié précé demment A. PRO @, ANALYSTE B. PASSE $ C. NOUV PRO $ 3.La duplication , à la fois de l'étiquette et de l'argument de recherches spécifiés précédemment: A. PRO LANALYSTEa B $ $ La description logique constitue le paramètre final introduit dans la commande SELECTION .La gamme Booléenne complète est utilisée pour spécifier l'association logique entre les variables spé cifies.Dans l'énoncé logique, les variables sont identifies par le simple caractère constituant le descripteur de variable Les opérateurs logiques ET, OU, NON peuvent être utilisés de manière interchangeable avec les simples caractères équivalents "x", "+", "" Les parenthèses peuvent également être utilisées pour éviter toute ambiguité d'interprétation de la description logique Dans les paramètres de description de variables, les variables peuvent être identifiées plus d'une Dois dans l'énoncé logique également, toutes les variables qui apparaissent dans la description de variable n'apparaissent pas nécessairement dans la description logique Une description logique typique des variables de la recherche de personnel décrite précédemment pourrait se présenter comme suit: LOGIQUE (A ET B ET C) La commande "ITERATION" est utilisée dans le but de réduire le nombre des enregistrements traités lors d'une interrogation Cette commande provoque le traitement de l'interrogation qui suit concernant le sous-groupe d'enregistrements sélectionnés en conséquence de la question précédente .L'utilisateur peut déclencher une opération avec la commande ITERATION (auquel cas le dernier sous-groupe créé à la suite du dernier cycle serait utilisé) ou l mettre après une SELECTION ou une ITERATION dans le même cycle. Dans la commande ITERATION , les paramètres sont les mêmes que pour la SELECTION La commande "COPIE" est utilisée pour constituer des enregistrements de longueur et de champ fixés à partir de l'enregistrement du système GIPSY de longueur variable . La sortie s'effectue sur un fichier en bande, disque, imprimante ou perforatrice de cartes, à la demande de l'utilisateur . La commande COPIE traite ceux des enregistrements qui ont été sélectionnés par une interrogation antérieure . Bien que la fonction COPIE soit destinée à jouer le rôle d'intermédiaire entre le système GIPSY et un dispositif de traitement à champ fixe, elle peut également fournir à l'utilisateur la possibilité d'établir certains relevés .Les paramètres de la commande COPIE spécifient les informations qui doivent être copiées à partir des enregistrements sélectionnés , ou une indication littérale qui doit tre insérée dans I'enregistrement sortant Les processus littéraux autorisés sont la substitution d'une ou deux indications littérales spécifiées, basées sur la présence ou l'absence d'un article d'information , et l'insertion d'une indication littérale à des positions voulues dans la sortie Des exemples de paramètres de COPIE sont PRO x Cela provoque la sortie, dans les x positions suivantes de l'enregistrement sortant, du premier nombre de x caractères du texte introduit sous le label PRO (en commençant par le premier caractère non blanc).Les blancs sont insérés si aucun texte n'existe. AGE x.y. Cela provoque le positionnement du premier nombre dans le texte et la sortie de x chiffres dans les x positions suivantes de l'enregistrement sortant . Il est supposé une virgule après y chiffres en partant de la droite du champ à x positions . Là aussi, s'il n'y a aucun nombre , la sortie est remplie avec des blancs EXA "OUI" "NON" Cela provoque la sortie de la première indication littérale, c'est-à-dire OUI si le label EXA se trouve dans l'enregistrement d'entrée présent . Sinon, la seconde indication littérale est sortie. Cela permet d'effectuer le contrôle de l'existence d'un label. La longueur utilisée est celle de la plus longue des deux indications littérales, et la plus courte est justifiée à gauche .La longueur maximale est de 10 caractères pour l'une ou l'autre des indications littérales . Les indications littérales doivent être placées entre apostrophes ('). "TOUTE INDICATION LITTERALE Provoque la sortie ,eomtne caractères suivants, des caractères entre apostrophes FORMULAIRE Provoque la sortie du nom de formulaire de l'enregistrement d'entrée présent, justifié à gauche dans les huit positions suivantes de l'enregistrement sortant ADRESSE D'ENREGISTREMENT Provoque la sortie, dans les six positions suivantes de l'en- registrement sortant, de l'adresse du fichier interne de l'enregistrement d'entrée présent, comme index. NOUVEL ENREGISTREMENT Provoque la sortie de ce qui a été rassemblé jusqu a ce point sans autre enregistrement d'entrée . Cela permet de réaliser de multiples enregistrements de sortie pour chaque enregistrement d'entrée. Le symbole "./" signifie la fin de la liste des paramètres Un groupe typique de paramètre pourrait se présenter comme suit: COPIE NON 4 AGE t v EXA "OUT" "NON" FORM et produirait les enregistrements sortants suivants .S AN025 xx OUI OUI FORM 0001 WALL104 NON FORMOOOl AT 768 OUI FORM 0001 La commande "IMPRESSION" provoque l'impression des enregistrements sélectionnés en utilisant le dernier formulaire nommé pour commander l'impression . Dans les opérations de groupement, la commande IMPRESSION ne nécessite aucun paramètre .Cependant, l'utilisateur peut introduire un paramètre pour placer une rubrique sur chaque enregistrement imprimé .Cela s'effectue en faisant suivre la commande IM?RESSION d'une autre carte sur laquelle la rubrique commence sur une colonne autre que la première La commande "LISTE" est utilisée pour imprimer des parties désignées d'enregistrements sélectionnés au lieu de l'enregistrement complet . De même que la commande IMPRESSION, la commande LISTE utilise le dernier formulaire nommé pour identifier les articles individuels imprimés .Les paramètres pour la commande LISTE sont les labels des articles à imprimer . La liste des labels se termine par une barre inclinée (/). La commande "SOMME" est utilisée pour trouver la somme etiou la valeur numérique moyenne d'articles donnés dans les enregistrements sélectionnés .La commande SOMME effectue l'addition de toutes les apparitions numériques de l'erticle sélectionné et provoque l'impression a. Du nombre d'apparitions dans le sous-groupe sélectionné (ce nombre n'inclut pas les apparitions de l'article lorsqu'il n'est pas dans l'enregistrement ou lorsqu'il n'est pas numérique). b.de la valeur numépique moyenne moyenne c. De la somme d. De la valeur maximale de l'article e. De la valeur minimale de l'article. La commande peut être utilisée pour faire la somme simultané' ment de jusqu a neuf articles séparés . Les paramètres pour la commande SOMME sont les labels qui identifient les articles et une barre inclinée (/) qui est utilisée pour terminer la liste La commande "CLASSEMENT" est utilisée pour classer les enregistrements sélectionnés et reconstruire le fichier d'enregistrements sélectionnés dans l'ordre voulu .Les enregistrements peuvent être classés suivant plusieurs champs qui sont spécifiés dans les paramètres .Le nombre de champs de classement sera limité par la place attribuée aux zones de classement Les paramètres pour la commande CLASSEMENT sont les labels des codes à classer .Ils sont introduits dans l'ordre de priorité du classement ( le premier champ étant introduit le premier, suivi du second etc....) comme suit PRO x Cela provoque la sortie pour classement du premier nombre de x caractères du texte introduit sous le label PRO. AGE x.y. Cela provoque le positionnement du premier nombre dans le texte sous le label AGE et la sortie de x chiffres avec une virgule placée après y chiffres à partir de la droite EXA "OUI" "NON" Cela provoque la sortie de la première indication littérale "OUI" si le label EXA est présent dans ltenregistrement Sinon la seconde indication littérale "NON" est sortie Spécifie la fin de la liste La commande "MESSAGE" est utilisée pour envoyer des messages au pupitre d'opérateur du calculateur distant à partir du périphérique de l'utilisateur . Le paramètre consiste en le message qui doit être envoyé à l'opérateur La commande "EFFACEMENT" est utilisée dans les opérations de groupement pour marquer, en vue de leur effacement, ceux des enregistrements qui ont été sélectionnés pour le fichier d'enregistrements sélectionnés . La commande EFFACEMENT imprime des copies des enregistrements effacés L'impression n'a pas lieu par l'utilisation du paramètre NON-IMPRESSION de la commande EFFACEMENT. Après avoir décrit d'une manière générale la formation des données de base et les différentes commandes utilisées en QUESTRAN , s'il y a lieu de decrire maintenant , en se référant aux organigrammes , le procédé particulier impliqué par les opérations SELECTION et ITERATION qui constituent une partie du QUESTRAN et auxquelles s'applique particulièrement la présente invention Lorsque les données de base ont été établies et sont disponibles dans la mémoire , le langage d'extraction est transmis au calculateur pour déclencher l'opération d'extraction de données A titre d'exemple , un mode de fonctionnement en télétraitement peut commencer avec un dialogue lorsque l'utilisateur introduit la commande FORM en tapant "FORM " sur un pupitre de périphérique et en le transmettant au calculateur .Ce dernier peut alors répondre en tapant des tirets au-dessous du mot FORM afin d'in- diquer qu'il a reconnu une commande valable . L'utilisateur peut alors taper le nom des données de base à rechercher . Pour déclencher l'opération de recherche , l'utilisateur tape ensuite le mot SELECT . Le calculateur peut alors répondre en tapant des tirets au-dessous Le critère de recherche est introduit en (a) Identifiant chaque variable par un simple caractère alphabétique unique (désignateur ae variable ). (b) Spécifiahtle label de l'article d'enregistrement à rechercher. (c) Spécifiant la conditioncstil y a lieu ) à utiliser comme argument de recherche . (Cet argument de recherche n'est appliqué qu aux articles spécifiés par le label (b) ci-dessus ). Cette procédure ( a à c ) est répétée pour chaque variable dans la question La relation entre les variables posées est alors exprimée dans l'énoncé LOGIQUE Cela s'effectue en tapant le mot LOGIQUE suivi de la relation Booléenne ( ET, OU, NON) que doit satisfaire un enregistrement à sélectionner .Les variables sont de préférence identifiées dans l'énoncé logique en utilisant le simple désignateur alphabétique de variable Les variables sont ensuite combinées par les opérateurs logiques ET, OU, NON Les procédures ci-dessus sont illustrées par l'exemple ci-après qui peut être utilisé avec la description des organigrammes QUESTION : Trouver dans les données de base toutes les références concernant " evaporite " (roche formée par ev- poration d'eau salée ) dans le titre ou dans la liste des termes ( mots-clés ) enregistrés dans les données de base pour chaque rapport Cette recherche est effectuée en introduisant les informations du Tableau I dans le calculateur , par exemple par un pupitre de périphérique T A BLE A U I FCR@ USGS01 S. T A.TITRE B. TWR@ES LOGLQUE A OU B Les résultats de cette recherche initiale doivent être affichés au périphérique comme le montre le Tableau Il et consistent de préférence en a) Le nombre des enregistrements recherchés b) Le nombre des enregistrements sélectionnés et un indicateur de sous-groupe c) Une liste indiquant le nombre de fois que chaque variable a été trouvée dans le fichier sans impliquer qu'elle satis fasse le critère spécifié dans l'énoncé logique. Tableau Il. RECHERCIE 28410 SELECTIONNE 103 Sous-groupe 1 VARIABLES SATISFAITES A 44 B 97 ITERATIONS ? OUI Dans l'exemple ci-dessus, il est supposé que les données sont introduites dans le dispositif d'enregistrement suivant le Formulaire n0 1, United States Geological Survey - Institut de Surveillance géologique des Etats-Unis -. La commande SELECTION dans la recherche initiale dirige une recherche dans le titre à partir des données de base et par le mot evaporite. Elle dirige également une recherche du terme "evaporite" dans la liste des termes (mots-clés) sélectionnés à partir de chacun des documents des données de base. Les paramètres logiques, au contraire des paramètres de variables, dirigent l'identification de tous les documents dans lesquels le terme "evaporite" apparaît dans le titre, ou dans lesquels le terme "evaporite" apparaît dans la liste des termes. Il est donc bien entendu que, en accord avec le Formulaire U.S.G.S. n0 1, les données de base contiennent la mémoire du titre de chaque document, la mémoire d'une liste de mots-clés ou termes pris dans chaque document, un résumé, la date de la publication, les citations à la publication, les noms des auteurs et un type de caractérisations du document. En ce qui concerne l'exemple utilisé, il est entendu que les paramètres indiqués ci-dessus ont été appli qués au calculateur. Ceci étant établi, et en se reportant maintenant aux Fig. 1 et 2, il ressort que le module SELECTION 100 est un module essentiel auquel incombe l'extraction des documents qui satisfont les paramètres de l'exemple ci-dessus. A l'étape 101 de démarrage, le calculateur remet à zéro les registres, attribue dynamiquement des zones de mémoire pour les parties communes et positionne les accumulateurs qui seront nécessaires pour exécuter la routine SELECTION. A l'étape 102 de lecture de paramètres, ces derniers sont tous lus dans la commande SElEC- TION, à savoir A, B et les paramètres de LOGIQUE du tableau I. Les paramètres sont alors enregistrés dans la mémoire. A l'étape 103, le premier paramètre mis en mémoire, c'est-à-dire le paramètre A du tableau I est contrôlé afin de déterminer s'il est un paramètre logique ou non. Dans le tableau I, ce paramètre A est un paramètre de variable et non un paramètre logique. Ce premier paramètre est ensuite contrôlé à l'étape 104 afin de déterminer s'il est une variable.Dans ce cas, il l'est ; le programme saute donc à la sousroutine BUILDPRO 105. Si la réponse est NON à l'étape 104, signifiant que ni un paramètre logique ni un paramètre de variable n'est présent, un message est transmis vers l'usager à l'étape 106 afin de lui indiquer l'existence d'une erreur de syntaxe, et le calculateur retourne à l'étape 102 de lecture des paramètres. Au retour à l'étape 102 et en réponse à la configuration (tableau I) mise en mémoire, le second paramètre est introduit dans la configuration RECHERCHE. A l'étape 106, la communication à l'utilisateur de 1' exis- tence d'une erreur de syntaxe permet le contrôle du paramètre réel et sa correction, de manière que toutes les interrogations voulues des données de base puissent être effectuées. Quand le troisième paramètre du tableau I est utilisé, la reponse est OUI à l'étape 103 (contrôle de logique). Dans ce cas, l'identification des documents dans ces données de base procède à la sous-routine LOGY qui démarre à l'étape 107. vais avant de décrire la sous-routine LOGSYN, il y a lieu de décrire maintenant la partie BUILDIRO de l'opération, indiquée par l'étape 105 sur la Fig. 1 et détaillée sur les Fig. 3 à 5. La sous-routine BUILDPRO interprête les énoncés de paramètres, traduit les informations codées et déclenche une entrée dans la configuration pour chaque entrée de variable. Plus particulièrement, l'étape 110 détermine quelle est l'entrée de configuration qui doit être déclenchée, c'est-à-dire que cela s'effectue par le calcul d' une adresse dans la configuration à partir du désignateur de variables. A l'étape 111, la variable A est contrôlée afin de voir Si elle a été introduite précédemment. S'il en est ainsi, la présente tentative est une duplication. Si elle a déjà été introduite, le fait est indiqué à l'étape 112 et le programme retourne à I'étape 102 de lecture de paramètres, (Fig. 1), ce retour étant indiqué sur l'organigramme par le symbole G. Il y a lieu de noter qu'au cours du fonctionnement, il apparaîtra fréquemment des étapes d'où le programme doit retourner à l'étape 102 de lecture de paramètres ; ces étapes sont indiquées sur les organigrammes par le symbole G. Du fait que le paramètre A, tableau I, est introduit pour la première fois, la comparaison de l'étape 111 donne la réponse NON, de sorte que le paramètre est ensuite contrôlé à l'étape 113 afin de voir s'il s'agit de la variable plus élevée. Dans ce sens, la variable B est "plus élevée" que la variable A. Si A est l'entrée la plus élevée, un index, ou clé, est enregistré à l'étape 114. Dans un cas comme dans l'autre, à l'étape 115, l'entrée de la configura- tion est marquée active pour un dernier contrôle de duplication. A l'étape 116, le reste de l'énoncé est exploré et contrôlé afin de voir s'il y a quelque chose dans l'énoncé au-delà du désignateur A de limite. A l'étape 117, J'il est indiqué qu'un seul désignateur est présent, le message est incomplet et à l'étape 118 le programme retourne à l'étape 102 de lecture de paramètres. Si, en plus du désignateur A, il existe autre chose dans l'énoncé, une comparaison est faite à l'étape 119 afin de voir s'il s' agit d'une information de type alphabétique, à l'étape 120 afin de voir s'il s'agit d'un type numérique, et à l'étape 121 afin de voir s'il y a un point. Si le premier paramètre de la commande SEIECTION du tableau I est examiné, il est remarqué que le A doit être suivi d'un point. Les opérations des étapes 119, 120 et 121 sont donc exécutées successivement et le programme retourne à I'étape 116 par la boucle 122. La présence d'un point ayant été trouvée, l'énoncé est exploré afin de voir s'il y a autre chose.Si quelque chose est trouvé, le contrôle en est fait à l'étape 119 afin de voir si le reste de l'énoncé est un caractère alphabétique, ou à l'étape 20 afin de voir s'il est un caractère numérique. Dans le cas présent c'est le mot TITRE qui est rencontré, par conséquent en caractères alphabétiques. Dans ce cas, le programme prend la branche 124. A l'étape 125, l'énoncé est exploré pour rechercher un symbole blanc ou "inférieur a1, à" est-à-dire "(". A l'étape 126, l'énonce est contrôlé afin de voir sin un " Si un "4 " est trouvé dans les huit positions du titre, le label TITRE est déplacé à l'étape 127 vers la liste de paramètres où il est enregistré. Cette procédure établit à l'étape 128 la liai- son nécessaire avec un sous-programme DFINDE extérieur au module SELECTION/ITERATION. Le programme DFINDE recherche un fichier 2 tionnaire et retourne un code de format interne qui doit être intro- duit dans la configuration et dans la mémoire pour cette entrée, A l'étape 129, un contrôle est fait afin de voir si le la TITRE est trouvé dans le dictionnaire. A l'étape 131, le label TITRE ayant été trouvé dans le ditionnaire, son code de format interne extrait du dictionnaire est placé dans la configuration. Si elle n'est pas trouvée à l'étape 130, le programme retour ne à l'étape 102 de lecture de paramètres. A l'étape 132, un contrôle est fait afin de déterminer ce aui termine la dernière exploration. Dans le présent cas, la dernière exploration s'est terminée par le symbole " Si la dernière exploration s'est terminée par un blanc, le programme saute de l'étape 135 à une sous-routine XLAT représenré sur la Fig. 6. Selon cette sous-routine, l'énoncé est exploré a 5 recherche d'un point non blanc dans l'énoncé à l'étape 136. Dans 1 exemple présent, le symbole été rencontré.A l'étape 137, 1 énoncé est contrôlé afin de voir si la fin de l'énoncé a été rencontrée Dans l'exemple présent, la fin nta pas été rencontre car tout ce qui a été rencontré était le symbole: . A l'étape 138, l'énoncé est contrôlé afin de voir si le caractère rencontré est alphabétique. Dans le cas présent, le symbole 11 passe donc à l'étape 139 qui est "l'autre retour Si à l'étape 137, organigramrne 6, la fin de l'énoncé est trouvée, l'étape 140 "retour à fin ramène le programme à l'étape 141 de la Fig. j.A l'étape 142, une entrée de configuration est effectuée afin d'indiquer l'existence d'une opération "existance de contrôle seulement" dans laquelle seule l'existence de caractéristiques désignées est recherchée. Le programme passe ensuite à l'étape 102 de lecture de paramètres. Si, à l'étape de comparaison 138 de la Fig. 6, l'énoncé est en caractères alphabétiques comme l'indique l'étape 143, le programme retourne à l'étape 144 de la Fig 4 et suit la boucle 145. Si, à la Fig. 6, la comparaison n'indique ni une "fin" ni un caractère "alphabétique" l'étape 139 "autre retour" renvoie le programme à 1' étape 146 par l'étape 144 afin de déterminer si un symbole NÉ est rencontré ou non.Si la réponse est OUI, le programme passe à 1' étape 134 oú l'énoncé est exploré à la recherche du symbole À En supposant qu'à l'étape 144, le retour de la sous-rutine XLAT de la Fig. 6 soit un retour "ALPHA" le programme suit la boucle 145 et un contrôle est effectué à l'étape 147 pour déterminer si la partie alphabétique de l'énoncé rencontré en XLAT 135 était le symbole EG nécessitant une comparaison ultérieure d'exacte égalité. Si la réponse est OUI à la comparaison de l'étape 147, la configuration est introduite pour indiquer qu'une opération nombre égal" doit être effectuée. Si le symbole alphabétique est ItSTt' indiquant "inférieur à", la configuration est déclenchée pour indiquer qu'une opération "nombre inférieur à" doit être effectuée. Si le symbole rencontré est "GT", la configuration est déclenchée pour indiquer qu'une opération "nombre supérieur 8 doit être effectuée. Si les symboles rencontrés ne correspondent ni à " G11 ni à "LT" ni à "GT" un message indiquart un nombre mauvais est émis vers l'usa- ger à l'étape 153 et le programme retourne à la lecture des paramètres. Si l'une quelconque des étapes 148, 150 ou 152 a donné un résultat positif, l'énoncé est ensuite exploré à la recherche d'une entrée d'un non-blanc qui peut servir de nombre à essayer. Cette opération s'effectue à l'étape 154. Si aucun symbole a n'est rencontré à l'étape 146, la configuration est déclenchée pour indiquer qu une opération "suite numérisque doit être effectuée. En réponse à l'une ou l'autre des étapes 154 ou 155, un numéro de sous-routine est extrait à l'étape 156 pour interpréter le nombre à essayer, et retourner une forme standard ou canonique du nombre à enregistrer ensuite dans la configuration. A l'étape 157, le nombre est contrôlé afin de voir s'il est un nombre valable. Sinon, le programme suit la boucle 158 pour émettre à l'étape 153 un message de nombre mauvais et retourne à l'étape 102 de lecture de paramètres. Si le nombre est valable, comme l'indique l'étape 159, il est enregistré dans la configuration. A l'étape 160, un contrôle est effectué pour déterminer s'il s'agit d'une opération de "suite numérique". Si ce n'est pas le cas, le programme retourne à l'étape 102 de lecture de paramètres. S'il s'agit d'une opération de "suite numérique", une exploration est effectuée à l'étape 161 de la Fig. 5 afin d'identifier la fin du nombre. Il en résulte que la sous-routine XBAT 135 est à nouveau sollicitée avec les mêmes étapes 141 et 144 à la suite. Si la fin de 1' énoncé n'es+ pas rencontrée et s'il s'agit d'un énoncé alphabétique, un contrôle est effectué à l'étape 162 afin de voir si l'énoncé indique que la recherche doit être faite de nombres dans un domaine compris entre un nombre et un nombre plus grand. Si la réponse est NON, le programme suit la boucle 158 ainsi que décrit précédemment. Si la réponse est OUI, l'énoncé est exploré à l'étape 163 à la recherche du second nombre. A l'étape 164, tout nombre à essayer trouvé à l'étape 163 est évalué et une forme canonisée est retournée pour être interrogée en ce qui concerne sa validité. Plus particulièrement, le nombre est contrôlé à l'étape 165 afin de voir s'il est valable. 'il ne l'est pas, le programme retourne par la boucle 158. S'il est valable, un second nombre canonisé est enregistré dans la configuration à l'étape 166. Après cette étape, un contrôle est effectué afin de voir si la suite des nombres entre le premier nombre enregistré dans la configuration et le second nombre canonisé enregistré dans la configuration est dans l'ordre correct, étape 167. Si l'ordre est correct, le programme retourne à l'étape 102 de lecture de paramètres.Si l'ordre n'est pas correct, le programme suit la boucle 168 afin d'émettre vers l'utilisateur un message suite inversée et le programme retourne à l'étape 102 de lecture de paramètres. Il y a lieu de rappeler qu'à l'étape 134 de la Fig. 4, l'énoncé était exploré à la recherche d'un symbole" > ". Si le symbole" > "n' est pas trouvé à l'étape 170 dans un certain nombre de positions, un message est transmis, à l'étape 171 vers l'usager "partie trop longue". Si le symbole N est trouvé à l'intérieur d'un nombre prédéterminé de positions (30 de préférence) à partir du symbole s le programme passe à l'étape 172. A l'étape 172, l'énoncé qui se trouve entre les symboles , > est décalé vers la configuration. Dans le cas présent, le mot "evaporite" serait décalé vers la configuration. Le programme passe alors à la sous-routine XLAT 135 de la Fig. 6 avec les comparaisons résultantes 141, 144 et 162 de la Fig. 5. Si la fin de l'énoncé est rencontrée à l'étape 141, la configuration est introduite, à l'étape 141A, de manière à indiquer que l'opération consiste en une recherche de mots. Le programme passe alors à l'étape 102 de lecture de paramètres. Si la réponse est NON, aussi bien à l'étape 144 qu'à l'étape 162, un message "erreur de syntaxe1, 162a est émis vers l'utilisateur et le programme retourne à l'étape 102 de lecture de paramètres. Si la réponse est OUI à étape 162, la sous-routine XLAT 135 est de nouveau sollicitée avec les étapes 141, 144 et 146 qui suivent.Si la réponse est OUI à L'étape 141, ou à l'étape 144 ou NON à l'étape 146, un message "manque seconde parenthèse" est envoyé à l'utilisateur et le programme retourne à l'étape 102 de lecture de paramètres. Si la réponse est OUI à l'étape 146, le second terme de parenthèse est déplacé vers la configuration, étape 175. L'opération ci-dessus peut bien se produire. Par exemple, plutôt que de ne rechercher que le mot "evaporite", l'énoncé peut comporter la nécessité d'effectuer un contrôle de tous les mots dont les trois premières lettres se trouvent entre "sat" et "sou". Dans ce cas, des mots tels que "set" satisferaient donc l'argument de recherche. Bien que l'exemple du tableau I soit relativement simple, la possibilité d'adaptation à des opérations plus complexes ressor tira de la description. Pour revenir maintenant à l'exemple, à l'étape 176 la confi guration est introduite pour indiquer que l'opération à effectuer est une opération "suite de mots". A l'étape 177 , un contrôle est effectué afin de voir si les termes entre parenthèses sont dans l' ordre correct ainsi qu'il l'a été fait à l'étape 167. Si la réponse est OUI, le programme retourne à l'étape 102 de lecture de paramètres. Si la réponse est NON, un message "suite inversée" est trans- mis à l'utilisateur et le programme retourne à I'étape 102 d~ '- ture de paramètres. Il ressort de tout ce qui précède que les opérations impliquée par la constitution d'une configuration ont été décrites. I7 12. bien entendu que la configuration peut être constituée en in~ odui-- sant successivement chacun des paramètres de la commande SELECTION, Les opérations décrites ci-dessus ne se rapportent qu'aux variable de la commande SELCTION. Les opérations qui concernent le paramètre LOGIQUE seront main- tenant décrites. Il y a lieu de rappeler en se reportant maintenant à la Fig. 1 que, dans le tableau I, les deux premiers paramètres de la commande SECTION étaient des variables de sorte que le programme passait de la comparaison logique de l'étape 103 à la sous-routine BUILDERS à ltétape 105. Mais, lorsque toutes les variables ont été introduit tes, le paramètre final de la commande SELECTION est énoncé lve que. Dans le cas présent, l'énoncé logique nécessite l'identifica- tion de tout document qui satisfait les paramètres variables A ou a. Plus particulièrement, si la réponse est OUI à l'étape 103i ce qui indique que le paramètre est un paramètre logique, le program- me passe au sous-programme LOGSYN qui commence à l'étape 107. Le sous-programme LOGSYN entre en jeu par l'apparition d'un énoncé logique. Les opérations indiquées sur les Fig. 7 et 8 servent à interpréter l'énoncé logique et sont telles que le simple énoncé, logique "A ou B" du tableau I peut être interprété aucun bi n que des combinaisons logiques plus compliquées. A l'étape 178, de la Fig. 7, l'énoncé logique est exploré à partir de son début pour déterminer si toutes les parenthèsz---s intérieur de l'énoncé logique sont fermées ou non. Bien qu te aucune sous-parenthèse dans l'exemple présent, il est bien ent@ du qu'elles peuvent se rencontrer dans d'autres recherches telles que par exemple (B ou (A et B)) et C. Après l'étape 178, la sousroutine XLAT 135 est utilisée à nouveau. Si tous les blancs sont rencontrés dans l'énoncé logique, en réponse à l'étape 179 un message énoncé incomplet" est envoyé à l'étape 180 et le programme retourne à l'étape 102 de lecture de paramètres. Si à l'étape 181, l'énoncé logique est en caractères alphabétiques, le programme suit le chemin 182 et à l'étape 183 un contrôle est effectué pour voir si l'énoncé logique est un "ET" à l'étape 184 s'il est un "NON", et à l'étape 185 s'il est un "OU". Si un "ET" est rencontré, une astérisque est déplacée vers la sortie, de manière à changer simplement la désignation alphabétique "ET" en un symbole + étape 186. A l'étape 187, un NON est converti en un symbole 5 7 . s l'étape 188, un "OU" est changé en un symbole +. Le programme suit ensuite le chemin 189 vers la sous-routine XLAT 135. Si "ET", "NON" et "OU" n'ont pas été rencontrés, le programme emprunte le circuit 190 afin de déplacer le caractère rencontré vers la zone de sortie ainsi que l'indique l'étape 191. Ensuite, ainsi que l'indique le circuit 192, l'exploration des caractères successifs est poursuivie dans la sous-routine XLAT 135. Si à l'étape 193, tous les blancs n'ont pas été rencontrés, un contrôle est effectué à l'étape 194 afin de détecter les caractères alphabétiques. Si des caractères alphabétiques sont détectés, le programme retourne, ainsi que l'indique le circuit 195, à l'éta- Fe 183 et le processus est répété. Si aucun caractère alphabétique n'est rencontré, le programme passe, ainsi que l'indique le circuit 196 à l'étape 197 afin de déterminer si un symbole "(" est rencontré ou non. Si la réponse est OUI, un UN (1) est ajouté à un compteur de fin de parenthèse à l'étape 198. Si aucun "(" n'est rencontré, un contrôle est effectué à l'étape 199 afin de vérifier si un symbole ")" est rencontré.Si un ")" est rencontré, un UN (1) est retranché au compteur de fin de parenthèse à l'étape LOO. Ji aucun ")" n'est rencontré, le programme passe à l'étape 191 ainsi que 'in- dique le circuit 201. A l'étape 202 de la Fig. 8, le compteur de fin de parenthèse est contrôlé afin de voir s'il est à zéro. 'il n'est pas à zéro, le programme suit le circuit 201. S'il est égal à zéro, un message "parenthèse non fermée" est transmis à l'étape 201 vers l'utilisateur et le programme retourne à l'étape de lecture de para mètres. Si tous les blancs sont rencontrés à l'étape 193, un blanc est déplacé à l'étape 204 vers la sortie afin d'indiquer la terminaison. Un contrôle est effectué ensuite à l'étape 205 afin de déterminer si toutes les parenthèses de l'énoncé logique sont fermées. Sinon, le message de l'étape 103 est rendu effectif et le programme saute à la lecture de paramètres. Si les parenthèses sont fermées, le programme passe à l'étape 210 où la sous-routine XLkT 135 qui démarre au début de l'énoncé logique est utilisée à nouveau pour contrôler la présence de non blancs. A l'étape 211, un contrôle d'existence de caractères alphabétiques est effectué. Si aucun caractère alphabétique n'est détecté, un contrôle de présence d'un "(" est effectué à l'étape 212 et un contrôle de présence d'un " X " est effectué à l'étape 213. A l'étape 214, un contrôle est effectué afin de voir si deux 117 It contigüs ont été rencontrés. Et si c'est le cas, ainsi que 1' indique le circuit 215, un message "logique non valable" est transmis à l'étape 216 vers l'usager et le programme revient à l'étape 102 de lecture de paramètres. Si un "t" est rencontré à l'étape 212, le programme passe à l'étape 217 d'où il est dirigé par le circuit 218 vers la sous-routine XLAT afin de contrôler le second caractère de l'énoncé logique. Si aucun "7 " n'est rencontré à l'étape 213, un contrôle est effectué à l'étape 219 afin de déterminer l'existence d'un blanc. Si un blanc est rencontré à l'étape 219, un contrôle est effectué à l'étape 220 pour voir si un caractère précédent était un ")". Si aucun non blanc n'est rencontré à l'étape 219 ou si aucun ")" n'a été rencontré précédemment, le programme passe à l'étape 216 afin d'émettre un message de logique non valable. ais, si, à l'étape 22G, le caractère précédent était un ")" ou un caractère alphabétique, la svustrcutine LOZYN sort à la sortie de l'étape 107 de la Fig. 1. Si, à l'étape 211 un caractère alphabétique est rencontré, une variable ayant été rencontrée à l'étape 230, le programme passe au second caractère de l'énoncé logique. A l'étape 231, un contrôle est effectué afin de voir si le caractère suivant de l'énoncé logique est un "+" ou un "Z". Si un "+" ou un "x" est rencontré au symbole suivant, le programme, à l'étape 217 se poursuit par le circuit 218 vers XLAT 135. Si le symbole suivant n'est ni un "+" ni un "", un contrôle est effectué à l'étape 232 afin de voir si le symbole suivant est un n)". Si ce n'est pas un ")", le programme passe à 219, 220 et sort.Si le symbole suivant est un ")", le programme revient, suivant le circuit 233 à l'étape 230 pour contrôler la détermination du symbole qui suit le ")". Il y a lieu de rappeler que, sur l'organigramme, la Fig. 8, la sortie de la sous-routine LOGSYN s'effectuait à l'étape 220 et dépendait du caractère précédent trouvé, soit un ")", soit un caractère alphabétique. Dans la Fig. 1, ayant constitué la configuration à l'étape 105 et interprété l'énoncé logique à la sous-routine LOGSYN 107, le programme procède à l'application des variables de l'énoncé logique aux données de base. Selon la Fig. 1, et venant après le LOGSYN à l'étape 107, 1' étape 250 implique la lecture du premier enregistrement dans le fichier d'enregistrements sélectionnés, qui comporte l'enregistrement de commande de fichier et contient les limites du fichier. A l'éta- pe 251, le premier enregistrement du fichier d'enregistrement est lu. C'est l'enregistrement de commande de fichier qui contient les limites du fichier. A l'étape 253, l'enregistrement suivant du fichier est lu. C'est la première donnée enregistrée dans le groupe de données de base, c'est-à-dire la première rangée de données auxquelles doivent ttre appliquées les variables et l'énoncé logique. A l'étape 500 qui sera examinée ultérieurement, un contrôle est effectué afin de voir si la fin du fichier (données de base) a été atteinte. Si ce n'est pas le cas, à l'étape 254 le premier enregistrement est contrôlé pour voir s'il contient un symbole indiquant que l'utilisateur adéjà désigné cet enregistrement particulier comme devant être ignoré ou effacé en raison d'autres considérations. S'il a été désigné, le programme retourne à l'étape 253 afin de lire 1' enregistrement suivant. S'il n'a pas été désigné, un contrôle est effectué à l'étape 255 pour voir si la forme du premier enregistrement est correcte, c'est-à-dire le nom de forme réellement enregistré dans l'enregistrement. A l'étape 256, un compteur est mis en route pour la première entrée dans la configuration après avoir été remis à zéro. Aux étapes 257, 258 et 259, les états des entrées dans la configuration sont contrôlés. Plus particulièrement, à l'étape 257, un contrôle est effectué pour voir si l'entrée dans la configuration est à la fin de la configuration ainsi que noté à l'origine, à l'étape 114 de la Fig. 3. A l'étape 258, un contrôle est effectué pour voir si l'entrée dans la configuration est active comme indiqué à l'étape 115. Si l'entrée dans la configuration n'est pas active, à l'étape 259, le programme retourne à la seconde entrée de configuration et elles est marquée au second compteur au lieu du premier compteur comme à l'étape 256. A l'étape 260, une recherche est effectuée dans l'enregistrer ment afin de voir si le label (le titre dans le présent exemplej 6. réellement contenu dans le document. Le contenu du titre doit être exploré pour rechercher si le mot "evaporite" y est contenu. La re cherche du titre est une recherche binaire qui sert à déterminer l' existence d'un champ dont le label est TITRE. A l'étape 261, un contrôle est effectué pour voir si le code de titre a réellement été trouvé dans l'enregistrement. S'il l'a été, à l'étape 262 un contrôle le est effectué afin de voir si l'opération à effectuer est "existence" comme déterminé à l'étape 142 de la Fig. 3. Si un titre a été trouvé dans le premier enregistrement, à l'étape 253 cette entrée de configuration est déterminée comme vraie.A l'étape 264, un UN est ajouté au compteur pour la première entrée de configuraticn j l'étape 265, les caractères blancs de fin spéciale qui peuvent êtrr rencontrés à la fin d'un champ donné sont rétablis. Après l'étape 265, le programme retourne, ainsi que l'indique le circuit 266, à l'étape 259 qui ramène à l'étape 257 où un contrôle est à nouveau effectué pour voir si la fin de la configuration a été atteinte. Si, après l'étape 261, aucun code n'a été trouvé, suivant le circuit 267, l'entrée de configuration est placée sur "faux" à l'e tape 268 et le programme passe à l'étape 265. Si l'opération à effectuer à l'étape 162 n'est pas un contre "existence", à l'étape 269 un contrôle est effectué pour voir si le label TITRE comporte réellement un marqueur Plus particulièrement, les caractères qui précèdent immédiatement et qui suivent immédiatement les " =" qui délimitent le titre sont enregistrés. A la suite de l'étape 270, un contrôle est effectué à l'étape 271, (Fig. 2), pour voir si l'opération est à effectuer dans le mode par mots comme désigné précédemment à l'étape 141E, (Fig. 4). Si l'opération doit s'effectuer dans le mode par mots, un contrôle est effectué à l'étape 272 pour déterminer si l'opération consiste en une suite de mots ou en la recherche d'un 2s0t exact. Si l'opération concerne une suite de mots, à l'étape 273 une table est établie pour le premier caractère du premier mot de la suite de mots. Si l' opération s'effectue dans le mode par mots et nécessite la position du mot exact (EG), une table d'exploration est établie à l'étape 274 pour le premier caractère du mot à positionner. A l'étape 275, le texte du titre est exploré afin de détecter l'existence du premier caractère du mot. Si le premier caractère du mot est trouvé, ce qui est contrôlé à l'étape 276, un contrôle est effectué à l'étape 277 pour déterminer à nouveau si l'opération doit être basée sur une vérification de suite ou d'égalité. S'il s'agit d'une égalité, une comparaison est effectuée à l'étape 278 pour déterminer si le mot voulu est présent. Si le mot est présent, ainsi que l'indique le circuit 279, le programme revient à l'étape 263 de la Fig. 1. Si le mot n'est pas le même, à l'étape 280 le programme quitte le premier mot dans lequel le premier caractère du mot voulu avait été trouvé et, comme l'indique le circuit 281, revient à 1 'é- tape 275. Si à l'étape 276, le mot n'a pas été trouvé, le programme retourne à l'étape 268 par le circuit 282. A l'étape 277, si l'opération doit être basée sur suite, un contrôle est effectué à l'étape 28, pour voir si le mot est positionné à l'intérieur de la suite. Si c'sot le cas, le programme revient à l'étape 263 par le circuit 27. Si le mot n'est pas dans la suite voulue, le programme quitte l'étape 280 et larecherche passe au mot suivant dans le titre qui comr.ence par le premier caractère voulu. En revenant maintenant à l'étape 271, si l'opération ne doit pas être effectuée dans le mode par mots, le titre est exploré à 1' étape 285 pour situer le premier nombre à l'intérieur de "Nu )". Si un nombre est trouvé, ce qui est contrôlé à l'étape 286, un contrôle est effectué à l'étape 287 pour voir si l'opération doit être "égale" ainsi que déterminé à l'étape 147. Si l'opération doit être "égale" un contrôle est effectué à l'étape 288 afin de voir si le nombre canonisé et enregistré est égal au premier nombre détecté entre les " / o ". Si c'est le cas, le programme passe à l'étape 263 par le circuit 279. Si le nombre n'est pas égal, le programme passe à l'étape 268 par le circuit 282. Si, dans l'opération de l'étape 287 il est déterminé qu'il ne doit pas être égal, un contrôle est effectué à l'étape 300 pour voir si l'opération doit être plus grand que". Si l'opération doit être "plus grand que", un contrôle est effectué à l'étape 301 pour voir si le nombre canonisé est plus grand que le nombre identifié dans le texte du titre. Si c'est le cas, le programme passe à l'éta- pe 263 par le circuit 279. Si ce n'est pas le cas, le programme passe à l'étape 268, par le circuit 282. Si, dans l'opération de l'étape 300, il est déterminé qu'il ne s'agit pas de "plus grand que" un contrôle est effectué à l'étape 302 pour voir si l'opération doit être basée sur une comparaison "inférieure à". Si c'est le cas, un contrôle est effectué à l'étape 303, pour voir si le nombre canonisé est inférieur au premier nombre identifié dans le texte du titre. Si c'est le cas, le programme passe à l'étape 263 par le circuit 279. Si ce n'est pas le cas, le programme passe à l'étape 268 par le circuit 282. Si, à l'étape 302, l'opération ne doit pas être "inférieure à, un contrôle est effectué à l'étape 304 pour voir si le nombre canonisé et enregistré est à l'intérieur de la suite. Si c'est le cas, le programme passe à l'étape 263 par le circuit 279. Si ce n' est pas le Cas, le programme passe à l'étape 268 par le circuit 282. Enfin, lorsque la fin de la configuration est atteinte, ce qui est détecté à l'étape 257, Fig. 4, le programme passe au sous-programme i.0ItE désigné par la référence 310. Il ressort du fonctionnement décrit ci-dessus que chaque fois qu'une entrée de configuration a été trouvée être vraie, une valeur vraie a été placée dans la configuration selon l'étape 26. Chaque fois qu'une entrée de configuration a été trouvée être fausse, une valeur vraie a été placée selon l'étape 268. Des valeurs vraies ont donc été ajoutées dans la configuration. Au moins en ce qui concerne les opérations décrites jusqu'ici, les configurations A et B de l'exemple ont été modifiées par adjonction de valeurs vraies. Plus particulièrement, si le mot "evaporite" est apparu dans le titre, une valeur vraie de un (1) a été ajoutée à cette partie de la configuration.Si le mot "evaporite" est apparu dans la liste de termes enregistrés dans la mémoire pour le premier enregistrement, la partie B de la configuration a été modifiée par l'adjonction d'une valeur vraie de un (1). Si le mot "evaporite" n'a pas été trouvé dans le titre, ou s'il n'a pas été trouvé dans la liste des termes, une valeur vraie zéro (O) a été ajoutée à chacune des parties A et B. Le fonctionnement décrit sur la Fig. 9 se déroule en liaison avec l'étape logique 310 de la Fig. 2 et consiste à appliquer les impératifs logiques de l'exemple (A ou B) à la configuration modifiée. Plus particulièrement, en se reportant à la Fig. 9, à l'étape 320, la logique (A ou B) est déplacée vers une zone de mémoire "sauvegarde de logique". A l'étape 321, l'énoncé logique est exploré à la recherche d'un caractère alphabétique ou d'un blanc. A l'étape 322, un contrôle est effectué pour voir s'il y a un blanc à la fin de l'énoncé logique. A l'étape 323, le déplacement de cette variable dans la configuration est calculé. A l'étape 325, la variable est remplacée par la valeur vraie (zéro ou un) et le programme revient à l'étape 321. Si, à l'étape 322, un blanc est rencontré à la fin de l'énon- cé logique, à l'étape 326 une commutation de réduction ou opération d'analyse logique est déclenchée. A l'étape 327, l'énoncé logique est d'abord interprété à la première position. A l'étape 328, l'énoncé logique est exploré à la recherche d'un " 7 ". A l'étape 329, un contrôle est effectué pour voir si un " 1 " a été trouvé. Si aucun " n " n'a été trouvé, à l'étape 330 un départ est effectué au début de l'énoncé logique et il est exploré à l'étape 331 à la recherche d'un "+" ou d'un "*". Un contrôle est effectué à l'étape 332 pour voir s'il a été trouvé soit un "+" soit un "Z". Si 1' un ou l'autre de ces symboles a été trouvé, à l'étape 333 la commutation de réduction est modifiée pour indiquer la présence d'un "+" ou d'un "x". Un contrôle est effectué à l'étape 334 afin de voir si le caractère précédent dans l'énoncé logique était un ")".Si le symbole précédent n'était pas un ")", un contrôle est effectué à 1' étape 335 afin de voir si le symbole suivant est un "(". Si le sym- bole suivant n'est pas un "(", à l'étape 336 un contrôle est effec- "#". tué pour voir si le symbole considéré est un # Si le symbole considéré n'est pas un X, à l'étape 337, une sortie est prévue pour représenter le "OU logique" de deux valeurs vraies. Si le symbole considéré est un "", la sortie "ET logique" de deux valeurs vraies est prévue à l'étape 338. Les sorties des étapes 337 et 338 soit s lisées à l'étape 339 pour décaler l'énoncé logique afin de le réduire encore en fonction des parties successives de l'énoncé logique. Si les résultats des contrôles dans l'une des étapes 334 ou 335 ont été vrais, le programme passe à l'étape 331 ainsi que l'indique le circuit 340. De même, après le décalage de l'énoncé logique à l'éb tape 339, le programme passe à l'étape 331. Si, à l'étape 329, un ll " a été trouvé, la commutation de réduction est faite à l'étape 350 pour en indiquer la présence. A l'étape 351, un contrôle est effectué afin de voir si un " n " précède immédiatement un "(" et si cela n'est pas le cas, la valeur vraie est complémentée à l'étape 352 et, à l'étape 353, l'exploré ticn de l'énoncé logique s'effectue au-delà du " 5 Si, à l'étape 351, un " 7 " précède un "(", le programme r--z- tourne à l'étape 328. Si, à l'étape 332, aucun "+" ou A n'a été trouvé, à l'étape 360 l'énoncé logique est exploré à partir de son début et, à l'étape 361 une exploration est faite en vue de détecter un "(". Un contrôle est effectué à l'étape 362 afin de voir si un "(" a été trouvé. S un "(" a été trouvé, la commutation de réduction est faite afin de l'indiquer à l'étape 363. A l'étape 364, un contrôle est effectué afin de voir si le contenu de la parenthèse est une variable simple ou une variable multiple. Si c'est une variable simple, à l'étape 365 le programme passe au-delà des deux parenthèses. Si ce n'est pas une variable simple, le programme revient à l'étapes 361 aini que l'indique le circuit 366. Si, à l'étape 362, aucun "("n'a été trouvé, un contrôle es+ effectué à l'étape 370 afin de voir si la commutation de réducti a été faite de manière à indiquer qu'un "(" a été trouvé precédem- ment, et si c'est le cas, le programme revient à l'étape 326 iu que l'indique le circuit 371. S'il n'a pas été trouvé, à l'étape 372 la valeur vraie qui reste de la réduction de l'énoncé logique apparaît à la sortie de l'étape logique 310 de la Fig. 2. L'opération ainsi effectuée consiste à appliquer l'énoncé logique aux premières valeurs vraies dans la configuration et à indiquer ensuite par l'état de la sortie de l'étape 310 si oui ou non le premier enregistrement contenait le mot "evaporite" soit dans le titre, soit dans la liste de termes du premier document. A l'étape 400, Fig. 2, un un est ajouté au nombre total de documents traités. A l'étape 401, un contrôle est effectué pour voir si la sortie du sous-programme logique 310 est un un ou un zéro. Si c'est un un, à l'étape 402, l'adresse du premier enregistrement ainsi sélectionné est enregistrée dans le fichier d'enregistrements sélectionnés. A l'étape 403, un un est ajouté au compteur qui cnregistre le nombre d'enregistrements sélectionnés et, par le canal 404, le programme retourne à l'étape 253 où l'enregistrement suivant est ensuite traité. Si la sortie de la sous-routine logique 310 consiste en un zé- ro, le programme retourne à l'étape 253, au moyen du circuit 404. Les résultats de la recherche peuvent alors être portés sur un affichage de sortie et peuvent comporter les informations indiquées dans le tableau Il. A propos de l'exemple du tableau I, les résultats du tableau Il dépeignent l'utilité de l'invention. Après avoir traité tous les documents d'un groupe dorulé de données de base, les adresses de tous les documents qui satisfont les critères choisis sont enregistrées dans la mémoire. Ensuite, si une autre recherche est souhaitée, le fonctionnement peut continuer, mais peut être facilement limité seulement au sous-groupe qui avait satisfait aux critères de recherche précédents. Plus particulièrement, sur la Fig. 1, l'étape 500 indique que le contrôle est fait afin de déterminer si la recherche a atteint la fin du fichier contenant les données de base. Si la réponse est non, le fonctionnement se poursuit après l'étape 500 par 11 étape 254 ainsi que décrit précédemment. Si le fichier a été exploré entièrement, un contrôle est effectué à l'étape 501 afin de déterminer si une recherche est désirée dans le sous-groupe qui a satisfait aux critères de recherche initiaux. Si la réponse est OUI, le programme revient à l'étape de démarrage 101. Par exemple, l'utilisateur peut maintenant restreindre le sous-groupe d'enregistrements choisi en effectuant l'opération ITERATION. L'utilisateur peut choisir l'un des traitements disponibles : LISTE, COPIE, etc... . L'utilisateur peut poser une nouvelle question à l'ensemble des données de base, c'est-à-dire SELEC TION. L'utilisateur peut mettre en oeuvre ces options en répondant "oui" ou non à la question ITERATION.Une réponse oui indique que l'utilisateur désire introduire une autre question de manière à réduire encore le sous-groupe sélectionné. Si l'option ITERATION est choisie, l'utilisateur introduit alors les variables et l'énoncé logique pour une question de restriction, de la même manière qu'il les avait introduits pour la question initiale. L'exemple ci-après illustre une question introduite résultant de la prise de l'option ITERATION spécifiée dans l'exemple. Tableau III. A. TITRE B. TERMES \ PERMIEN ) C. RESUME t PERMIENS LOGIQUE A OU B OU C RECHERCHE 103 SELECTIONNE 17 SOUS-GROUPE 2 VARIABLES SATISFAITES A 12 B 16 C 1 Dans ltexemples le tableau III contient non seulement la configuration mais aussi les résultats. Il faut noter que trois dési gnateur & de variables sont utilisés et que la recherche de mot est basée sur lemot "permien". Sur les 103 enregistrements sélectionnés dans l'ope-ration spécifiée par le tableau I, 17 enregistrements nt été trouvés etre à considérer, limités par les variables du tableau III. n relation avec l'étape 501 conduisant à l'étape 101, le démarrage implique que des nouveaux paramètres de recherche soient introduits dans le fichier d'enregistrements sélectionnés. Grâce à cela, le procédé s'adapte à des opérations d'itération basées sur des nouveaux paramètres et une nouvelle logique, et constitue un outil puissant pour la recherche de documents qui satisfont à des critères qui peuvent être imposés dans un dialogue entre l'usager et le calculateur par l'intermédiaire du pupitre de commande. Après avoir décrit le déroulement des opérations impliquées en regard des Fig. 1 à 9, l'ensemble du dispositif suivant l'invention représenté sur la Fig. 10 sera maintenant décrit ainsi que la partie interrogation QUESTRAN représentée sur la Fig. 11. En se reportant à ces Figures en liaison avec les Fig. 1 à 9, la suite des opérations des Fig. 1 à 9 sera mieux comprise. Sur la Fig. 10, l'étape 550 indique que l'introduction des données est faite dans un format tel que celui décrit précédemment. Elles sont ensuite utilisées à l'étape 551 pour constituer un fichier d' enregistrements sélectionnés. Un dictionnaire est constitué comme entrée ainsi que l'indique l'étape 552, et une liste de dictionnaires à l'étape 553. L'établissement du dictionnaire s'effectue à l'é- tape 554 en liaison avec l'établissement du fichier d'enregistrements sélectionnés ainsi que l'indique l'étape 555. A ltétape 556, des clés permettent de corriger les erreurs qui ont été notées à l'étape 557. Une liste d'erreurs est également dressée ainsi que l'indique l'étape 558, comme une partie de l'opération d'établissement d'enregistrements indiquée par l'étape 559. Ainsi que l'indique l'étape 560, les fichiers du système GIPSY sont achevés et l'ensemble est prêt à fonctionner en réponse à une question QUESTRAN comme l'indique l'étape 561. Les données existantes sur cartes 562, sur bande 563, ou sur disque 564 sont introduites par un programme de conversion 565, de manière que les images d'entrée puissent être introduites ainsi qu' indiqué en 566. Des documents de compilation originaux 567 peuvent être introduits par l'intermédiaire d'une perforatrice ou autre, ainsi que l'indique l'étape 568. Lorsque les fichiers sont terminés (Fig. 11) une question peut être posée ainsi que l'indique l'étape 570, par dialogue, si désiré, par l'intermédiaire d'un pupitre de commande. Ainsi que l'indique 1' étape 571, la question spécifie les variables et la logique. Ensuite, comme l'indique l'étape 572, la recherche est effectuée dans la réserve de données afin de sélectionner les documents voulus. Ainsi que l'indique l'étape 573, le fichier d'enregistrements sélectionnés comporte un sous-groupe de données. La question est alors posée de savoir si les résultats conviennent ou non, comme 1' indique l'étape 574. Si les résultats conviennent, la question est posée de savoir si les données doivent encore être trai+oo u mon, ainsi que l'indique l'étape 575. Si la réponse est non, l'opération est terminée. Si la réponse est oui, la sortie peut être imprimée, mise en liste ou copiée comme l'indique l'étape 576. Si les résultats ne conviennent pas, ainsi que l'indique l'étape 574, la question est posée de savoir si la question doit être rédigée à nouveau ou non, comme l'indique l'étape 580. Si la question est rédigée à nouveau, le programme passe au sous-groupe.Si la question ne doit pas être rédigée à nouveau, une nouvelle question est formulée ainsi que 1' indique le circuit 581. En QUESTRAN, la communication s'effectue par l'intermédiaire d'un pupitre de manière que les opérations puissent se dérouler avec la souplesse nécessaire pour effectuer une multiple itération sur des sous-groupes de documents que peut spécifier l'utilisateur. Afin de permettre une meilleure compréhension du système, les trois tableaux ci-après donnent, en langage d'assemblage OS/360, la liste des instructions de la routine SELECT ION, de la routine LOGSYN et de la routine LOGIQUE. Plus particulièrement, le tableau IV détaille les opérations SELECTION, le tableau V détaille les opérations LOGSYN et le tableau VI détaille les opérations LOGIQUE. Il est à noter que ce langage étant introduisible en langue française en raison des nombreuses abréviations et mots de code, la version anglaise a été conservée pour ces tableaux afin d'éviter de les rendre incompréhensibles. CT.PRASEI.BUTLOPRO TABLEAU IV ------------------------------------------------------------------- STMT SOUROE STATEMENT ------------------------------------------------------------------- 512 **************************************************************** 513 * 514 * BUILOPAC - ROUTIME ------------------------------------------------------------------- 515 * 516 * PURPOSE - INITIALTZES TBE PROF ILE 517 * ------------------------------------------------------------------- 518 * SPECIFICATIONS - INTERPRETS PARAMETER CARDS, CHECKS FOR 519 * SYNTACTICAL ERRORS AND SETS THE OPERATION 520 * FLOW CONTROL. TRANSLATES CODES, MOVES INFO ------------------------------------------------------------------- 521 * TO TBE PROFILE AND ZERCS OUT THE VARIABLE 522 * ENTRIES KEPT IN COMMON. 523 * USES R0, R1, R2, R5, R9, R14, R15 ------------------------------------------------------------------- 524 * 525 **************************************************************** ------------------------------------------------------------------- 527 BUILOPRO SR R2, R2 ZERO OUT NIGH BITS 528 TRT 0(1,@9), VARTAB VARIABLE DISPLACEMENT ------------------------------------------------------------------- 529 BCTR R2, 0 REDUCE BY ONE 530 SLL R2,2 DISPLACEMENT FOR COUNT IN COMMON 531 ST R2, VARLSV SAVE CORE LOC TILL LATER --------------------------------------------------------------------532 SLL R2,4 DISPACEMENT FOR VARIARLE 533 LA PROF, PROTAB(P.2) ADOR OF PROFILE EMTRIES 534 USING PROD, PROF ADDRESSABIL ITY FOR PROFILE DSECT -------------------------------------------------------------------- 535 TM PROFLG, X' 80' ENTRY ALREADY USED 536 BNO LASTEST NO -------------------------------------------------------------------- 538 MVO MSGLIRE, DUPVAR DUPLICATED VARIABLE 539 BAL R6, MSGPRT 540 B SNERSET FLAG ERROR AND PROCEED -------------------------------------------------------------------- 542 LASTEST LA R9, 1(R9) BUMP LOGK POSITION 543 SCANE BAL R14,XLAT SCAN ROUTIJNE -------------------------------------------------------------------- 545 B BDCRD END 546 B MORECHAR OTHER -------------------------------------------------------------------- 547 B BLDCDE ALFA 549 BOCRD PVC MSGLINE, INCOMCO INCOMPLETE CARD -------------------------------------------------------------------- 550 BAL R6, MSGPRT 551 8 SNERSET SET ERROR AND GO ON Tableau IV (suite) CT. PHASEI. BUILDPRO -------------------------------------------------------------------- STMT SOURCE STATEMEENT -------------------------------------------------------------------- 553 BADCHAR MVC MSCLINE, INVLCRD BAD CHARACTER 554 BAL R6, MSGPRT -------------------------------------------------------------------- 556 SNERSET EQU * 557 B GETPARM PROCEED -------------------------------------------------------------------- 559 MORECHAK CLI O(R9), C'O' IS IT NUM 560 BL CHKPERD NOT NUM 561 CLI O(R 9), C'9' IS IT NUM -------------------------------------------------------------------- 562 BNH BLDCDE IT'S A CODE 563 CHKPERD EQU * 564 CLI O(R 9), C'@' SAME? -------------------------------------------------------------------- 565 BE SAMELBL 566 CLI O(R9), C'.' PERIOD??? 567 BNE BADCHAR NO -------------------------------------------------------------------- 569 LA R9, 1(R9) BUMP LOCATION 570 B SCANE SCAN AGAIN -------------------------------------------------------------------- 572 SAMELBL CLC LASTVAR, = X'FFFFFFFF' IST VAR? 573 BE BADSAME YES -------------------------------------------------------------------- 575 L R6, SAMESV 576 MVC PROIF, 4(R6) USE SAME LABEL -------------------------------------------------------------------- 577 LA R9, 1 (R9) BUMP SCAM 578 B NOCLR CONTINUE PROCESSIMG -------------------------------------------------------------------- 580 BLDCDE TRT O(8, R9), LPARTAB SCAN FOR BLANK OR LT PAREN 581 B2 CTOOLMG CODE TOO LONG -------------------------------------------------------------------- 583 MVC DFCODE, BL ANKS BLANK IT OUT 584 LR R2, R1 SAVE THIS 585 SR R1,R9 CODE LENGTH --------------------------------------------------------------------586 BCTR R1,0 DECRE FOR MOVE 587 EX R1, COOE 1OVE MOVE IT 588 LR R9, R2 BUMP SCAN LOC -------------------------------------------------------------------- 589 L R15, ADFINDE ADDR OF SUBR 590 LA R1, DFPARM PARM LIST 591 BALR R14, R15 SPECIFIC CODF LOOK WITH DFIND -------------------------------------------------------------------- 593 LTR R1, R1 CODE FOUND? 594 BNZ INSERT YES --------------------------------------------------------------------- 596 MVC MSGL INE, NOCODE CODE NOT IN DICTIONARY 597 BAL R6, MSOPRT --------------------------------------------------------------------- 598 B SNERSET BLAST IT 600 CTO@LNG MVC MSGL INE, TGLONG COOE TOO LONG -------------------------------------------------------------------- 601 BAL R6, MSGPRT 602 B SNERSET -------------------------------------------------------------------- CT. PMASEI. BUTLDPRO Tableau IV (suite) -------------------------------------------------------------------- STMT SOURCE STATEMENT -------------------------------------------------------------------- 604 INSERT EQU * 605 USING DICOSECT, R1 ADORESSABILITY FOR DICTIONARY 606 MVC PROIF, DIF -------------------------------------------------------------------- 608 MVI CTPRT, C' ' BLANK OUT 609 MVC CTPRT+1(60), CTP TME PRINT AREA -------------------------------------------------------------------- 610 LH R2, CTCOUNT CLEAR TEXT COUNT. 611 LTR R2, R2 IS COUNT ZERO ? 612 BZ NOCLR YES, SKIP EVERYTHING --------------------------------------------------------------------613 BCTR R2, 0 DECRE FOR MOVE 614 EX R2, CTMOVER MOVE THE CLEAR TEXT 615 OETPUT FILE=1, PROC=2,DATA=CTAREA PRINT IT -------------------------------------------------------------------- 616+ @ GIPSY CALL TO COMTO 617+ L 15, ACOMIO 618+ LA 1, GIPL0007 -------------------------------------------------------------------- 619+ B GIP0007 620+GIPL007 DS OF 621+ DC A(CTAREA) ------------------------------------------------------------------- 622+ DC F'O' 623+ DC H'O' 624+ DC H'I' ------------------------------------------------------------------- 625+ DC H'2' 626+GIP0007 BALR 14,15 ------------------------------------------------------------------- 628 NOCLR EQU * 629 CLI O(R9), C'@' SAME? 630 BE SAME ------------------------------------------------------------------- 631 CLI O(R9), C' ' BLANK TERMIMATED LAST SOAN ? 632 BNE PARENER NO ------------------------------------------------------------------- 634 BAL R14, XLAT CONTINUE SCAN 636 B EXISTANC END ------------------------------------------------------------------- 637 B MODEIEST DTHER 638 B NUMODEA ALFA ------------------------------------------------------------------- 640 EXISTANC MVI PROOP, X'OO' ZERO OP CUDE IN PROFILE 641 B OKVAR GETOUT OF BLDPRO ------------------------------------------------------------------- 643 MODETEST CLI O(R9), C' 644 BNE RANGES NO ------------------------------------------------------------------- 646 PARENER TRT O(30,R9), RIGHTAB 647 BNZ PMOVER ------------------------------------------------------------------- 649 NORIGHT MVC MSGLINE, PTOLONG SEARCH PAREN TOO LONG 650 BAL R6, MSGPRT 651 B SNERSET MOVE ALONG ------------------------------------------------------------------- Tableau IV (suite) CT. PHASEI. BUIODPRO ------------------------------------------------------------------- STMI SQUROE STATEMENT ------------------------------------------------------------------- 653 PMOVER LR R2, R1 GET ADDR 654 SR R1, R9 LENGTH OF PAREN PLUS ONE 655 BCTR R1, O MINUS ONE -------------------------------------------------------------------- 656 STC R1, PROL NG PROF TARGET LENTH 657 BCTR R1,0 GET READY FOR EXECUTE 658 EX R1, SPMOVE MOVE IT . ~ 660 LA R9, I(R2) POINT PAST RIGHT PAREN 661 BAL X14,XLAT LOOK FOR THRU 663 B NOMOREP END 664 B TACTICER OTHER ------------------------------------------------------------------- 665 B RANCHECH ALFA 667 NOMOREP MVI PROOP, X'04: WORD SEARCH ------------------------------------------------------------------- 668 B OKVAR GETOUT OF BLOPRO 670 RANCHECK OLC O(4,R9), = C'THRU' RANGE? ------------------------------------------------------------------ 671 BE PSCAM2 YES 673 TACTICER MVC MSGLINE, TACTERR BAD SYNTAX ------------------------------------------------------------------ 674 BAL R6, MSGPRT 675 B SNERSET ------------------------------------------------------------------ 677 PSCAN 2 LA R9, 4(R9) BUMP PAST 'TMRU' 678 BAL R14, XLAT GO LOOK'N FOR 2ND PAREN ------------------------------------------------------------------680 B NORANGE END - MISSING PAREN 681 B WHATSIT OTHER - MAY BE 2ND PAREM 682 NORANGE MVC MSOLIME, BADRNGE GET BAD RANGE MSG ------------------------------------------------------------------ 683 BAL R6, MSGPRT GO PRINT IT 684 B SNERSET SET SYNTAX SWITCH 636 WHAISIT CLI O(R9), C' 687 BNE NORANGE NO, KILL IT 689 TRT O(30,R9), RIGHTAB SCAN FOR RT PAREN 690 BZ NORIGHT NOT FOUND 6?2 PVC PROPER2, BLANKS BLANK OUT 2ND TAGRET AREA 693 SR R1, R9 LENGTH PLUS eNE 694 SH R1, = H'2' MOVE LENGTH MINUS 1 FOR EX ------------------------------------------------------------------695 EX Ri , OBMOVE MOVE IT 696 MVI PROOP, X'08' ALFA RANGE IN PROFILE 697 OLO PROPERI (29), PROPER2 IS RANGE IN OPOER ? ------------------------------------------------------------------698 BH RNGFLIP NO, REVERSED 700 B OKVAR GETCUT OF BLOPRO ------------------------------------------------------------------ 702 RNGFLIP MVC MSGLIME, MIXRNGE INVERTED RANGE MSG 703 BAL R6, MSOPRT ------------------------------------------------------------------704 B SMERSET SET ERROR AND CONTINUE 706 NUMODEA EQU * ------------------------------------------------------------------- 707 CLC O(3,R9), = C'EQ' EQUAL? CT. PMASEI.BUIL DPRO Tableau IV (suite) -------------------------------------------------------------------- SIMT SOU@@ STAIEFENT IRY LESS INAN -------------------------------------------------------------------- 708 BNE LESSTEST 710 NVI PROOP, X'OC' SET NUMERIC @QUAL OP IN PROFILE -------------------------------------------------------------------- 711 B FINDNUM MUNT FER CIPMER 713 SAME CTC LASTVAR, - X'FFFFFFFF' IST VARIABLE? -------------------------------------------------------------------- 714 BE BADSAME YES 715 L R6, SAMESV GET ADDF OF PREVIOUS VARIABLE 716 MVC PRO@P (2), 2(R 6) SAME OPERATION -------------------------------------------------------------------- 717 MVC PROPERI (58), 6(R6) SAME FIELDS 718 B OKVAR THAT'S ALL 719 BAOSAME MVC MSGLINE, NORELAT MESSAGE -------------------------------------------------------------------- 720 BAL R6, MSGPRT 721 B GETPARM -------------------------------------------------------------------- 723 LESSTEST CLC O(3,R9), = C'LT ' LESS? 724 BNE GRATEST TRY GREATER -------------------------------------------------------------------- 726 MVI PRUOP, X'14' NUMERIC LESS THAM 727 8 FINONUM HUNT FER CIPHER -------------------------------------------------------------------- 729 GRATEST CLC O(3,R9), = C'GT' GREATFR? 730 BNE BADNUEBR ERROR, SEMEBUODIES CANT SPELL -------------------------------------------------------------------- 732 MVI PRCOP, X'10' NUMERIC GREATER THAN 734 FINONNM LA R9, 3(R9) BUMP PAST RELATION --------------------------------------------------------------------735 PASTBL.I@ OLI O(R9), C' :IS IT BLANK 736 BNE ISITNUM WE'VE HIT SOMETNING -------------------------------------------------------------------- 738 LA R9, 1(K9) BUMP 739 B PASTBLNK LOOP -------------------------------------------------------------------- 741 RANGES MVI PROOP, X'18' MUMERIC RANGE 742 CLI O(R9), C'@' SAME? 743 BE SAME -------------------------------------------------------------------- 745 ISITNUM LR R1, R9 GET DATA ADDR 746 L R15, = V(NUMBER) ADDR OF SUBPROGRAMME -------------------------------------------------------------------- 747 BALR R14, P15 GO TO IT 749 8 BADNUMBR INVALIO NUMBER --------------------------------------------------------------------- 750 CLI PROOP, X'18' MORE? 751 NVC PROPERI(9), O(R1) STORE CANONICAL IN PROFILE 752 BNE OXVAR NO -------------------------------------------------------------------- 754 KEEPLOKN CLI O(R9), C' ' IS IT BLANK YET 755 BE LOOKT@RU IS IT 'THRU' --------------------------------------------------------------------757 LA R9, 1 (R9) BUMP 758 B KEEPLOKN CONTINUE PLEASE --------------------------------------------------------------------760 LOOKTHRU BAL R16, XLAT SCAN FOR 'TMRU' 761 B BOCRD INOAMPLETE CARD - EMD -------------------------------------------------------------------- 762 B BADCMNR WHAF'S THIS - OTHER Tableau IV (suite) @CT. PHASEI.BUILDPRO -------------------------------------------------------------------- STMT SOUROE STATEMENT -------------------------------------------------------------------- 764 CLC O(5,R9), = C'THRU' IS IT 765 BNE BADNUMBR INVALID NUMBER -------------------------------------------------------------------- 767 LA R9,5 (R9) BUMP PAST 768 NOTYET CLI O(R9), C' ' HAVE WE ENCOUNTERED A NUMBER 769 BNC SECNDNUM GET 2ND NUMBFR -------------------------------------------------------------------- 771 LA R9, 1(R9) BUMP 772 B NOTYET WHERE IS IT -------------------------------------------------------------------- 774 SECMONNM LR R1.R9 GET DATA ADDR 775 L R15, = V(VUMBER) ADDR OF SUBPROGRAMME -------------------------------------------------------------------- 776 BALR R14,R15 GO TO IT 778 B BADNUMBR INVALID NUMBER -------------------------------------------------------------------- 779 MVC PROPER2(9), O(R1) STORE CANONICAL IN PROFILE 781 CP PROPERI (9), PROPER2(9) ARE THEY IN RIGHT ORDER -------------------------------------------------------------------- 782 BH RNGPLIP INVALTD ORDER OF RANGE 784 GRVAR OI PROFLG, X ' 80' FLAG VARIABLE AS USED -------------------------------------------------------------------- 785 L R2, VARLSV RESTORE CORE LOC OF VAR COUNT 786 SR R5, R5 ZERO 787 ST R5, PROCNT (R20 ZERO COUNT OF A USED VARIABLE -------------------------------------------------------------------- 788 ST PROF, SAMESV SAVE VARIABLE LOCATION FOR 'SAME 789 C PROF, LASTVAR HIGHER VARIABLE THIS TIME ? 790 BL GETPARM NO, SKIP IT --------------------------------------------------------------------- 791 ST PROF, LASTVAR KEEP IT 792 B GETPARM NEXT PARM ? -------------------------------------------------------------------- 794 BADNUMER MVC MSGLIME, BADPARM MSG 795 BAL R6, MSGPRT GO PRINT IT 796 B SNERSET GO SET SYNTAX -------------------------------------------------------------------- 797 * END OF BLDPRG 798 CTM@VER MVC CTPRI(1), CLRTEXT Tableau IV (suite) CT .PIiASE2 STMT SOURCE STATEMENT ------------------------------------------------------------------- 800 **************************************************************** 801 **************************************************************** 802 * -------------------------------------------------------------------- 803 * RECORD PROCESSING SECTION - 2ND PHASE OF SELECT 804 * 805 **************************************************************** ------------------------------------------------------------------- 806 **************************************************************** 808 PROCESS EQU * ------------------------------------------------------------------- 809 GETPUT FILE = 1, PROC = 2, DATA = DUMLINE 810+* GIPSY CALL TO COMIO 811+ L 15, ACDEID ------------------------------------------------------------------- 812+ LA 1,GIPL0008 813+ B GIP0008 814+GIPL0008 DS OF -------------------------------------------------------------------815+ DC A(DUMLINE) 816+ DC F'O' 817+ DC H'O' -------------------------------------------------------------------818+ DC H'1' 819+ DC H'2' 820+GIP0003 BALR 14,15 -------------------------------------------------------------------821 GETPUT FILE = 1, PROC = 2, DATA=BEGIN 822+* GIPSY CALL TO COMIO 823+ L 15, ACOMIO ------------------------------------------------------------------- 824+ LA 1,GIPLOOO9 825+ B GIP0009 826+GIPL0009 DS OF ------------------------------------------------------------------- 827+ DC A(BECIN) 828+ DC F'O' 829+ DC H'O' ------------------------------------------------------------------- 830+ DC H'1' 831+ DC H'2' 832+GIP0009 BALR 14,15 ------------------------------------------------------------------- 833 GETPUT FILE=1, PROC=2, DATA=DUMLIME 834+* GIPSY CALL TO COMIO 835+ L 15, ACOMIO ------------------------------------------------------------------- 836+ LA 1, GIPLOOIO 837+ B GIPOOIO 838+GIPLOOIO DS OF ------------------------------------------------------------------- 839+ DC A(DUMLINE) 840+ DC F'O' 841+ DC H'O' -------------------------------------------------------------------842+ DC H'1' 843+ DC H'2' 844=GIPOOIO BALR 14,15 -------------------------------------------------------------------845 CLI ISWITCH, X'80' SHALL WE ITERATE 846 DE RECPRO I THINY NOT 848 GETPUT FILE = 6, PROC = 3 REWINO SRF FOR ITERATION 849+* GIPSY CALL TO COMIC ------------------------------------------------------------------- 851+ LA 1, GIPLOOII 852+ B GIPOOII 853+GIPLOOII DS OF ------------------------------------------------------------------- 854+ DC A(0) Tableau IV (suite) CT. PHASE2 STMT SOURCE STATEMENT 655+ DC F'0' 856+ DC H'0' 857+ DC H'6' 258+ DC H'3' 859+GIPOOLL BALR 14,15 DO THE IT 860 RECPRU GETPUT FILE=6, PROC=4 POINT BACK TO FIRST OF SRF FILE 863+* GIPSY CALL TO COMIO 864+RECPRO L 15,ACOM10 865+ LA 1,GIPLOO12 866+ B GIPOO12 867+GIPLOO12 DS OF 868+ DC A(0) 869+ DC F'0' 870+ DC H'0' 871+ DC H'6' 872+ DC H'4' 873+GIPOO12 BALR 14,15 875 GETPUT PROC=3,FILE=5 GET IST FOR RECORD FILE 876+* GIPSY CALL TO COMIO 877+ L 15,ACOMIO 878+ LA 1,GIPLOO13 879+ B GIPOO13 880+GIPLOO13 DS OF 881+ DC A(0) 882+ DC F'0' 883+ DC H'0' 884+ DC H'5' 885+ DC H'3' 886+GIPOO13 BALR 14,15 ct. phase2 Tableau IV (suite) -------------------------------------------------------------------- STMT SOURCE STATEMENT --------------------------------------------------------------------888 ***************************************************************** 889 * 890 * SELECT LOOP - EXECUTED FOR EACH RECORD PRDOESSED -------------------------------------------------------------------- 891 * 892 ***************************************************************** -------------------------------------------------------------------- 894 SELLOOP CLI ISWITCII, X'80 ITERATE? 895 BNE SEQSEAR NOPE -------------------------------------------------------------------- 897 ITSEAR GETPUT FILE=6, PROC=1, PARM=SRFPARM GET NEXT SR 898+* 899+ITSEAR L 15, ACOX10 GIPSY CAIL TO COMIO -------------------------------------------------------------------- 900+ LA 1, GIPL0014 901+ B GIP0014 902+OIPLOO14 DS OF -------------------------------------------------------------------- 903+SRFPAK1 DC A(0) 904+ DC F'0' 905+ DC H'0' -------------------------------------------------------------------- 906+ DC H'6' 907+ DC H'1' 908+GIP0014 BALR 14,15 -------------------------------------------------------------------- 909 L REC,0(R1) DATA ADDR 910 LTR REC, REC EOF ON SRF? 911 BZ COMPLETE YES INDEEDY -------------------------------------------------------------------- 913 ST REC, SAVSRF SAVE DATA ADDR 914 NVC PSRF+4(6), SRFPARM+4 TTR AND REL REC -------------------------------------------------------------------- 915 ST REC, CHPTHIS 916 NVC CHPTRIS+4(6), SRFPARM+4 TO REWRITE WITH SUBSET -------------------------------------------------------------------- 918 USING RECOSFCT, REC 919 TM RFLAGS, X'80' DELETED FROM SRF? 920 BO ITSEAR YES GET ANUDDER ONE -------------------------------------------------------------------- 921 MVC GTPARM+4(6), RELPAREN TTR AND RR FROM SRF 923 GETPUT FILE=5, PROC=5, PARN=GIPARM GET THIS SR -------------------------------------------------------------------- 924+* GIPSY CALL TO COMIO 925+ L 15, ACOM10 926+ LA 1, GIPL0015 -------------------------------------------------------------------- 927+ B GIP0015 928+OIPL0015 DS OF 929+GTPARM DC A(0) -------------------------------------------------------------------- 930+ DC F'0' 931+ DC H'0' 932+ DC H'5, -------------------------------------------------------------------- 933+ DC H'5' 934+GIP0015 BALR 14,15 935 L REC, 0(R1) DATA ADOR -------------------------------------------------------------------- 936 B ONNITHIT CONTINU@ TO PROCESS 937 SEOSEAR GETPUT PROC=1, FILE=5, PAR1=RECPARMS GET NEXT RECORD 938@@ GIPSY CALL TO COMIO -------------------------------------------------------------------- 939+SEQ@EAR L 15, ACOMI@ 940+ LA 1, GIPL0016 941+ B GIP0016 -------------------------------------------------------------------- 942+GIPL0016 DS OF CT.PHASE2 Tableau IV (suite) STMT SOURCE STATEMENT 943+RECPARMS DC A(0) 944+ DC F'0' 945+ DC H'0' -------------------------------------------------------------------- 946+ DC H'5' 947+ DC H'1' 948+GIP0016 BALR 14,15 -------------------------------------------------------------------- 949 L REC, 0(R1) GET ADDR OF DATA 950 LTR REC, REC IS IT EOF 951 BZ COMPLETE YES -------------------------------------------------------------------- 953 ONNITHIT EQU * 954 USING RECDSECT, REC ADDRESSABILITY FOR RECORD -------------------------------------------------------------------- 956 TM RFLAGS,X'80' WAS THIS RECORD DELETED ? 957 BO SELLUOP YES, SKIP IT -------------------------------------------------------------------- 959 CLC RECFORM, FORM IS THIS THE RIGHT FORM 960 BEN SELLOOP NO, GO GET ANOTHER RECORD --------------------------------------------------------------------961 * NE HAVE A RECORD NOW 963 LA COMCNT, PROCNT POINT TU IST COUNT IN COMMON -------------------------------------------------------------------- 964 LA PROF, PROTAB POINT TO IST PROFILE ENTRY 965 LOOPPROF C PROF, LASTVAR ARE WE TO THE END 966 BH ALLDONE YES -------------------------------------------------------------------- 968 TM PROFLG,X'80' IS THIS ENTRY ACTIVE 969 BZ PROBUMP NO, GO TO MEXT ONE -------------------------------------------------------------------- 971 LR R1, REC ADDR OF RECORD 972 LH R2, PROIF DESIRED CODE -------------------------------------------------------------------- 973 L R15, = V(BINARY) 974 BALR R14, R15 GO LOOK -------------------------------------------------------------------- 976 LTR R2,R2 FOUND ? 978 BZ VARFALSE NO ~~~~~~ 980 CFCURD CLI PROOP, X'00' EXISTANCE 981 BE VARTRUE YES @CT. PHASE2 Tableau IV (suite) STMT SOURCE STATEMENT 983 s 984 * LOCATE THE PAREN 985 * -------------------------------------------------------------------- 986 LH R9,2(R2) GET RELATIVE PAREN 981 R9,ALLF IS IT NULL 988 BE VARFALSE CODE HAS NO PAREN FOR THIS RECOR -------------------------------------------------------------------- 989 AH R9, RELPAREN COMPUTE ABSOLUTE 990 LA R9,RCOUNT(R9) ADDR OF RECORD, R9 POINTS TO 992 LH R6,0(R9) GET LENGTH OF PAREN 993 LA R6,1(R6) ADD ON FOR 'END' BLANKS 994 * R6 CONTAINS REMAINING LENGTH OF PAREN-1 -------------------------------------------------------------------- 995 LA R9, 1(R9) BUMP PAST COUNT TO SAVEIST LOCAT 996 * R9 POINTS TO IST OHAR 997 LA R5, 0 (R9, R6) GET ADDR OF LAST 'BLANK LOCATION --------------------------------------------------------------------998 ST R5, LASTLOC SAVE ADDR OF LAST 'BLANK' IN PAR 999 ST R9, FIRSTLOC SAVE ADDR OF FIRST 'BLANK' IN PA 1000 MVC SAVELAST, 0(R5) SAVE THE CHARACTER THAT'S HERE --------------------------------------------------------------------1001 MVC SAVEIST, 0 (R9) SAVE THE CHAR HERE TOO 1002 MVI 0(R5),C' ' PUT IN A 'LAST BLANK' 1003 MVI 0(R9), C' ' PUT IN A 'FIRST BLANK' --------------------------------------------------------------------1004 MVI SAVEBIT, X'80' SET SAVE SWITCH 1006 **************************************************************** --------------------------------------------------------------------1007 * 1008 * DETERMINE MODE AND DPERATION, THEN PERFORM IT 1009 * --------------------------------------------------------------------1010 **************************************************************** 1011 CLI PROOP, X'08' WORD MODE ? 1012 DNH WORDMODE YES --------------------------------------------------------------------1014 * 1015 * FINO THE FIRST NUMBER (ONLY CONSIDERS IST NUMBER@ -----------------------------------------------------------1016 r 1017 LOOKNOM EX R6, IRTNUM SCAN FOR A POSSIBLE NUMBER 1018 BZ VARFALSE NONE FOUND --------------------------------------------------------------------1020 AR R6, R9 COMPUTE NEW 1021 SR R6, R1 LENGTH FOR SCAN --------------------------------------------------------------------1022 LR 1024 F"CTR RI,O LOOK AT PRECEEDING CHAR 1025 CLI O(P1) ,C' t IS IT BLANK ? 1026 BE NUMCHK MAY BE A NUMBER 1027 NOTNUM LA R9,1(R9) IT WASN'T A NUMBER, SO KEEP LOOK --------------------------------------------------------------------1028 BCTR R6,0 DECRE COUNT 1029 B LOORNUM KEEP LOOK' 'N 1031 NOMCMK LR R1, R9 GET OATA AODR 1032 L R15, = V(NUMBER)ADDR OF SUBPROCGRAMME 1033 BALR 414,R15 GO TO IT -------------------------------------------------------------------- 1035 8 NOTNUM NO 1037 MVC CAMNON, 0(R1) MOVE IN THE CANNOMICAL NUNBER CT. PMASE2 Tableau IV (suite) ----------------------------------------------------------------------- STMI SOURCE STATEMENT -----------------------------------------------------------------------1038 CLI PRCOP, X'OC NUMBER EQUAL? 1039 BE NUMEQU YES -----------------------------------------------------------------------1041 CLI PROOP, X'10' NUMBER GREATER THAN ? 1042 BE NUMGT YES -----------------------------------------------------------------------1044 CLI PROOP, X'14' NUMBER LESS THAN? 1045 BE NUMLT YES -----------------------------------------------------------------------1047 * CLI PROOP, X'18' NUMBER RANGE? 1048 * 1049 * NUMBER RANGE -----------------------------------------------------------------------1050 * 1051 * COULDN'T BE ANYTHING ELSE RIGHT NOW -----------------------------------------------------------------------1053 CP CANNCM, P LOOK AT THE IST NUMBER 1054 BL VARFALSE ALREADY THROWN OUT -----------------------------------------------------------------------1056 CP CANNON, PROPER2 (9) LOOK AT THE 2ND THEN 1057 BH VARFALSE TOO BAD -----------------------------------------------------------------------1059 B VARTRUE IT'S IN THE RANGE (INCLUDIN 1061 * -----------------------------------------------------------------------1062 * MUMBER EQUAL 1063 * 1064 NUMEQU CP CANNON, PROPER1 (9) LOOK AT IT -----------------------------------------------------------------------1065 BE VARTPUE IT'S EQUAL 1066 B VARFALSE OR IT'S NOT -----------------------------------------------------------------------1068 * 1069 * NUMBER GREATER THAN 1070 * -----------------------------------------------------------------------1071 NOMGT CR CANNON, PROPER1(9) LOOK AT IT 1072 BN VARTRUE IT'S GREATER 1073 B VAREALSE OR IT'S NOT -----------------------------------------------------------------------1075 * 1076 * NUMBER LESS THAM -----------------------------------------------------------------------1077 * 1078 NUMLT CP CANHGN, P LOOK AT IT 1079 BL VARTRUE IT'S LESS -----------------------------------------------------------------------1080 B VARFALSE OR IT'S NOT -----------------------------------------------------------------------1082 WOROMODE MVI SCMTABL, X'00' ZERO OUT THE 1083 MVC SCNTABL+1(255), SCNTASL TRT TABLE 1084 SR R5, R5 ZFRO QUT -----------------------------------------------------------------------1085 IO R5, PROPERI GET IST CHAR OF SEAPCH PAREN 1086 CLI PRCOP, @'04' IS IT WORD EQU OR RANGE 1087 BNE NOROPANS RANGE -----------------------------------------------------------------------1088 STC R5, SONTASL(RS) STORE IT IM THE TABLE AT PROPER 1089 B SRCHLNG GO LOOK'M CT.PHASE2 Tableau IV (suite) -------------------------------------------------------------------- STMI SOURCE STATEZENT --------------------------------------------------------------------1092 WORDRANG SR R8, R8 ZERO OUT 1093 IO R8, PROPER2 GET IST CHAR OF SECOND PAREN 1094 SR R8, R5 COMPUTE LENGTH MINUS 1 --------------------------------------------------------------------1095 LA R5, SONTABL (R5) GET ADDR OF WHERE IST CHAR GOES 1096 MVI 0(R5), X'77' PUT IN A NON-ZERO 1097 LTR R8,R8 NHAT DO WE MAVE IN THIS REG --------------------------------------------------------------------1098 BZ SRCHLNG A ZERO (SAME CHARACTER) 1099 BCTR R8,0 DECRE LENGTH FOR EXECUTE 1100 EX R8, TABLFIX BUILD THE TABLE --------------------------------------------------------------------1102 SRCHLNG SR R5, R5 GET A ZERO 1103 IC R5, PROLNG OET LENGTH OF SEARCH PAREN --------------------------------------------------------------------1104 BCTR K5,0 ADJUST FOR EXECUTE 1106 WORDSCAN CH R6, CON255 IS IT LONGER THAN 256 CHAR ? --------------------------------------------------------------------1107 BL SCANEND ND 1108 TRI 0(256,R9), SONTABL SCAN FOR 1ST LETTER OF WORD 1109 BNZ HITWORO THIS MAY BE IT --------------------------------------------------------------------1110 LA R9, 256 (R9) BUMP LOCATION 1111 SH R6, CON256 DECRE COUNT 1112 B WORDSCAN KEEP UP THE SEARCH --------------------------------------------------------------------1114 SCANEND LTR R6, R6 WHAT'S THE SIGN 1115 BM VARFALSE NOT FOUND -------------------------------------------------------------------- 1116 EX R6, W#RDTRT EXECUTE FINAL SCAN --------------------------------------------------------------------1117 t3Jr VARFALSE NOTHING 1119 HIIWORD AR R6, R9 COMPUTE NEW 1120 SR R6, R1 LENGTH FOR SCAN 1121 LR R9, R1 BUMP SCAN LOC --------------------------------------------------------------------1123 CLI FRUOP,X'04' IS IT OR EQU OR RANGE 1124 BNE WRORANSE 1126 * 1127 * WORD EQUAL RANGE -------------------------------------------------------------------- 1128 1129 EX P.5, COMP1 IS THIS THE WORD 1130 BE VARTRUE WE FOUND II, BIG DEAL .. --------------------------------------------------------------------1132 BUNPRORO LA R9,1 (R9) BUMP PAST, THIS ISN'T @T 1133 BCTR R6,0 DECRE THE LENGTH --------------------------------------------------------------------1134 B WORDSCAN KEEP LOOK'N CT.PHASE2 Tableau IV (suite) STMT SOURCE STATE@EN@ 1136 * 1137 * W@RD RANGE 1138 * 1139 @RLRA@@F EX R5,COMP1 IS II IN TIIE RANGE 1140 BH BUMPNORD C'EST LA VIE 1141 EX R5,COMP2 OME MORE CHECK 1142 BL BUMPNORD NUT IT 1144 B VARTRUE WE'VE COT IT -------------------------------------------------------------------- STMT SOURCE STATEHENT --------------------------------------------------------------------1146 * 1147 * 1148 * VARTRUE MVI PRBTRUE, X'OI' SET 01 FOR TRUE IN PROFILE --------------------------------------------------------------------1149 L R5, 9(COMCHT) GET COUNT IN COMMON 1150 LA R5, 1(R5) ADD ONE 1151 ST R5, 0(COMCNT PUT BACK --------------------------------------------------------------------1152 B CHKSAVE GO AROUND 1154 VARFALSE NVI PROTRUE, X' SET OO FOR FALSE IN PROFILE 1156 CHKSAVL CLI SAVEBIT, X'80' DID WE SAVE THE CHARACTERS ? 1157 BNE PROBUMP NO 1159 L R5,LASTLOC GET SAVED LOC OF LAST OF PAREN 1160 MVC 0(1,R5), SAVELAST PLUG WHAT WAS IN HERE, BACK IN --------------------------------------------------------------------1161 L R5, ELRSTLOC GET SAVFD LOC OF FIRST OF PAREN 1162 MVC 0(1, R5), SAVEIST PLUG WHAT WAS IN HERE, BACK I 1163 MVI SAVERIT, X'OO' RESET SWITCH --------------------------------------------------------------------1165 PROBUMP LA PROF, 64 (PROF) BUMP TO NEXT PROFILE ENTRY 1166 LA COMCRT, 4(COMCNT) BUMP TO MFXT COUMT IN COMMON -------------------------------------------------------------------- 1167 L LOOPPROF GO TO PROCESS Tr'tE NEXT 1168 ALLDONE EQU * 1169 CLI LOGBYTE, X'80' EVALUATE --------------------------------------------------------------------11 7u BE LOGIC GD EVALUATE IT 1172 * EVAL WEIGHT GDES HERE --------------------------------------------------------------------1173 * BOTH RETURM TO HERE, REG 1 HAS EITHER 0 OR 1 1174 * --------------------------------------------------------------------1176 EVALRIV L R5, PROTOTAL SET TOTAL COUNT 1177 LA R5, 1(R5) ADD 1 1178 ST R5, PEOTOTAL PUT IT BACK --------------------------------------------------------------------1180 CLI ISWITCH, X'80' ITERATE? 1181 BNE NONIT - WDPE 1183 LTR R1, R1 WAS IT SELECTED? 1184 BNZ BUMPSEL COUNT IT 1186 L REC, SAVSRF THIS IS THE ADDR OF SRF REC 1187 USING RECDSECT, PEC --------------------------------------------------------------------1188 ol RFLASS, X'80' FLAG THIS AS NOT AVAILABLE FOR N 1189 ST RFC,PSRF DATA ADDR TO PUT THIS TO REWRITE 1190 GETPUT E ILE=6, PROC=6, PARM=PSRF PUT THIS SRF REC 1191+* GIPSY CALL TO COMIO 1192+ L 15, ACOMIO 1193+ LA 1, GIPL0017 --------------------------------------------------------------------1194+ B 1195+GIPL0017 DS OF 1196+PSRF DC A(0) --------------------------------------------------------------------1197+ DC F'O' 1198+ DC H'O' 1199+ DC H'6' -------------------------------------------------------------------- 12o+ DC H'6' CT.PHASE Tableau IV (suite) STMT SOURCE STATEMEMT ----------------------------1201+GIP0017 BALR 14,15 1202 B ITSEAR GO ON WITH ITERATION 1204 NONIT LTR R1, R1 WHAT WAS RESULT? 1205 ez SELLDOP NOT SELECTED, GO TO NEXT RECORD 1207 LA R5, RECPARMS+4 GET ADDR OF LOCATION 1208 L R6, 0(R5) GET TTRZ 1209 ST R6, SRFRADR PUT IN SRF RECORD -----------------------------------------------------------------------1210 LH R6, 4(R5) GET RR 1211 STH R6, SRFRADR+4 PUT IN SRF RECORD 1212 MVI SRFREC+3, X'01' DEFINE SUBSET 1 -----------------------------------------------------------------------1213 GETPUT FILE=6, PROC=2, DATA=SRFREC PUT NEXT TO SRF 1214+* GIPSY CALL TO COMIO 1215+ L 15, ACOMIO -----------------------------------------------------------------------1216+ LA~ 1, GIPL0018 1217+ B GIP0018 1218+GIPL0018 DS OF ------------------------------------------------------------------------ 1219+ DC A(SRFREC) 1220+ DC F'O' 1221+ DC H'0' -----------------------------------------------------------------------1222+ DC H'6' 1223+ DC H'2' 1224+GIP0018 BALR 14,15 -----------------------------------------------------------------------1226 BUMPSEL L R5,PP'OSELCT GET SELECTED COUNT 1227 LA R5, 1 (R5) ADD 1 -----------------------------------------------------------------------1228 ST R5, PROSELCT PUT IT BACK 123Q CP SUBSET, = P'1' IS THIS THE FIRST SUBSET 1231 BE SELLOOP 1232 L REC,SAVSt 1235 PUTTHIS EQU * ~ - 1236 GETPUT FILE=6, PROC=6, PARM=CHPTHIS *OEFINE THIS SUBSE -----------------------------------------------------------------------1237+* GIPSY C4LL TO COMID 1238+ L 15, ACOMIO 1239+ LA 1, GIPL0019 ----------------------------------------------------------------------------1240+ C CIP0019 1241+GIPL0019 DS OF 1242+CHPTHIS DC A(0) ----------------------------------------------------------------------------1243+ DC F'0' 1244+ DC H'0' 1245+ DC H'6' ----------------------------------------------------------------------------1246+ DC H'6' 1247+GIP0019 BALR 14,15 1248 B SELLOOP GO TO NEXT RECORD ---------------------------------------------------------------------------- CT.PHASE2 Tableau IV (suite) -------------------------------------------------------------------- STMT SOURCE STATEMENT --------------------------------------------------------------------1250 **************************************************************** 1251 * 1252 * PURPOSE - DISPLAY THE COUNTS OF RECORDS RFVIEWED AND SELECT --------------------------------------------------------------------1253 * DISPLAY COUNTS OF INDIVIDUAL VARIABLES SATIED. 1254 * COMMAND IS USED IN LIEU OF PRIMT IN CROER TO DECR 1255 * THE SIZE OF THE SELECTED SUBSET WITHOUT PRINT@NG --------------------------------------------------------------------1256 * INITIAL SUBSETS. 1257 * 1258 * SPECIFICATIONS - PROFILE IS IN COMMON SO MAY BE ACCESSED BY --------------------------------------------------------------------1259 * 1260 **************************************************************** --------------------------------------------------------------------1262 COMPLETE EQU * 1263 GETPUT FILE=1, PROC=2, DATA=DUMLINE SKIP A LINE 1264+* GIPSY CALL TO COMIO --------------------------------------------------------------------1265+ L 15, ACOMIO 1266+ LA 1, GIPL0020 1267+ B GIP0020 --------------------------------------------------------------------1268+GIPL0020M DS OF 1269+ DC A(DUMLINE) 1270+ DC F'0' --------------------------------------------------------------------1271+ DC H'0' 1272+ DC H'1' 1273+ DC H'2' --------------------------------------------------------------------1274+GIP0020 BALR 14,15 1275 L R5, PPOTOTAL CONVERSION 1276 CVD R5, UNLOAD DEC --------------------------------------------------------------------1277 MVC NUMSEAR, EDIT 1278 ED NUMSEAR(8), UNLOAD+4 1279 GETPUT FILF=1, PROC=2, DATA=SEARCHED --------------------------------------------------------------------1280+* GIPSY CALL TO COMIO 1281+ L 15, ACOMIO 1282+ LA 1, GIPL0021 --------------------------------------------------------------------1284+GIPL0021 DS OF 1285+ DC A(SEAPCHED) --------------------------------------------------------------------1286+ DC F'0' 1287+ DC H'0' 1288+ DC H'1' --------------------------------------------------------------------1289+ DC H'2' 1290+GIP0021 BALR 14,15 --------------------------------------------------------------------1292 L R5, PROSELCT CONV 1293 CVD R5, UNLGAD DEC 1294 MVC NUMSEL, EDIT --------------------------------------------------------------------1295 ED NUMSEL (8), UNLOAD+4 1296 MVC SUBSETNO, FDITCH 1297 ED SUBSETNO, SUBSET+@, GET 3 POSITIONS --------------------------------------------------------------------1299 GETPUT FILE=1, PROC=2, DATA=SELECTED 1300+* GLPSY CALL TO COMIO --------------------------------------------------------------------- 1301+ L 15, ACDMIO 1302+ LA 1, GIPL002 1303+ B GIP0022 --------------------------------------------------------------------1304+GIPL0022 DS OF CT.PHASE2 Tableau IV (suite) STMT SOURCE SDATEMEMT 1305+ DC A@SELECTED) 1306+ DC F'0' 1307+ DC H'0' 1308+ DC H'1' 1309+ DC H'2' 1310+GIPOO22 BALR 14,15 1312 GETPUT EILE=1,PROC=2,DATA=BREAKOWN 1313+* GIPSY CALL TO COMIO 1314+ L 15,1COMIO 1315+ LA 1,GIPLOO23 1316+ B GIPOO23 1317+GIPLOO23 DS OF 1318+ DC A(BREAKDWN) 1319+ DC G'0' 1320+ DC H'0' 1321+ DC H'1' 1322+ DC H'2' 1323+GIPOO23 BALR 14,15 CT.PHASE2 Tableau IV (suite) ------------------------------------------------------------------- STMT SOURCE STATEMENT -------------------------------------------------------------------1325 SR R9, R9 ZERO WORD DISPLACEMENT 1326 SR R6, R6 ZERO ALFA COUNTER -------------------------------------------------------------------1328 VARLOOP L R8, PROCNT (R9) LUAD PROFILE COUNT 1329 CL R8, FFFF IS IT UNTOUCHED BY COMPUTER HAND 1330 BE BUMPER YES -------------------------------------------------------------------1332 CVD R8, UNLOAD DEC 1333 MVC NUMSTAT, EDIT -------------------------------------------------------------------1334 ED NUMSTAT(8), UNLOAD+4 1335 LA R2, ALFALIST (R6) CPAR DISPLACEMENT 1336 MVC VARIABLE, C(R2) CHAR FOR VARLABLE -------------------------------------------------------------------1338 CETPUT FILE=1, PROC=2, DATA=PLINE 1339+* GIPSY CALL TO COMTO -------------------------------------------------------------------1340+ L 15, ACOMIO 1341+ LA 1, GIPL0024 1342+ B GIP0024 -------------------------------------------------------------------1343+GIPL0024 DS OF 1344+ DC A(PLINE) 1345+ DC F'0' -------------------------------------------------------------------1346+ DC H'0' 1347+ DC H'1' 1348+ DC H'2' -------------------------------------------------------------------1349+GIP0024 BALR 14,15 1351 BUMPER LA R6, 1 (R6) BUMP VARIABLE LIST -------------------------------------------------------------------1352 LA R9, 4(R9) BUMP WORD 1353 CH R6, =11'26' END? 1354 BNE VARLOOP NO -------------------------------------------------------------------1356 GETPUT FILE=1, PROC=2, DATA=DUM,LINE 1357+* GIPSY CALL TO COMIO -------------------------------------------------------------------1358+ L 15, ACOMIO 1359+ LA 1, GIPL0025 1360+ B GIP0025 -------------------------------------------------------------------1361+GIPL0025 DS OF 1362+ DC A(DUML INE) 1363+ DC F'0' -------------------------------------------------------------------1364+ DC H'0' 1365+ DC H'1' 1366+ DC H'2' -------------------------------------------------------------------1367+GIP0025 BALR 14,15 1369 IMSGLOOP GETPUT FILE=1, PROC=2, DATA=IMSG ITERATION MSG -------------------------------------------------------------------1370+* GIPSY CALL TO COMIO 1371+IMSGLOOP L 15, ACOMIO 1372+ LA 1, GIPLOO26 -------------------------------------------------------------------1373+ B GIP0026 1374+GIPL0026 DS OF 1375+ DC A(I 1SG) -------------------------------------------------------------------1376+ DC F'0' 1377+ DC H'0' 1378+ DC H'1' -------------------------------------------------------------------1379+ DC H'2' Tableau IV (suite) CT.PHASE2 ----------------------------------------------------------------------- STMT SOORCE STATEMENT -----------------------------------------------------------------------1380+GIP0026 BALR 14,15 1382 GETREP EQU * -----------------------------------------------------------------------1383 GETPUT FILE=0, PFOC=1 WHAT IS THE REPLY FROM TERMINAL? 1384+* GIPSY CALL TO COIlO 1385+ L 15,ACOMIO ------------------------------------------------------------------------ 1386+ LA 1,GIPL0027 1387+ B GIP0027 1388+GIPL0027 DS OF -----------------------------------------------------------------------1389+ DC A(0) 1390+ DC F'0' 1391+ DC H'0' -----------------------------------------------------------------------1392+ DC H'0' 1394+GIP0027 BALR 14,15 ----------------------------------------------------------------------- 1-393+ DC H'1' 1395 L REC, 0(R1) THE DATA ADDR 1396 TRT O(40, REC), VARTAB LOOK FOR ANSWER 1397 BZ REPYN GIVE ANOTHER TRY ----------------------------------------------------------------------- 1399 CLI O(R1),C'Y' ITERATE? 1400 BNE CCOMP NOPE -----------------------------------------------------------------------1401 TRT O(40, REC), SSETTAB SCAN FOR NEW(PREV) SUBSET NO. 1402 ENZ CHGSUBST, CHANGE SS NO. AND GO TO'ITER 1403 INCSUB AP SUBSET, = P'1' INCRE SUBSET NO. ----------------------------------------------------------------------- 1404 * 1405 CVB R2, SUBSET GET BINARY SUBSET NO 1406 STC R2, CHARSUB STORE 1-BYTE TO PLACE IN R -----------------------------------------------------------------------1407 **** (AFTER INCSUB) USE FOR SUBSET INDICATOR 1409 ITER EQU * -----------------------------------------------------------------------1410 MVI ISWITCH, X'80' SET ITERATION SWITCH 1411 LA PROF, PRJTAB ADOR OF PROFILE 1412 LA R2, PROND GET STOP ADDR 1413 LOOP NI PROFLG, X'00' ZERO LIKE UNUSED VARIABLE 1414 LA PROF,64(PROF) UP PROFILE ENTRY 1415 CR PROF, R2- ARE WF TO THE END ? ----------------------------------------------------------------------- 1416 BNH INLOOP NO ZERD SUM MDRE -----------------------------------------------------------------------1418 ~~~~B~ INIT GO ITERATE SOME ~~~~~~~~~~~~ 1420 CCOMP CLI O(R1), C'N' CONTINUE? 1421 BNE REPYM NEITHER GIVE ANOTHER TRY -----------------------------------------------------------------------1423 KEEP 1424+ L 13,SVA+4 -----------------------------------------------------------------------1425+ LM 14,12,12(13) * HOUSEKEEPING * 1426+ BR 14 1429 REPYN GETPUT FILE L,PROC=2,DATA=YES NO ASK FOR PROPER RESPO 1430+* GIPSY CALL TO COMIC 1427+SVA DS 90 1431+REPYN L 15,ACOMIO 1432+ LA 1, GIPL0029 1433+ B GIP0029 -----------------------------------------------------------------------1434+GIPL0029 DS OF CT.PHASE2 Tableau IV (suite) ----------------------------------------------------------------------- STMT SOURCE STATEMENT 1435+ DC A(YESNO) 1436+ DC F'0' 1436+ DC H'0' -----------------------------------------------------------------------1438+ DC H'1' 1439+ DC H'2' 1440+GIP0029 BALR 14,15 -----------------------------------------------------------------------1441 B GETREP 1443 CHGSUBST EQU * -----------------------------------------------------------------------1444 TRT 1(1, R11, SSETTAB CHECK NEXT POS FOR NUXERIC 1445 BNZ TWOOIGIT NUMBER OF FORM XX 1446 PACK CHKSUBNO, O(1, R1) NUMBER OF FORM X-PACK DESIR -----------------------------------------------------------------------1447 B BACKCK 1448 TWODIGIT PACK CHKSUBND, O(2, R1) XX-PACK DESIR 1449 BACKCK CP CHKSUBNG, SUBSET -----------------------------------------------------------------------1450 BM INVALSUB CANMOT GO TO HIGHER SUBSET N 1451 B CANDO 1452 INVALSUB GETPUT FILE=1, PROC=2, DATA=BADSUB -----------------------------------------------------------------------1453+* GIPSY CALL TO COMIO 1454+INVALSUB L 15, ACOMIO 1455+ LA 1, GIPL0030 -----------------------------------------------------------------------1456+ B GIP0030 1457+GIPL0030 DS OF 1458+ DC A(BACSUB) -----------------------------------------------------------------------1459+ DC F'0' 1460+ DC H'0' 1461+ DC H'1' -----------------------------------------------------------------------1462+ DC H'2' 1463+GIP0030 BALR 14,15 1464 B IMSGLOOP ------------------------------------------------------------------------ 1465 CANDO MVC SUBSET, CHKSUBNO MOVE PRVE SS@ TO SUBSET INDI 1466 CVB R1, CRKSUBNO CONVERT PREVIOUS SUBSET AND 1467 STC R1, CHAR STORE CHARACTER TO COMPARE C -----------------------------------------------------------------------1468 * TO PFLAGS+I(1) 1469 GETPUT FILE=6, PRUC=3 GETFIRST TO SRF 1470+* GIPSY CALL TO COMIO -----------------------------------------------------------------------1471+ L 15, ACOMIO 1472+ LA L, GIPL0031 1473+ B GIP0031 -----------------------------------------------------------------------1474+GIPL0031 DS OF 1475+ DC A(0) 1476+ DC F'0' -----------------------------------------------------------------------1477+ DC H'0' 1478+ DC H'6' 1479+ DC H'3' -----------------------------------------------------------------------1480+GIP00@1 BALR 14,15 1481 CHNO GETPOT FILE=6, PROC=1, PARM=CHOSRF GN TO SRF 1482+* GIPSY CALL TO COMIO -----------------------------------------------------------------------1483+CHNO L 15,ACOH@O 1484+ LA 1, GIPL0032 1485+ B GIP0032 -----------------------------------------------------------------------1486+GIPL0032 DS OF 1487+CHGSRF DC A(0) 1488+ DC F'0' -----------------------------------------------------------------------1489+ DC H'0' ST.PHASE2 Tableau IV (suite) STMT SOURCE STATEMENT 1490+ DC H'6' 1491+ DC H'1' 1492+GIPOO32 BALR 14,15 1493 L REC,0(R1) TEST FOR EOF 1494 LTR REC,REC 1495 BZ IMCSUB EOF ON SRF 1496 @LC RFLACS+1(1),CHAR IF COMPARE > = KEEP, OTHERS 1497 BL CHNO LEAVE IN FLAGGED STATE 1498 ST REC,CHPARM 1499 MVI RFLAGS,X'00' FLAG AS ACTIVE NOW 1500 MVC RFLASS+1(1),CHAR PUT DESIRED SS&num; IN ALL ACT 1501 MVC CHPARM+4(6),CHGSRF+4 1502 * ENTRIES 1503 GETPUT FILE=6,PROC=6,PARM=CHPARM PUITHIS TO SRF 1504* GIPSY CALL TO COMIO 1505+ L 15,ACOMIO 1506+ LA 1,GIPLOO33 1507+ B GIPOO33 1508+GIPLOO33 DS OF 1509+CHPARM DC A(0) 1510+ DC F'0' 1511+ DC H'0' 1512+ DC H'6' 1513+ DC H'6' 1514+CIPOO33 BALR 14,15 1515 B CHMO 1516 ***************************************** LOGICAL END OF SELECT ************** T. PHASE1.LOGSYN TABLEAU V ---------------------------------------------------------------------- @TMT SOURCE STATEMENT ----------------------------------------------------------------------361 ******************************************************************* 362 * 363 * LOGSYN - ROUTINE ----------------------------------------------------------------------364 * 365 * PURPOSE = CHECKS THE LOGICAL STATEMENT FOR SYNTACTIFCAL ERRO 366 * ----------------------------------------------------------------------367 * SPECIFICATIONS - CONVERT BGOLEAN OPERATORS ANO, OR, NOT TO 368 * SYMSOLS *, +, -, SCAN OUT BLANKS AND CHEC 369 * FOR UNBALANCED PARENTHESIS. SLEP THRU A ----------------------------------------------------------------------370 * TRANSITION TABLE FOR SYNTAX CHECK. 371 * USES R7, R8, R9, R14, R15 372 * NOTE - THE LOGIC CARD [MAGE IS LEFT IN THE CARD BUFFER (ADD ----------------------------------------------------------------------373 * ACARD 1. IF ANY MORE PARMS ARE TO BE READ IN, IT MUS 374 * BE NOVED OUT. 375 * ----------------------------------------------------------------------376 ******************************************************************* 378 MVI LOGBYTE, X'80 SET TYPE AS LOGIC ----------------------------------------------------------------------379 LA R7, 1 INITIALIZE PARENTHESIS BALANCER 380 LA R9, 5(R9) BUMP PAST LOGIC 381 L R8, ACARD START 'TO' POSITION ----------------------------------------------------------------------382 BAL R14, XLAT SCAN NON BLANK 384 B BDCRD BLANK LOGIC CARD - END ----------------------------------------------------------------------385 B BALAN MOVE AND BUHP - OTHER386 B INITENT CHECK FOR OPERATORS - ALFA ----------------------------------------------------------------------388 NONBLAMK BAL R14, XLAT 390 B SETBLANK FLAG END ----------------------------------------------------------------------391 B BALAN MOVE ONE AND BUMP ONE 392 INITENT tLC 0(3,F9), = C'ANO AND OPERATOR? 393 BNE NOTCHECK NO ----------------------------------------------------------------------395 MVI 0(R8), C'@' * OPERATOR 396 BUMPE LA R9, 3 (R9) BUMP 'FROM' BY 3 ----------------------------------------------------------------------397 B BUMPTO BUMP 'TO' BY 1 CT. PHASE1.LOGSYN TABLEAU V (Suite) ---------------------------------------------------------------------- STMT SOURCE STATEMENT ---------------------------------------------------------------------- 399 NOTCHECK CLC 0(3,R9), = C'NOT' NOT OPERATOR? 400 BNE ORCHECK NO ---------------------------------------------------------------------- 402 MVI 0(R8), C'@' @ OPERATOR 403 b BU'1P3 BUIP 'FROM' BY 3, AND 'TO' BY 1 405 ORCHECK CLC 0(2, R9), = C'OR' OR OPERATOR ? ---------------------------------------------------------------------- 406 BE FIX YES 408 SR R2, R2 ZERO GUT HIGH BITS 409 TRT 0(1, R9), VARTAB GET THE DISPOACEMENT FUNCTION 410 BCTR R2,0 REDUCE BY 1 ---------------------------------------------------------------------- 411 SLL R2,6 PROFILE DISPLACEMENT 412 LA PROF, PROTAB(R2 ) ABSOLUTE 413 USING PROD, PROF ADDRESSABILITY FOR PROFILE ---------------------------------------------------------------------- 415 CLI PROFLG, X'80' IS THIS ENTRY ACTIVE ? 416 BNE PNOTACT ---------------------------------------------------------------------- 417 B MOVEONE IT'S OK 419 PNOTACT HVC MSGLINE, NOTACTM NOT ACTIVE MESSAGE ---------------------------------------------------------------------- 420 BAL R6, MSGPRT GET ANOTHER LOGIC STATEMENT 421 B GETPARM ---------------------------------------------------------------------- 423 FIXOR MVI 0(R8), C'+' + OPERATOR 424 LA R9, 2(R9) BUMP 'FROM' BY 2 425 B BUMPTO BUMP 'TO' BY 1 ---------------------------------------------------------------------- 427 BALAN CLI 0(R9), C'@' LT PARENTHESIS? 428 BNE RTPSES NO ---------------------------------------------------------------------- 429 LA R7, 1 (R7) BUMP PARENTHESIS BALANCER 430 B MOVEONE MOVE THE BLIGHTER 432 RTPSES OLI 0(R9), C')' RF PARENTHESIS? 433 BNE MOVEONE MOVE THE BLIGHTER ---------------------------------------------------------------------- 435 BCT R7, MOVEONE BECREMENT 437 UNBALANC MVC MSGLINE, UNBAL UNBALANCED PARENTHESIS ---------------------------------------------------------------------- 438 TROUBLE BAL R6, MSSPRT 439 g GETPARM TRY LOGIC AGAIN 441 MOVEONE MVC 0(1, R8), 0(R9) MDVE A CHARACTER 442 LA R9, 1(R9) BUMP 'FROM' BY I 443 BUMPTO LA R8, 1 (R8) BUMP 'TO' BY 1 ---------------------------------------------------------------------- 444 B NONBLANK SCAN SUM MORE 446 SETBLANK MVI 0(R8), X'FE' LOGIC EVALUATOR STOPPER ---------------------------------------------------------------------- 447 BCT R7, UNBALANC SALANCED PARENTHESIS? CT.PRASE1.LOGSYN TABLEAU V (Suite) STMT SOURCE STATEMENT 449 * BEGIR TRARSITION CHECKING - BEGIN IN STATE 1 451 TRANSIT L R9,ACARO ADDR OF LOGIC 452 STATE@ BAL R14,XLAY SCAN LOGIC 454 B BETA HIT TCRMIMATOR 455 B NONCHAR STATE1 256 STAT@2 LA R9,1(R9) A VARIAGLE, VUMP PAST 457 CLI 0(R9),C'+' OR? 456 BE STATBU2P YES 460 CLI 0(R9),C'*' ANO? 461 BE STATBUMP YES 463 CLI 0(R9),C'@' LT PARONTHDSIS? 464 BNE BETA 465 B STATE2 GO TO STATE2 467 NONCHAR CLI 0(R9),C'@' @@ PARENTHESIS? 468 BE STATBUMP NO 470 CLI 0(R9),C'@' NDT? 471 BNE INVALID. 473 LR R7,R9 TDMP STORE 474 BCTR R7,0 DFOREMEMT 475 CLI 0(R@),C'@' PREVI@US NOT ? THIS IS ALFA TES 476 BNE STATBUMP 478 INVALID MVC MSOBIME, INVIOG INVALID LOGIC EXPRESSION 480 B TROUBLE CT.PHASE1.LOSSYN TABLEAU V (Suite STMT SOURCE STATEMENT 482 STATBUMP LA R9,1(R9) BUMP 483 B STATE1 GO TO STATE 1 485 BETA CLI 0(R9),X'FE' EMD OF LOGIC? 486 BNE INVALID NO, BOMBED 488 MVI 0(R9),C' ' REPLACE WITH BLANK 490 BCTR R9,0 DECREMEMT 491 CLI 0(R9),C'@' PREVIOUS LT PARENTHESIS 492 BE CHKVAR OK 494 TRT 0(1,R9),VARTAB PREVIOUS ALFA? 495 BZ IMVALID NO 496 B CHKVAR END OF LOGSYN CT. PHASE2.LOGIC TABLEAU V@ ------------------------------------------------------------------------- STMT SOURCE STATEMENT -------------------------------------------------------------------------1518 ********************************************************************* 1518 * 1520 * LOGIC - SUBPROGRAMME -------------------------------------------------------------------------1521 * 1522 * PURPUSE - AFTER RUNNING THE PROFILE AGAINST A PRCORD, 1523 * THIS NILL PERFORM BOOLEAN OPFRATIONS ON THE -------------------------------------------------------------------------1524 * TRUTH VALUES OF THE RESPECTIVE VARIABLES. 1525 * 1526 * SPECIFICATIONS -------------------------------------------------------------------------1527 * 1528 * 1) SCAN FOR V, COMPLEMENT C, SHIFT LEFT 1 1529 * -------------------------------------------------------------------------1530 * 2) SCAN FOR Vol V, REPLACE BY X, SHIFT LEFT 2 1531 * 1532 * 3) SCAN FOR (V), REPLACE BY V, SHIFT LEFT 2 -------------------------------------------------------------------------1533 * 1534 * 4) PREVIOUS REDUCTION IN LOOP? 1535 * -------------------------------------------------------------------------1536 * YES - START OVER AT 11 1537 * NO - FINISHED 1538 * -------------------------------------------------------------------------1539 * TRUTH VALUE SRAVITATES TO POSITION 1 IN WORK AREA 1540 * THEN RETURMED IN REGISTER 1. 1541 * -------------------------------------------------------------------------1542 ***************************************************************** 1544 LOGIC LA R6, LOGSAVE ADDR OF LOGIC SAVE AREA -------------------------------------------------------------------------1545 L R8, ACARD ADDR OF LOGIC 1546 MVC 0(72, R6), 0(R8) MOVE IT 1547 MVI VARTAB+64, INSERT BLANK IN VARIABLE TABLE -------------------------------------------------------------------------1549 ALFALOOP SR R2, R2 ZERO OUT HIGH BITS 1550 TRT 0(72, R6), VARTAS SCAN FOR ALFA -------------------------------------------------------------------------1551 CLI 0(R1), C' ' END OF LOSIC STATEMENT ? 1552 BE EVALUATE YES -------------------------------------------------------------------------1554 BCTR R2,0 REDUCE BY I 1555 SLL R2,6 PROFILE DISPLACEMENT 1556 LA PROF, PROTAB (R2) ABSOLUTE -------------------------------------------------------------------------1557 USING PROO, PROF ADDRESSABILITY FOR PROFILE 1559 MVC 0(1, R1), PROTRUE TRUTH VALUE INTO LIGIC STATEMEN -------------------------------------------------------------------------1560 LA R6, 1(R1) BUMP SCAN POSITION 1561 B ALFALOOP -------------------------------------------------------------------------1563 EVALUATE MVI VARTAB+64, X'00' RESTORE VARIABLE TABLE 1565 PMASE1 MVI REOUCE, X'00' RESET REOUCTION TEST -------------------------------------------------------------------------1566 LA R6, LOGSAVE 1567 INTERI TRT 0(72,R6), NOTAB SCAN FOR @ OR BLANK 1568 CLI 0(R1), C'@' NOT ? -------------------------------------------------------------------------1569 BNE PHASE2 NO 1571 MVI REDUCE, X'CO' SET REDUCE -------------------------------------------------------------------------1572 CLI 1(R1), C'(' IS IT @V ? CT. PHASE2.LOGIC TABLEAU VI (Suite) ------------------------------------------------------------------------- STMT SOURCE STATEMENT -------------------------------------------------------------------------1573 BE NOTBUMP NO 1575 XI 1(R1), X'01' COMPLEMENT -------------------------------------------------------------------------1576 MVC 0(72,R1), I(R1) SHIFT LEFT 2 1577 NCTBUMP LA R6, 2(R1) BUMP 1578 B INTER1 -------------------------------------------------------------------------1580 PHASE2 LA R6, LOGSAVE 1581 INTER2 TRT 0(72,R6), OPTAB SCAN FOR CONNECTIVE OR BLANK -------------------------------------------------------------------------1582 CLI 0(R1), C'' BLANK ? 1583 BE PHASE3 YES -------------------------------------------------------------------------1585 MVI REDUCE, X'80' SET RED 1586 BCTR R1,0 LOOK BACK 1587 CLI 0(R1), C' WAS CONNECTING TERM? -------------------------------------------------------------------------1588 BE RESBUMP2 YES 1590 CLI 2(R1), C'@' CONNECTING TERM? -------------------------------------------------------------------------1591 BNE VARCONEC YES 1593 RESBUMP2 LA R6, 3(R1) RESTORE POSITION -------------------------------------------------------------------------1594 B INTER2 HUNT SOME MORE 1596 VARCONEC OLI 2(R1), C' IS IT A NOT? -------------------------------------------------------------------------1597 BE RESBUMP2 YES, THERE'S NOTHING TO DO 1599 CLI 1(R1), C'*' AND? -------------------------------------------------------------------------1600 BNE LOGOR NO, MUST BE OR CONNECTTVE 1602 NO 2(1, R1), 0(R1) KIGUCAK ORIDYCT -------------------------------------------------------------------------1603 SHIFT2 MVC 0(72,R1), 2 (R1) SHFT LEFT 2 1604 LA R6, 1(R1) BUMP-SCAN POSITION 1605 B INTER2 -------------------------------------------------------------------------1607 LOGOR OC 2(1, R1), 0(R1) LOGICAL SUM 1608 B SHIFT2 GO ON -------------------------------------------------------------------------1610 PHASE3 LA R6, LOGSAVE ADDR OF LOGIC 1611 INTER3 TRT 0(72,R6), LPTSTAB SCAN FOR LEFT PAREN OR BLANK -------------------------------------------------------------------------1612 CLI 0(R1), C' ' BLANK ? 1613 BE PHASE4 -------------------------------------------------------------------------1615 MVI REDUCE, X'80' SET REDUCTION 1616 CLI 2(R1), C')' (V) ? 1617 BNE PHS48UMP NO -------------------------------------------------------------------------1619 MVC 0(1,R1), 1(R1) MOVE VAK DOWN 1620 MVC 1(72,R1), 3(R1) MOVE REST DOWN -------------------------------------------------------------------------1621 PHS48UMP LA R6, 1(R1) BUMP SCAN POSITION 1622 B INTER3 GO ON -------------------------------------------------------------------------1624 PHASE4 CLI REOUCE, X'80' PREVIOUS REDUCTION IN LOOP ? 1625 BE PHASE1 YES -------------------------------------------------------------------------1627 SR R1, R1 ZERO OUT HIGH ORDER BITS CT.PHASE2.LOGIC TABLEAU VI (Suite STMT SOURCE STAT@MENT 1628 LC R1,LOGSAVE GET TRUTH VALUE 1629 B EVALRTN RETURN Having described the invention in connection with certain specific embodiments thereof, it is to be understood that further modifications may no suggest themselves to those skilled in the art and it is intended to cover such modifications as fall within the scope of the appended claims. REVENDICATIONS. 1 - Dispositif automatique de traitement de données comportant une mémoire à accès direct dans laquelle des signaux de données représentant des données alphanumériques sont enregistrés dans des positions de mémoire adressables, caractérisé en ce qu'il comporte un dispositif qui, en réponse à des instructions d'entrée, enregistre dans ladite mémoire des signaux de variables représentant les variables alphanumériques qui doivent être placées dans lesdites données, un dispositif qui, en réponse à des instructions enregistrées, compare successivement chacun desdits signaux de variables avec lesdits signaux de données enregistrés, un dispositif qui, en réponse à ladite comparaison, enregistre dans ladite mémoire l'adresse de chaque signal de donnée qui correspond à chacun desdits signaux de variables, un dispositif qui, en réponse à des instructions d'entrée, enregistre dans ladite mémoire des signaux de variable supplémentaire, un dispositif qui, en réponse à des instructions enregistrées et d' instructions d'entrée, compare successivement lesdits signaux de variable supplementaire avec chacun des signaux de données enregistrés aux adresses enregistrées et un dispositif qui, à la commande d'instructions enregistrées, enregistre un index représentant les adresses qui satisfont à ladite variable supplémentaire. 2 - Dispositif automatique de traitement de données comportant une mémoire à accès direct dans laquelle des enregistrements constitués de données alphanumériques sont enregistrés dans des positions de mémoire adressables, caractérisé en ce qu'il comporte un dispositif qui, en réponse à une configuration de recherche introduite, enregistre dans ladite mémoire un code de format interne représentant des classes de parties desdites données à rechercher en fonction d' un argument de recherche pour chaque code, un dispositif qui, en réponse auxdits code et argument, compare successivement chaque arjument à la partie desdites données enregistrées désignées par ledit code, un dispositif qui, en réponse à ladite comparaison, enregistre dans ladite mémoire l'adresse de chaque enregistrement dont une partie correspond à chacun desdits signaux de variables, un dispositif qui, en réponse à une seconde configuration de recherche introduite, enregistre dans ladite mémoire un nouveau code de format interne représentant des classes supplémentaires de parties desdites données à rechercher en fonction du -nouvél argument de recherche pour chaque dit code, un dispositif qui, en réponse auxdits nouveaux code de format interne et argument, compare successivement lesdits nouveaux arguments de recherche aux parties desdites données enregistrées aux adresses enregistrées et un dispositif qui enregistre un index représentant les adresses qui satisfont audit nouveau code de format interne et à ses arguments.