> Tech > Eviter la répétition

Eviter la répétition

Tech - Par iTPro - Publié le 24 juin 2010
email

Lorsqu'on essaie de s'attendre à  l'inattendu, il peut en résulter une grande quantité de code. Dans notre cas, le calcul du pourcentage de profit, qui a commencé par une seule ligne de code, en est maintenant à  une bonne dizaine. Nous avons tendance à  utiliser de tels calculs fréquemment. Et

Eviter la répétition

même dans sa version finale, notre exemple pourrait être amélioré. Avec tout calcul commun, un petit effort supplémentaire peut rendre les applications plus faciles à  maintenir. En fait, il faut diviser le code commun en une procédure et un programme de service.
Avec les applications de gestion, il est facile de créer un programme de service pour chaque ensemble de calculs de même nature. On peut, par exemple, créer un programme de service appelé SlsAnlPrc, qui contient des procédures pour effectuer des fonctions d’analyse de ventes communes. Le programme de service en capsule le calcul du pourcentage de profit dans une procédure appelée GetPrfPc. Le membre d’en-tête Sales Analysis Procedures (SlsAnlPrcH, figure 1) définit des prototypes de procédures copiables dans n’importe quel programme. Le membre Sales Analysis Procedures (SlsAnlPrc, figure 2) contient le code du programme de service proprement dit.
Le programme de service SlsAnlPrc contient la procédure GetPrfPc chargée d’extraire le pourcentage de profit. La procédure GetPrcPc attend le montant de la vente au détail dans le paramètre RtlAmt et le montant du coût dans le paramètre CstAmt et elle envoie le pourcentage de profit à  PrfPc. La procédure renvoie une valeur logique de *On (réussite) ou de *Off (échec). La procédure contient tout le code nécessaire pour vérifier d’éventuelles erreurs sur les expressions arithmétiques. Notons comment les cartes D dans la procédure définissent PrfPcMax et PrfPcMin pour éviter de coder en dur les valeurs maximales et minimales que PrfPc peut contenir.
Pour utiliser les procédures de SlsAnlPrc dans un programme, il faut coder une directive Copy pour le membre SlsAnlPrcH en n’importe quel point des cartes D du programme :

/Copy AppKitCpy,SlsAnlPrcH

Pour appeler la procédure GetPrfPc, il faut ensuite coder les cartes C suivantes :

C If Not GetPrfPc( Retail:
C Cost:
C PrfPc )
C Eval ErrId = SlsAnlErrId
. . . Signaler l’erreur
C EndIf

Observons comment la valeur logique renvoyée par la procédure sert à  traiter les erreurs éventuelles rencontrées par la procédure. Le membre d’en-tête SlsAnlPrcH définit une variable externe appelée SlsAnlErrId qui est exportée par le programme de service SlsAnlPrc et importée dans les programmes applicatifs. Les variables externes constituent un moyen de partager des informations entre des procédures sans encombrer les interfaces de ces dernières. SlsAnlErrId contient l’ID de l’erreur qui a provoqué la défaillance d’une procédure dans SlsAnlPrc. On peut référencer SlsAnlErrId directement dans les programmes, comme illustré ci-dessus, au lieu de le transmettre comme un paramètre.

Téléchargez gratuitement cette ressource

IBMi et Cloud : Table ronde Digitale

IBMi et Cloud : Table ronde Digitale

Comment faire évoluer son patrimoine IBMi en le rendant Cloud compatible ? Comment capitaliser sur des bases saines pour un avenir serein ? Faites le point et partagez l'expertise Hardis Group et IBM aux côtés de Florence Devambez, DSI d'Albingia.

Tech - Par iTPro - Publié le 24 juin 2010