-
Notifications
You must be signed in to change notification settings - Fork 0
/
TRANSCOP.SQLRPGLE
145 lines (110 loc) · 3.38 KB
/
TRANSCOP.SQLRPGLE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
**free
ctl-opt option(*srcstmt) dftactgrp(*No);
// DS des paramètres
/copy MILFORT/qcopsrc,transcoDs
dcl-pi *n;
//paremeter list
transcoDs likeDs(transcoDs_template);
end-pi;
// variables de travail
dcl-s w_message char(50);
dcl-s w_codeEntree char(20);
dcl-s w_codeSortie packed(5);
dcl-s w_returnCode int(10);
dcl-s errCheckParm ind;
monitor;
clear w_codeEntree;
clear transcoDs.ouDs;
exsr checkParm;
exsr rechercheCodeSortie;
//---------------------------------------------------------------------
exsr checkParm;
if not errCheckParm;
w_message = 'code entree : '
+ %trim(transcoDs.inDs.code_entree)
+ '.';
dsply (%trim(w_message));
w_codeEntree = %char(transcoDs.inDs.code_entree);
w_codeSortie = %dec(transcoDs.ouDs.code_sortie);
w_returnCode = %dec(transcoDs.ouDs.returnCode);
if transcoDs.ouDs.returnCode = 0; // tout va bien
clear w_message;
w_message = ' in.code entree '
+ %trim(w_codeEntree)
+ ' ou.code sortie '
+ %char(w_codeSortie)
+ ' ou.rc '
+ %char(w_returnCode)
+ '.';
dsply (%trim(w_message));
else; // erreur rencontree pendant execution transcop
clear w_message;
w_message = ' erreur transcop'
+ ' pour code entree : '
+ w_returnCode;
dsply (%trim(w_message));
endif;
else;
// erreur parametres
endif;
on-error *all;
endmon;
*inlr = *on;
//---------------------------------------------------------------------
begsr checkParm;
errCheckParm = *off;
clear w_codeSortie;
// controle valeur de code entree
if transcoDs.inDs.code_entree <> *blanks;
monitor;
w_codeEntree = %char(transcoDs.inDs.code_entree);
on-error *all; // client est vide
dsply ('parametre code entree vide');
errCheckParm = *on;
endmon;
else; // client = blanc
dsply ('parametre code entree blanc');
errCheckParm = *on;
endif;
endsr;
//-----------------------------------------------------------------------------
begsr rechercheCodeSortie;
clear w_codeSortie;
// si le paramètre en entrée est renseigné
if w_codeEntree <> *blanks;
// chercher la correspondance dans la table à créer
exec sql
select code_sortie
into :w_codesortie
from transcof
where code_entree = upper(:w_codeentree);
if sqlcode = 0; //OK
transcoDs.ouDs.code_sortie = w_codeSortie;
transcoDs.ouDs.returnCode = 0; // OK
dsply ('sqlcode '
+ %char(sqlcode)
+ ' code_sortie '
+ %char(w_codeSortie)
+ ' trouvé '
);
dsply ('returnCode = '
+ %char(w_returnCode));
else;
transcoDs.ouDs.returnCode = 1; //Erreur pas de code
dsply ('erreur sql '
+ %char(sqlcode)
+ ' codesorti '
+ %char(w_codeSortie)
+ ' non trouvé '
);
dsply ('param ok code sortie non trouvé rc = '
+ %char(w_returnCode));
endif;
else;
transcoDs.ouDs.returnCode = 1; //Erreur param blanc
// renseigner le code entree
dsply ('Veuillez renseigner le code entree');
dsply ('erreur returnCode = '
+ %char(w_returnCode));
endif;
endsr;