Discussion:instruction

Une définition du Jargon Français.
Aller à : Navigation, rechercher

perso

Roland : je ne comprends pas ce que l'encart perso exprime ("+ l'instruction du microprocesseur.") Natmaka 16 octobre 2007 à 10:11 (CEST)

Ca peut gicler, si je me souviens bien je me demandais s'il fallait différencier l'instruction du processeur de celle du langage, mais la déf le fait bien maintenant. Roland 18 octobre 2007 à 14:49 (CEST)

COBOL

Bonjour,

A propos d'instructions dans un programme COBOL : Si l’on s’en tient à la seule terminologie Mainframe définie dans la brochure IBM COBOL reference SC26-4354-2 « System Application Architecture Common Programming Interface COBOL Reference», voilà ce que ça donnne :

A STATEMENT is a valid combinaison of a COBOL verb and its operands. It specifies an action to be taken by the object program (phase exécutable résultante de la compilation et de l’édition de liens). Statements are constructed in the PROCEDURE DIVISION (Il s’agit donc de »verbes » générant une action au sens exécution, la partie algorythmique (ex READ, PERFORM, …) et non pas ceux servant à décrire les données ou à définir l’environnement (ex FD, PICTURE, SELECT,). For descriptions of the different types of statements, see : Impérative Statements, Conditional Statements, Delimited Scope Statements Compiler Directing Statements.

Quelques exemples : Impérative Statements, COMPUTE, SORT, ACCEPT, MOVE, STOP RUN, READ, …. Conditional Statements : IF, EVALUATE, "verbs" accompagnés de la clause (NOT) ON SIZE ERROR Delimited Scope Statements : END-verbs tels que END-IF, END-READ, END-PERFORM,… Compiler Directing Statements, COPY, TITLE, EJECT, SKIP,…

A SENTENCE is a sequence of one or mor statements, ending with a separator period. Sentences are constructed in the Procedure Division.

Exemple de « «Sentence » :

PROCEDURE DIVISION.
…………………………....
……………………………
PERFORM    
           Imperative-statement-1      exemple : (verb)COMPUTE    (operands)AB  = A + B  
           ………….-statement-2   
           ………….-statement-   
END-PERFORM.

Je ne peux que soumettre à votre critique cette définition évidemment spécifique afin de tenter de consolider ce que son sens recouvre avec celles d’autres langages. Je ne pense pas que les résultats de ces comparaisons puissent être très éloignés, mais dans le doute je préfère ne rien formaliser.

Cordialement,

christian 8 janvier 2008 à 16:52 (CET)

Il me semble que COBOL, tel que tu le décris ici, présente 2 spécificités:
  • statement a deux sens, l'un est synonyme de déclaration et l'autre d'instruction. Ce dernier sens distingue le code « opérant » (qui fait quelque chose, qui correspond à un verbe). IBM adopte ici cette dernière acception. D'autres langages ou auteurs (voire IBM en d'autres lieux? Encore que ce soit peu probable car IBM semble depuis longtemps fortiche au jeu du 'de Lalandisme') préfèrent l'autre.
  • sentence semble ici quasi synonyme de ce que l'on nomme couramment à présent bloc
Est-ce bien cela? Natmaka 8 janvier 2008 à 21:20 (CET)


En ce qui concerne la partie déclaration, le terme IBM est Entry (même brochure) :

Entries. An entry is a series of clauses ending with a separator period. Entries are constructed in the Identification, Environment and Data division. (c'est-à-dire les divisions servant aux déclarations )


sentence semble ici quasi synonyme de ce que l'on nomme couramment à présent bloc

Franchement je n'en suis pas absolument certain. Je me demande (je n'ai rien trouvé dans ma doc qui confirme ou infirme ces interrogations)
si ce terme sous entend que des "statements" doivent être inclus dans un "statement générique" (mon exemple PERFORM ci-dessus) pour que l'ensemble reçoive la dénomination de "sentence" (en ce cas on rejoint la notion de bloc constitué de n statements),
où bien si un "statement" pris isolément peut aussi être qualifié de "sentence" comme peut le laisser penser la définition A SENTENCE is a sequence of one or more statements, ending with a separator period..... (ici on perdrait de vue la notion de bloc). Il s'agirait dans ce cas de synonymes. Resterait quand même à illustrer à quoi correspond une SEQUENCE de une (or more) instructions (Mon anglais étant rudimentaire, il est aussi possible que j'interprête mal le sens de cette phrase).
Je penche pour la première proposition, la seconde me semble stérile.
Peux-tu me donner ton avis sur cet épineux problème ? Lequel d'ailleurs n'a que peu d'importance puisque cette notion de "phrase" est spécifique à IBM et qu'elle n'interfère en rien dans la notion d'instruction qui nous intéresse. Elle n'est (ne serait) qu'une extension.

christian 9 janvier 2008 à 00:44 (CET)

OK, donc a priori, dans ce monde, statement signifie instruction et entry est synonyme de l'usuel déclaration.
Sentences are constructed in the Procedure Division laisse à mon sens entendre, si la procedure division ne peut contenir que des procédures et que l'exemple fourni est représentatif, qu'une sentence est bien un bloc
À mon sens ces précisions seraient à leur place dans le JargonF (nul ne peut ignorer IBM ou COBOL!) Natmaka 9 janvier 2008 à 03:06 (CET)


Bonsoir,

J'ai fait quelques investigations qui confirment ce que nous présentions.

Mon exemple (PERFORM in-line ci-dessus) n'était pas très bien choisi. L'exemple suivant d'une "conditional sentence" me semble plus adapté. En effet le PERFORM est à lui seul un statement qui, dans sa version in-line, contient un ou plusieurs autres "statements", d'où une confusion possible. Alors qu'un IF seul (IF entry-1 IS > entry-2,), sans la présence d'un "statement" au moins, terminé par un délimiteur, n'a aucun sens. Le compilateur lui ferait sa fête.
IF entry-1    IS      >       entry-2,
   MOVE  entry-1     TO       entry-2,              (Si l'instruction se terminait ici par un "." ou un scope = "sentence")
   MOVE  ZEROS       TO       entry-1,              (Idem)
ELSE
   PERFORM DEB-parag THRU     FIN-parag,            (idem)
   MOVE  1           TO       entry-1.              (Un point ou un "scope terminator" END-IF = FIN de la "sentence")

Les virgules sont admises et inopérantes, je les ai codées afin d'illuster la continuité de l'instruction.

Cordialement,

christian 10 janvier 2008 à 03:41 (CET)

Bonjour!
Il me semble que cela confirme que statement signifie ici instruction et sentence bloc, non  ? if est lui-même une instruction, il doit en effet être associé à un bloc exécuté si sa clause est vraie et (c'est optionnel dans certains langages) à un autre exécuté si ce n'est pas le cas Natmaka 10 janvier 2008 à 05:29 (CET)