Forum Rules Remarque importante:

Lorsque vous postez un probléme en relation avec ABAL ou WABAL, merci de préciser la version utilisée, le systéme d'exploitation d'exécution, la version du CRITERIA et la version de l'executeur ainsi que toutes informations permettant de connaitre le contexte d'execution . cela evite de poster un message pour vous demander ces précisions !!!

  Reply to this topicStart new topicStart Poll

> KEY= besoin d'aide, modification du programme
ChV17
Posted: 16/05/16 12:50
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



Bonjour,

Je dois modifier une partie du programme.

Voici la structure des données :
CODE
;--------------------------------
; FICHIER CLIENT
;--------------------------------

 DCL RECCLI$=640
 DCL CLE_CLI$=5     ; Cl‚ du fichier.
 DCL IND_CLI#       ; Marqueur.
 DCL REC_CLI$=1024  ; Donn‚es.
 FIELD=M,REC_CLI    ; Les donn‚es en d‚tail
 DCL COPICLE$=5     ; COPIE DE LA CLE DU FICHIER
 DCL REFCLIEN$=20   ; REFERENCE CLIENT
 ** Modif Chv du 22-10-2010, ajout du FACTOR ** modif du 16/03/2016 - ajout CODE_FACTOR
;DCL EMBALLAG$=15   ; CONDITIONNEMENT
 DCL CODE_FACTOR$=14; Code du factor pour le client
 DCL FACTOR$=1      ; Factor (si facture liee a un Factor)
; Fin modif
 DCL BANQUE$=15     ; BANQUE
 DCL REFFOUR$=15    ; REFERENCE FOURNISSEUR
 DCL RSCLIENT$=40   ; RAISON SOCIALE CLIENT
 DCL ADFACT1$=40    ; ADRESSE DE FACTURATION 1
 DCL ADFACT2$=40    ; SUITE ADDRES DE FACTURATION
 DCL ADFACT3$=40    ; SUITE ADRESSE DE FACTURATION
 DCL ADFACT4$=40    ; SUITE ADRESSE DE FACTURATION
 DCL ADFACT5$=40    ; SUITE ADRESSE DE FACTURATION
 DCL ADFACT6$=40    ; ADRESSE DE FACTURATION SUITE
 DCL ADLIV1$=40     ; ADRESSE DE LIVRAISON
 DCL ADLIV2$=40     ; SUITE ADRESSE DE LIVRAISON
 DCL ADLIV3$=40     ; SUITE ADRESSE LIVRAISON
 DCL ADLIV4$=40     ; SUITE ADRESSE LIVRAISON
 DCL ADLIV5$=40     ; SUITE ADRESSE LIVRAISON
 DCL ADLIV6$=40     ; ADRESSE DE LIVRAISON SUITE
 DCL TELEPHON$=15   ; TELEPHONE
 DCL TELEX$=15      ; TELEX
 DCL INTERLOC$=60   ; INTERLOCUTEUR
 DCL REGLEMT$=40    ; CONDITION DE REGLEMENT
 DCL PORT$=30       ; PORT
 DCL DEDOUAN$=30    ; DEDOUANEMENT
 DCL FACTEMB$=1     ; FACTURATION EMBALLAGE
 DCL VENTILLA$=1    ; VENTILLATION POUR STATISTIQUE
 DCL DEVISE$=3      ; DEVISE RECHERCHE DANS FICHIER
 DCL OBSCLI1$=40    ; OBSERVATION CLIENT
 DCL OBSCLI2$=40    ; SUITE OBSERVATION
 DCL OBSCLI3$=40    ; SUITE OBSERVATION
 DCL OBSCLI4$=40    ; SUITE OBSERVATION
 DCL PRIXEMB=5      ; PRIX EMBALLAGE
 DCL CEU_CLI3$=3
 DCL EUR_CLI3$=13
 DCL CPT_CLI2$=8
 DCL REG_CLI2$=1    ; CODE REGLEMENT
;DCL LIE_CLI2$=20  ;  modification du nom de la variable
 DCL CPT_SAGE$=20
 DCL ECH_CLI2#
 DCL QUA_CLI2#
FIELD=M


Je modifie en faite une variable qui ne sert strictement à rien dans le programme pour exploiter cette zone non utilisée :

La variable
DCL EMBALLAG$=15 ; CONDITIONNEMENT

N'est pas utilisée et je souhaite exploiter cet emplacement du fichier.
La modification faite au niveau des DCL fonctionne correctement.

Mais, un peu plus loin dans le programme, il existe des déclaration de KEY et là, je suis perdu.


QUOTE

  RKEY=19
  KEY=19,"COPICLE",5      ; COPIE DE LA CLE DU FICHIER
  KEY=19,"REFCLIEN",20    ; REFERENCE CLIENT
  ** Modif ChV du 16/03/2016 - et du 13/05/2016 suppression des KEY suite … d‚passement du tampon m‚moire
  ;KEY=19,"EMBALLAG",15    ; CONDITIONNEMENT
  ;KEY=19,"CODE_FACTOR",14 ; Code du factor pour le client
  ;KEY=19,"FACTOR",1      ; Indicateur FACTOR (O)ui ou (N)on
  ; Fin Modif
  KEY=19,"BANQUE",15      ; BANQUE
  KEY=19,"REFFOUR",15    ; REFERENCE FOURNISSEUR
  KEY=19,"RSCLIENT",40    ; RAISON SOCIALE CLIENT
  KEY=19,"ADFACT1",40    ; ADRESSE DE FACTURATION 1
  KEY=19,"ADFACT2",40    ; SUITE ADDRES DE FACTURATION
  KEY=19,"ADFACT3",40    ; SUITE ADRESSE DE FACTURATION
  KEY=19,"ADFACT4",40    ; SUITE ADRESSE DE FACTURATION
  KEY=19,"ADFACT5",40    ; SUITE ADRESSE DE FACTURATION
  KEY=19,"ADFACT6",40    ; ADRESSE DE FACTURATION SUITE
  KEY=19,"ADLIV1",40      ; ADRESSE DE LIVRAISON
  KEY=19,"ADLIV2",40      ; SUITE ADRESSE DE LIVRAISON
  KEY=19,"ADLIV3",40      ; SUITE ADRESSE LIVRAISON
  KEY=19,"ADLIV4",40      ; SUITE ADRESSE LIVRAISON
  KEY=19,"ADLIV5",40      ; SUITE ADRESSE LIVRAISON
  KEY=19,"ADLIV6",40      ; ADRESSE DE LIVRAISON SUITE
  KEY=19,"TELEPHON",15    ; TELEPHONE
  KEY=19,"TELEX",15      ; TELEX
  KEY=19,"INTERLOC",60    ; INTERLOCUTEUR
  KEY=19,"REGLEMT",40    ; CONDITION DE RECLEMENT
  KEY=19,"PORT",30        ; PORT
  KEY=19,"DEDOUAN",30    ; DEDOUANEMENT
  KEY=19,"FACTEMB",1      ; FACTURATION EMBALLAGE
  KEY=19,"VENTILLA",1    ; VENTILLATION POUR STATISTIQUE
  KEY=19,"DEVISE",3      ; DEVISE RECHERCHE DANS FICHIER
  KEY=19,"OBSCLI1",40    ; OBSERVATION CLIENT
  KEY=19,"OBSCLI2",40    ; SUITE OBSERVATION
  KEY=19,"OBSCLI3",40    ; SUITE OBSERVATION
  KEY=19,"OBSCLI4",40    ; SUITE OBSERVATION
  KEY=19,"PRIXEMB",3,B,2  ; PRIX EMBALLAGE
  CKEY=19:&CREERR,ERR
    LINK=19,"REFCLIEN"
    CLINK=19


J'ai désactivé la déclaration de
KEY=19,"EMBALLAG",15 ; CONDITIONNEMENT

Pour la remplacer par :
KEY=19,"CODE_FACTOR",14 ; Code du factor pour le client
KEY=19,"FACTOR",1 ; Indicateur FACTOR (O)ui ou (N)on

Et là, à l'exécution j'ai une erreur de dépassement du tampon.
La solution trouvée est de désactiver également les lignes que j'ai ajouté, et là, l’exécution se poursuit normalement.

Mais voilà, je me pose la question de savoir si c'est la bonne méthode et si les autres déclarations de KEY restent correctes pour la suite du programme.

Je me pose la question également pourquoi le programmeur à t'il déclaré toutes les rubriques, car elles ne sont vraiment pas toutes exploitées par le programme.

S'il faut supprimer la couche MC du fichier, je en sais absolument pas comment faire.

Merci d'avance pour les avis des spécialistes.

Cordialement


PM
Top
Gianni
Posted: 16/05/16 16:37
Quote Post


Hyper User
*****

Group: _Membre
Posts: 783
Member No.: 53
Joined: 13/08/02
Submissions: None Submitted
Downloads: 11



you need change tamp variable (+20)
assign=fil,o_str40!x_sepass!"a_docdig",mc,wr:next,p_coder,tamp116,len(tamp116)

every key need 20 bytes (if you use old key instruction)

Then i do this:
if file name is file.i/D
svam -is file
rename file.i > old_file.it and the same for .d (for security)
rtam -is file
now you have the file SI (no MC)
when your code will execute clink=... al the key will be create.
ciao
gianni


PMUsers WebsiteMSN
Top
root
Posted: 16/05/16 19:26
Quote Post


God of the forum
*******

Group: Admin
Posts: 6040
Member No.: 2
Joined: 10/05/02
Submissions: 10 
Downloads: 19



L’intérêt de déclarer toutes les zones même si elles ne sont pas utilisées ensuite dans la définition de lien et donc pas exploitées dans des requêtes multic-critéres , c'est que cela rend les zones "visibles" , en interrogeant la couche MC on peut en déduire la structure du fichier .
Cela permet aussi des exploitations par ODBC puisque le fichier est décrit par la couche MC
PM
Top
ChV17
Posted: 16/05/16 23:31
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



QUOTE (Gianni @ 16/05/16 16:37)
you need change tamp variable (+20)
assign=fil,o_str40!x_sepass!"a_docdig",mc,wr:next,p_coder,tamp116,len(tamp116)

every key need 20 bytes (if you use old key instruction)

Then i do this:
if file name is file.i/D
svam -is file
rename file.i > old_file.it and the same for .d (for security)
rtam -is file
now you have the file SI (no MC)
when your code will execute clink=... al the key will be create.
ciao
gianni

Les fichiers sont du type *.D et *.I

La version est ABAL 2.2 b

Merci gianni, je vais étudier ça
PM
Top
ChV17
Posted: 16/05/16 23:36
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



QUOTE (root @ 16/05/16 19:26)
L’intérêt de déclarer toutes les zones même si elles ne sont pas utilisées ensuite dans la définition de lien et donc pas exploitées dans des requêtes multic-critéres , c'est que cela rend les zones "visibles" , en interrogeant la couche MC on peut en déduire la structure du fichier .
Cela permet aussi des exploitations par ODBC puisque le fichier est décrit par la couche MC

Merci Steph,

Pour définir l'ODBC, j'exploite habituellement les déclarations de la zone de données, si toutefois j'arrive à les comprendre, mais jusqu'à présent ça marche.
C'est avec les KEY que je n'ai pas tout compris, mais ça va venir.
Pour comprendre, bien souvent, il faut se planter, mais dans le cas présent, je ne voudrais pas que le programme plante après quelques mois d'utilisation.

Cordialement
PM
Top
root
Posted: 17/05/16 10:30
Quote Post


God of the forum
*******

Group: Admin
Posts: 6040
Member No.: 2
Joined: 10/05/02
Submissions: 10 
Downloads: 19



Ce n'est pas compliqué
Les keys permettent de décrire la structure de la data des fichiers criteria pour la couche MC.
On ne peut pas définir les élements de la clé. C'est pour cette raison que certains développeurs "duplique" les élements de la clé en début de la data
Une fois les key définient on peut décrire des liens MC par des link
En général on ne définie les key que pour permettre la définition de lien MC

PM
Top
ChV17
Posted: 17/05/16 11:18
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



QUOTE (root @ 17/05/16 10:30)
Ce n'est pas compliqué
Les keys permettent de décrire la structure de la data des fichiers criteria pour la couche MC.
On ne peut pas définir les élements de la clé. C'est pour cette raison que certains développeurs "duplique" les élements de la clé en début de la data
Une fois les key définient on peut décrire des liens MC par des link
En général on ne définie les key que pour permettre la définition de lien MC

Merci.

Donc, on peut éventuellement désactiver (mettre en commentaire) certaines lignes KEY= sans risque si elles ne sont pas utilisées dans le programme ni dans les liens MC.

PM
Top
Gianni
Posted: 20/05/16 16:25
Quote Post


Hyper User
*****

Group: _Membre
Posts: 783
Member No.: 53
Joined: 13/08/02
Submissions: None Submitted
Downloads: 11



NO commentarie
you cannot do this
KEY=19,"OBSCLI1",40 ; OBSERVATION CLIENT
****KEY=19,"OBSCLI2",40 ; SUITE OBSERVATION
KEY=19,"OBSCLI3",40 ; SUITE OBSERVATION
KEY=19,"OBSCLI4",40 ; SUITE OBSERVATION
KEY=19,"PRIXEMB",3,B,2 ; PRIX EMBALLAGE

the key is the same of dcl
dcl obscli1$=40
***dcl obscli2$=40 <<< if you do this this dcl not exit and the first byte of obscli3 will be the firse byte after the byte 40 of obscli1
dcl obscli3$=40

if you want take off 3 key you can do this:
KEY=19,"OBSCLI1",40 ; OBSERVATION CLIENT
***KEY=19,"OBSCLI2",40 ; SUITE OBSERVATION
***KEY=19,"OBSCLI3",40 ; SUITE OBSERVATION
***KEY=19,"OBSCLI4",40 ; SUITE OBSERVATION
KEY=19,"FILLER1",120
KEY=19,"PRIXEMB",3,B,2 ; PRIX EMBALLAGE


but: why?
why you not declare all the key?

This post has been edited by Gianni on 20/05/16 16:28
PMUsers WebsiteMSN
Top
ChV17
Posted: 23/05/16 07:32
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



Ok.

Je ne suis pas le concepteur du programme, je ne suis pas vraiment programmeur non plus.

Pour les DCL, je sais que l’ensemble représente l'image de l'élément du fichier en mémoire (une fenêtre ouverte sur le fichier) et les variables reçoivent les informations dans l'ordre du fichier et que ces variables doivent être exactement déclarées dans le même ordre.

Par contre, pour les KEY, c'est l'inconnu, je ne sais pas si les KEY et l'ordre des KEY représentent l'image mémoire.
Je ne sais pas si le programme initialise les KEY en allant chercher les informations dans la mémoire en utilisant les pointeurs ou les valeurs des variables de la zone tampon du fichier.

Si les KEY sont copiées dans la zone tampon en image mémoire, c'est clair que s'il manque des KEY, des décalages vont se produire.
Par contre si le programme utilise la valeur présente dans la variable, l'ordre est sans importance.

Je vais faire quelques essais pour voir ce qui arrive dans les KEY en cas de suppression de l'une d’entre-elles.

This post has been edited by ChV17 on 23/05/16 07:33
PM
Top
ChV17
Posted: 23/05/16 10:05
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



J'ai remplacé :
CODE
** Modif ChV du 16/03/2016 - et du 13/05/2016 suppression des KEY suite … d‚passement du tampon m‚moire
;KEY=19,"EMBALLAG",15  ; CONDITIONNEMENT
;KEY=19,"CODE_FACTOR",14; Code du factor pour le client
;KEY=19,"FACTOR",1    ; Indicateur FACTOR (O)ui ou (N)on
; Fin Modif

par :
CODE
** Modif ChV du 16/03/2016
;************KEY=19,"EMBALLAG",15  ; CONDITIONNEMENT
;************KEY=19,"CODE_FACTOR",14; Code du factor pour le client
;************KEY=19,"FACTOR",1    ; Indicateur FACTOR (O)ui ou (N)on
 KEY=19,"FILLER1",15
; Fin Modif

Et je n 'ai aucun message d'erreur, alors que la dernière fois, lorsque j'avais remplacé :
KEY=19,"EMBALLAG",15

par

KEY=19,"CODE_FACTOR",14
KEY=19,"FACTOR",1

Qui est d'une longueur de 15 octets également, j'avais une erreur de dépassement du tampon mémoire, c'est la raison pour laquelle j'avais mis en commentaire cette partie du code.

Bref, je dois comprendre le fonctionnement de KEY et l'implantation en mémoire, car je suis perdu.

Je n'ai pas eu le temps de faire un essai pour voir l'utilisation de la clé déclarée par KEY et ce qu'elle contient réellement.

This post has been edited by ChV17 on 23/05/16 10:06
PM
Top
root
Posted: 23/05/16 20:33
Quote Post


God of the forum
*******

Group: Admin
Posts: 6040
Member No.: 2
Joined: 10/05/02
Submissions: 10 
Downloads: 19



KEY=19,"CODE_FACTOR",14; Code du factor pour le client
KEY=19,"FACTOR",1 ; Indicateur FACTOR (O)ui ou (N)on
Cela fait toujours physiquement 15 octets effectivement dans les DCL mais en terme de déclaration MC cela ne fonctionne pas comme cela
le tampom MC lui augmente pour y caser en plus "FACTOR"
il faut donc que tu augmente le tampon pour pouvoir contenir la définition supplémentaire
PM
Top
ChV17
Posted: 24/05/16 07:29
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



Merci, compris.

le but était de retirer une déclaration pour la remplacer par une autre de même taille.

Ce n'est pas aussi simple apparemment à cause de la couche MC.

svam -is fichier

et

rtam -is fichier

semble être le moyen de reconstruire les clés ?
PM
Top
GUIARD
Posted: 24/05/16 20:15
Quote Post


Martien User
******

Group: Membre
Posts: 1693
Member No.: 239
Joined: 25/04/03
Submissions: None Submitted
Downloads: No Files Downloaded



il faut lire la documentation abal criteria
PMEmail PosterUsers Website
Top
ChV17
Posted: 25/05/16 07:10
Quote Post


Ultra User
****

Group: Membre
Posts: 361
Member No.: 1213
Joined: 18/09/06
Submissions: None Submitted
Downloads: No Files Downloaded



QUOTE (GUIARD @ 24/05/16 20:15)
il faut lire la documentation abal criteria

En effet, j'avais juste oublié l’existence de ces deux outils déjà utilisés par ailleurs.

Merci à tous pour les aides apportées.

Cordialement

This post has been edited by ChV17 on 25/05/16 07:10
PM
Top
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

Topic Options Reply to this topicStart new topicStart Poll

 

webcron.org Get Firefox! prologue-community.org est monitoré par ikoula.fr Referenceur Gratuit www.prologue-community est mis en évidence sur internet grace à daubresse.fr
moteur de recherche - referencement
Conformément à l'article 34 de la loi "Informatique et Liberté" vous disposez d'un droit d'accès, de modification, de rectification et de suppression des données qui vous concernent.
Pour l'exercer, merci de nous contacter : CONTACT US

www.prologue-community.org n'est pas enregistré à la CNIL
www.prologue-community.org est hébergé sur visit.fr

www.prologue-community.org est indépendant de la société Prologue
Une grande partie des logiciels et outils cités sur www.prologue-community.org sont des produits et marques déposées par la société Prologue


MKPortal M1.1 Rc1 ©2003-2005 All rights reserved
Page generated in 0.03046 seconds with 2 queries