1	90730	*
2	200924	H DFTACTGRP(*NO) BNDDIR('HTTPAPI') DATEDIT(*YMD)
3	170904	H BNDDIR('YAJL') DECEDIT('0.')
4	170925	H BNDDIR('BASE64')
5	170925	H BNDDIR('QC2LE')
6	200923	*
7	200923	*--> liste des partenaires
8	221108	FIMTOKP00  UF A E           K DISK
9	200923	FIFPINL01  IF   E           K DISK
10	221107	FIFIM3L03  IF   E           K DISK
11	221108	*
12	221108	FIFESGP00  O    E             DISK
13	221108	FIFDSGP00  O    E             DISK
14	171009	*
15	170925	/copy httpapi_h
16	170904	/include yajl_h
17	221003	/copy IFSIO_H
18	221003	/copy IFSER_H
19	170925	/copy IFSTEXT_H
20	171009	
21	170925	
22	170628	D my_procedure    PR
23	170628	D   header                   32767a   varying
24	90730	
25	170628	D agent           s             64a
26	90730	D rc              s             10I 0
27	201211	D URL             S            300A    varying
28	221010	D URL0            S            300A    varying
29	221010	D URL1            S            300A    varying
30	221010	D URL2            S            300A    varying
31	201119	D JSON            S            256A    varying
32	201119	D JSOM            S            256A    varying
33	171109	D XML             S            256A    varying
34	171109	D C23             S            256A    varying
35	170904	D LOG             S            256A    varying
36	170925	D HEA             s          32767a    varying
37	221004	D mytext          S          65535a   varying
38	221004	D demtok          S          65535a   varying
39	170925	D ETQ             s        5000000A
40	170925	D EB64            s        5000000A
41	90730	D timeout         s             10i 0
42	221003	D ContentType     s             64A
43	170925	D docNode         s                   like(yajl_val)
44	170925	D SuccNode        s                   like(yajl_val)
45	221010	D Node            s                   like(yajl_val)
46	221010	D Node1           s                   like(yajl_val)
47	201020	D Node2           s                   like(yajl_val)
48	201020	D Node3           s                   like(yajl_val)
49	200923	D val             s                   like(yajl_val)
50	221003	D flags           S             10U 0
51	221003	D mode            S             10U 0
52	221004	D wrdata          S           5000A
53	221004	D wrdata2         S           5000A    varying
54	221003	D*
55	221003	D Fzpl$$          DS         10000
56	221003	D  Z                      1  10000
57	221003	D                                     DIM(10000)
58	221010	D ResuList        s                   like(yajl_val)
59	221012	D RecoList        s                   like(yajl_val)
60	221012	D TfouList        s                   like(yajl_val)
61	201204	
62	201204	D $pos            S              5U 0
63	201204	D $po2            S              5U 0
64	170925	
65	200923	D ResponseString  S           2000A
66	200923	D request         S           2000A
67	200924	D refeww          S             30A
68	200924	D requww          S           4000A
69	200922	D I               S             10I 0
70	201007	D J               S             10I 0
71	170904	
72	170904	D row             ds                   qualified
73	170904	D inv                            5a
74	170904	D date                           8s 0
75	170925	
76	171009	D line            S        5000000A
77	170925	D fd              S             10I 0
78	170925	D len             S             10I 0
79	90730	
80	170904	D dateUSA         s             10a    varying
81	170904	
82	170904	D success         s              1n
83	170904	D errMsg          s            500a    varying
84	200923	
85	200923	D SYSTE£         SDS
86	200923	D NPGM££                        10
87	200923	*
88	200922	D DSLDZI        EUDS
89	200922	D DSLDZS        E DS                  INZ
90	200922	
91	200922	C     *DTAARA       DEFINE    *LDA          DSLDZI
92	200922	C     *DTAARA       DEFINE    SPIDTA        DSLDZS
93	200922	C                   IN        *DTAARA
94	171009	C*
95	200922	C     *ENTRY        PLIST
96	221108	C                   PARM                    cret$$            1
97	221003	
98	221003	C     Ktok          KLIST
99	221003	C                   KFLD                    CIDIZE
100	221003	C                   KFLD                    NENTys
101	221003	C                   KFLD                    Ncliys
102	171017	C*
103	201203	C*--------------------------------------------------------------*
104	171009	C*   RECEPTION DU PARAMETRE EN ENTREE DU PROGRAMME              *
105	171009	C*--------------------------------------------------------------*
106	200923	
107	200923	c                   z-add     1             siecww            1 0
108	200923	c                   z-add     udate         dateww            6 0
109	221004	
110	221004	c                   move      *blanks       fdebww           80
111	221108	c     '/tmp/m3stk'  cat       utilze:0      fdebww
112	221004	c                   cat       '.txt':0      fdebww
113	221004	c                   callp     http_debug(*ON: fdebww)
114	200923	c*
115	200923	c     CIDIZE        CHAIN     IFPINL01                           50
116	200923	C     *IN50         CABEQ     '1'           FINPGM
117	200923	c*
118	221108	C     cidize        setll     IFIM3L03
119	221108	c     lecim3        tag
120	221108	c     cidize        reade     ifim3l03                               50
121	221103	c     *in50         cabeq     '1'           finpgm
122	200923	c*
123	221103	c*--> base M3 desactivée
124	221108	c     csupys        cabeq     '9'           lecim3
125	221003	c*
126	221108	c*--> forcage récupération token
127	221108	c                   exsr      token
128	221108	c*
129	221108	C                   move      'STK '        ndomww            4
130	221108	c                   exsr      trtstk
131	221108	c*
132	221108	c                   goto      lecim3
133	170925	
134	170925	c     finpgm        tag
135	90730	c                   eval      *inlr = *on
136	221011	*
137	221011	*----------------------------------------------------------------
138	221108	*     récupération position de stock
139	221011	*----------------------------------------------------------------
140	221011	*
141	221108	C     TRTSTK        BEGSR
142	221011	c                   move      *blanks       repapi           80
143	221108	c                   eval      repapi = '/tmp/m3stk'
144	221108	c                                 + %trimr(NENTYS)
145	221011	c                                 + '.txt'
146	221011	c*
147	221107	c                   move      *blanks       url0
148	221108	c                   move      *blanks       quanww           11
149	221011	c*
150	221011	c                   eval      url0 = %trimr(aurlys)
151	221108	c                                 + 'MMS060MI/LstBalID'
152	221108	c                                 + '?WHLO='
153	221103	c                                 + %trimr(ndepys)
154	221011	c                                 + '&maxrecs=0'
155	221108	c*
156	221108	c                   move      *blanks       cret$$
157	221011	c*
158	221011	/free
159	221011	http_use_cookies(*OFF);
160	221011	http_setAuth(HTTP_AUTH_NONE: ' ': ' ');
161	221011	http_xproc(HTTP_POINT_ADDL_HEADER: *null);
162	221011	/end-free
163	221011	*
164	221011	c*
165	221011	c                   eval      HEA = 'Authorization: Bearer '
166	221011	c                                 + %trimr(TOKE)
167	221011	c                                 + x'0d25'
168	221011	*
169	221011	c                   callp     http_xproc( HTTP_POINT_ADDL_HEADER
170	221011	c                                       : %paddr(my_procedure) )
171	221011	*
172	221011	*
173	221011	c                   eval      rc = http_url_get( %trimr(URL0): REPAPI)
174	221011	*
175	221011	c                   if        rc <> 1
176	221108	c                   move      'E'           cret$$
177	221011	c                   callp     http_comp(http_error)
178	221108	c                   goto      finstk
179	221011	c                   endif
180	221108	c*
181	221108	c                   movel     nentys        nentsv            3
182	221108	c                   movel     ncliys        nclisv           15
183	221108	c                   clear                   ifesgf00
184	221108	c                   movel     cidize        cidiys
185	221108	c                   movel     nentsv        nentys
186	221108	c                   z-add     1             nsitys
187	221108	c                   z-add     1             ssitys
188	221108	c                   z-add     dateww        dsitys
189	221108	c                   time                    hsitys
190	221108	c                   movel     'AT'          cetays
191	221108	c*
192	221108	c                   clear                   ifdsgf00
193	221108	c                   movel     cidize        cidiyt
194	221108	c                   movel     nentsv        nentyt
195	221108	c                   movel     nclisv        ncliyt
196	221108	c                   z-add     1             nsityt
197	221011	c*
198	221011	/free
199	221011	
200	221011	exsr JSON_load;
201	221011	ResuList = yajl_object_find( docNode : 'results' );
202	221011	
203	221011	i = 0;
204	221011	dow YAJL_ARRAY_LOOP(ResuList:i:node );
205	221107	
206	221107	RecoList = yajl_object_find( node : 'records' );
207	221107	
208	221107	j = 0;
209	221107	
210	221107	dow YAJL_ARRAY_LOOP(RecoList:j:node1);
211	221107	
212	221108	eval nartyt=*blanks;
213	221108	val = YAJL_object_find(node1:'ITNO');
214	221108	nartyt = yajl_get_string(val);
215	221108	
216	221108	eval nlotyt=*blanks;
217	221108	val = YAJL_object_find(node1:'BANO');
218	221108	nlotyt = yajl_get_string(val);
219	221108	
220	221108	eval cuniyt=*blanks;
221	221108	val = YAJL_object_find(node1:'UNMS');
222	221108	cuniyt = yajl_get_string(val);
223	221107	
224	221108	eval quanww=*blanks;
225	221108	quanyt=0;
226	221108	val = YAJL_object_find(node1:'STQT');
227	221108	quanww = yajl_get_string(val);
228	221107	monitor;
229	221108	quanyt = %dec(quanww:11:3);
230	221107	on-error;
231	221108	quanyt=0;
232	221107	endmon;
233	221107	
234	221107	/end-free
235	221107	c*
236	221108	c                   write     ifdsgf00
237	221107	c*
238	221107	/free
239	221012	enddo;
240	221012	enddo;
241	221012	/end-free
242	221107	c*
243	221108	c                   write     ifesgf00
244	221011	*
245	221108	C     finstk        ENDSR
246	221108	*
247	221108	*----------------------------------------------------------------
248	221108	*     Traitement de récupération d'un TOKEN
249	221108	*----------------------------------------------------------------
250	221108	*
251	221108	C     TOKEN         BEGSR
252	221108	
253	221108	c                   move      *blanks       reptok           80
254	221108	c                   eval      reptok = '/tmp/torm3'
255	221108	c                                 + %trimr(NENTYS)
256	221108	c                                 + '.txt'
257	221108	
258	221108	c                   move      *blanks       demtok
259	221108	c                   eval      demtok = 'grant_type=password&username='
260	221108	c                                 + %trimr(USERYS)
261	221108	c                                 + '&password='
262	221108	c                                 + %trimr(PWRDYS)
263	221108	c                                 + '&client_id='
264	221108	c                                 + %trimr(CLIDYS)
265	221108	c                                 + '&client_secret='
266	221108	c                                 + %trimr(CLSEYS)
267	221108	c*
268	221108	/free
269	221108	http_use_cookies(*OFF);
270	221108	http_setAuth(HTTP_AUTH_NONE: ' ': ' ');
271	221108	http_xproc(HTTP_POINT_ADDL_HEADER: *null);
272	221108	/end-free
273	221108	*
274	221108	c                   eval      ContentType = 'application/'
275	221108	c                                         + 'x-www-form-urlencoded'
276	221108	*
277	221108	c                   eval      Timeout = 10
278	221108	*
279	221108	c                   eval      rc = http_url_post( TURLYS
280	221108	c                                               : %addr( demtok : *data)
281	221108	c                                               : %len( demtok )
282	221108	c                                               : %trimr(REPTOK)
283	221108	c                                               : Timeout
284	221108	c                                               : HTTP_USERAGENT
285	221108	c                                               : ContentType)
286	221108	*
287	221108	c                   if        rc <> 1
288	221108	c                   callp     http_comp(http_error)
289	221108	c                   goto      finpgm
290	221108	c                   endif
291	221108	c*
292	221108	c                   time                    htokw1            6 0
293	221108	c     htokw1        div       10000         htokw2            2 0
294	221108	c                   z-add     htokw2        htokww            6 0
295	221108	*
296	221108	c     ktok          chain     imtokp00                           51
297	221108	*
298	221108	c     *in51         ifeq      '1'
299	221108	c                   movel     cidize        cidi
300	221108	c                   movel     nentys        nent
301	221108	c                   movel     ncliys        ncli
302	221108	c                   end
303	221108	c*
304	221108	c                   z-add     dateww        date
305	221108	c                   z-add     htokww        heur
306	221108	/free
307	221108	docNode = yajl_stmf_load_tree( %trimr(REPTOK) : errMsg );
308	221108	val = YAJL_object_find(docNode: 'access_token');
309	221108	TOKE  = yajl_get_string(val);
310	221108	/end-free
311	221108	c*
312	221108	*
313	221108	c   51              write     imtokf00
314	221108	c  N51              update    imtokf00
315	221108	*
316	221108	C     FINTOK        ENDSR
317	221010	
318	221010	/free
319	221010	
320	221010	begsr JSON_load;
321	221010	docNode = yajl_stmf_load_tree( %trimr(REPAPI) : errMsg );
322	221010	endsr;
323	221010	
324	221010	/end-free
325	221004	*++++++++++++++++++++++++++++++++++++++++++++++++++++++++
326	221004	*
327	221004	*++++++++++++++++++++++++++++++++++++++++++++++++++++++++
328	221004	P my_procedure    B
329	221004	D                 PI
330	221004	D   header                   32767a   varying
331	221004	c                   eval      header = HEA
332	221004	P                 E
