Question

  1. Comment déclarer une valeur constante dans le De ramassage/de l'Univers de base de données?
  2. Comment passer d'un argument à un fonction par référence constante?

Il y a certaines informations dans les IBM manuel pour l'Univers de base de données à propos des constantes, mais rien de particulier.

Veuillez noter que:

DÉFINIR une déclaration de valeur

n'est pas ce que je cherche parce qu'il substitue à la déclaration de la valeur au moment de la compilation et ne fournissent pas de réel constness de la valeur.

Personne ne sait comment déclarer ces?

Merci.

Était-ce utile?

La solution

C'est la même instruction comme dans UniData (Univers de la sœur de la base de données;les deux sont désignés collectivement comme U2), qui est: EQU et EQUATE

Par exemple:

EQU statement TO value

Je ne suis pas entièrement sûr de ce que tu veux dire par le point 2, mais je vais faire une fouille.Par défaut, tous les paramètres sont pass par référence", mais il n'y a aucune forme de const argument.Il sera toujours vous permettent de modifier la valeur du paramètre à l'interne dans la fonction/sous-routine, mais les résultats ne seront pas affecter les valeurs du équivaut en arrière dans le programme appelant/fonction/sous-routine.


Note de côté:Si vous voulez vous assurer d'un sous-programme/la fonction ne change pas la valeur d'une variable réelle vous pass (passage par valeur), vous pouvez l'affecter à une variable temp et pass, ou de l'entourent avec la parenthèse

Par exemple:

CALL MySub(PassByRef, (PassByValue))

ce que l' () n'est de créer une copie temporaire de PassByValue puis passer le temp copie par référence.Cela empêche les changements de multiplication de retour dans PassByValue

Autres conseils

Vous n'avez pas besoin de définir des variables avant de les utiliser dans Pick/Universe.

Pour affecter une variable qui est définie au moment de la compilation d'utilisation

EQU PI TO 3.14

Pour l'affecter au moment de l'exécution d'utilisation

PI = 3.14

La principale différence ici est que, une fois attribué au moment de la compilation, à l'aide d'un EQUATE, la variable ne peut pas être modifiée, alors que quand il est affecté au moment de l'exécution, il peut être.Par conséquent, la compilation au moment de la compilation est généralement réservé uniquement pour les constantes, alors que l'affectation au moment de l'exécution peut être utilisé à la fois pour les constantes et les standard et les valeurs de la variable.

J'utiliserais les déclarations d'équation pour créer des constantes, et si vous souhaitez les disposer de plusieurs programmes, vous devez les placer dans leur propre enregistrement et utiliser la déclaration $ include pour tirer les définitions dans d'autres programmes. Notez que toutes les valeurs vont être établies lors de la compilation.

sur "Constantes" qui sont établies à un moment donné, à une époque de compilation, ou de référencer indirectement des valeurs via des balises (transmission d'une référence constante), la plupart des programmeurs U2 utilisent des enregistrements de contrôle de quelque sorte. Étant donné que le système de fichiers et le langage de programmation en U2 sont si entrelacés, personne ne le pense à deux reprises. La plupart des systèmes que j'ai utilisés ont un ou plusieurs fichiers appelés quelque chose comme, "quelque chose.or.other.ctrl" avec des structures d'enregistrement de formulaire libre. L'éditeur est utilisé pour former des données dans des enregistrements dans le fichier de contrôle avec des touches décrivant la fonction, comme, "inventaire.Constants".

Pour les références indirectes, configurez l'enregistrement avec le premier attribut ayant les noms «constants» multipleurés et le deuxième champ avec les valeurs «constante», également multipliées. Comme ceci:

INVENTORY.CONSTANTS:

001: JOHN*PAUL*GEORGE*RINGO
001: 100*57*83*19833

(où le "*" est en réalité une marque de valeur).

Ensuite, le programme ferait ce qui suit:

SUBROUTINE SAMPLE(CONSTANT.NAME)
     .
     .
     .
OPEN "","SOMETHING.OR.OTHER.CONTROL" TO CTRL.FILE ELSE BOMB
READ CONST.REC FROM CTRL.FILE, "INVENTORY.CONTSTANTS" THEN
  LOCATE CONSTANT.NAME IN CONST.REC<1> SETTING CONST.POS THEN
    CONST.VALUE = CONST.REC<2,CONST.POS>
  END ELSE
    BOMB
  END
END ELSE
  BOMB
END

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top