Telefon_UNIFY.p 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
  2. &ANALYZE-RESUME
  3. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
  4. /*------------------------------------------------------------------------
  5. File :
  6. Purpose :
  7. Syntax :
  8. Description :
  9. Author(s) :
  10. Created :
  11. Notes :
  12. ----------------------------------------------------------------------*/
  13. /* This .W file was created with the Progress AppBuilder. */
  14. /*----------------------------------------------------------------------*/
  15. /* *************************** Definitions ************************** */
  16. USING System.*.
  17. USING OpenEdge.Net.URI.
  18. { incl/properties.i }
  19. DEFINE INPUT PARAMETER ipIntern AS INT NO-UNDO.
  20. DEFINE INPUT PARAMETER ipPassword AS CHAR NO-UNDO.
  21. DEFINE INPUT PARAMETER ipTelNummer AS CHAR NO-UNDO.
  22. DEFINE OUTPUT PARAMETER opMeldung AS CHAR NO-UNDO.
  23. /* DEFINE VARIABLE ipIntern AS INT NO-UNDO INIT 12. */
  24. /* DEFINE VARIABLE ipPassword AS CHAR NO-UNDO INIT '12x8=T?m'. */
  25. /* DEFINE VARIABLE ipTelNummer AS CHAR NO-UNDO INIT '0+41792610510'. */
  26. DEFINE VARIABLE oURI AS URI NO-UNDO.
  27. DEFINE VARIABLE HttpClient AS CLASS System.Net.WebClient.
  28. DEFINE VARIABLE webResponse AS LONGCHAR NO-UNDO.
  29. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  30. DEFINE VARIABLE lok AS LOG NO-UNDO.
  31. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO.
  32. DEFINE VARIABLE cipNummer AS CHARACTER NO-UNDO.
  33. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO.
  34. DEFINE VARIABLE cSession AS CHARACTER NO-UNDO.
  35. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO.
  36. DEFINE VARIABLE cNumber AS CHARACTER NO-UNDO.
  37. FIX-CODEPAGE (webResponse) = "UTF-8".
  38. DEF VAR cString AS CHAR NO-UNDO.
  39. DEF VAR cName AS CHAR NO-UNDO.
  40. DEF TEMP-TABLE tElemente
  41. FIELD iZeile AS INT
  42. FIELD cName AS CHAR
  43. FIELD cValue AS CHAR
  44. FIELD cAttribute AS CHAR
  45. INDEX tElemente-k1 IS PRIMARY
  46. iZeile.
  47. .
  48. /* _UIB-CODE-BLOCK-END */
  49. &ANALYZE-RESUME
  50. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  51. /* ******************** Preprocessor Definitions ******************** */
  52. &Scoped-define PROCEDURE-TYPE Procedure
  53. &Scoped-define DB-AWARE no
  54. /* _UIB-PREPROCESSOR-BLOCK-END */
  55. &ANALYZE-RESUME
  56. /* ************************ Function Prototypes ********************** */
  57. &IF DEFINED(EXCLUDE-createElemente) = 0 &THEN
  58. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createElemente Procedure
  59. FUNCTION createElemente RETURNS LOGICAL
  60. ( iphXmlNode AS HANDLE ) FORWARD.
  61. /* _UIB-CODE-BLOCK-END */
  62. &ANALYZE-RESUME
  63. &ENDIF
  64. &IF DEFINED(EXCLUDE-getAttributeValue) = 0 &THEN
  65. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getAttributeValue Procedure
  66. FUNCTION getAttributeValue RETURNS CHARACTER
  67. ( ipcListe AS CHAR, ipcAttrib AS CHAR ) FORWARD.
  68. /* _UIB-CODE-BLOCK-END */
  69. &ANALYZE-RESUME
  70. &ENDIF
  71. /* *********************** Procedure Settings ************************ */
  72. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  73. /* Settings for THIS-PROCEDURE
  74. Type: Procedure
  75. Allow:
  76. Frames: 0
  77. Add Fields to: Neither
  78. Other Settings: CODE-ONLY COMPILE
  79. */
  80. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  81. /* ************************* Create Window ************************** */
  82. &ANALYZE-SUSPEND _CREATE-WINDOW
  83. /* DESIGN Window definition (used by the UIB)
  84. CREATE WINDOW Procedure ASSIGN
  85. HEIGHT = 15
  86. WIDTH = 60.
  87. /* END WINDOW DEFINITION */
  88. */
  89. &ANALYZE-RESUME
  90. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  91. /* *************************** Main Block *************************** */
  92. DEF VAR cErlaubt AS CHAR NO-UNDO
  93. INIT '+0123456789'.
  94. DEF VAR cZeichen AS CHAR NO-UNDO.
  95. DEF VAR cTemp AS CHAR NO-UNDO.
  96. cTemp = REPLACE(REPLACE(STRING(TODAY,'99.99.9999') + STRING(TIME,'HH:MM:SS'), '.', ''), ':', '').
  97. cDateiName = SUBSTITUTE('&1&2&3Entity.xml', SESSION:TEMP-DIRECTORY, ipIntern, cTemp).
  98. iZeile = 0.
  99. opMeldung = ''.
  100. cipNummer = '0'.
  101. DO ii = 1 TO LENGTH(ipTelNummer):
  102. cZeichen = SUBSTRING(ipTelNummer, ii, 01).
  103. IF INDEX(cErlaubt, cZeichen) = 0 THEN NEXT.
  104. cipNummer = cipNummer + cZeichen.
  105. END.
  106. ipTelNummer = cipNummer.
  107. RUN LOGON (OUTPUT cSession , OUTPUT opMeldung) NO-ERROR.
  108. IF opMeldung <> '' THEN RETURN.
  109. RUN GETDEVICESTATE ( OUTPUT opMeldung ).
  110. IF opMeldung <> '' THEN DO:
  111. /* RUN CLEAR_CONNECTION. */
  112. RETURN.
  113. END.
  114. RUN CALL_NUMBER (OUTPUT cNumber, OUTPUT opMeldung) NO-ERROR.
  115. IF cNumber = '' THEN RETURN.
  116. IF opMeldung <> '' THEN RETURN.
  117. /* PAUSE 1 NO-MESSAGE. */
  118. /* RUN GETDEVICESTATE ( OUTPUT opMeldung ). */
  119. /* _UIB-CODE-BLOCK-END */
  120. &ANALYZE-RESUME
  121. /* ********************** Internal Procedures *********************** */
  122. &IF DEFINED(EXCLUDE-CALL_NUMBER) = 0 &THEN
  123. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CALL_NUMBER Procedure
  124. PROCEDURE CALL_NUMBER :
  125. /*------------------------------------------------------------------------------
  126. Purpose:
  127. Parameters: <none>
  128. Notes:
  129. ------------------------------------------------------------------------------*/
  130. DEF OUTPUT PARAMETER opNumber AS CHAR NO-UNDO.
  131. DEF OUTPUT PARAMETER opMessage AS CHAR NO-UNDO.
  132. DEFINE VARIABLE hXmlDoc AS HANDLE NO-UNDO.
  133. DEFINE VARIABLE hXmlNode AS HANDLE NO-UNDO.
  134. oURI = OpenEdge.Net.URI:Parse(cTelefonIP).
  135. oURI:Port = iTelefonPort.
  136. oURI:Path = cTelefonPfad.
  137. oURI:AddQuery("cmd" , "MakeCall").
  138. oURI:AddQuery("callingDevice" , STRING(ipIntern) ).
  139. oURI:AddQuery("calledDirectoryNumber", ipTelNummer ).
  140. oURI:AddQuery("gsSession" , cSession).
  141. System.Net.ServicePointManager:CertificatePolicy = NEW AllowCertificatePolicy().
  142. HttpClient = NEW System.Net.WebClient().
  143. cString = oURI:ToString().
  144. webResponse = HttpClient:DownloadString(oURI:ToString()).
  145. CREATE X-DOCUMENT hXmlDoc .
  146. CREATE X-NODEREF hXmlNode.
  147. hXmlDoc:LOAD("LONGCHAR",webResponse,FALSE).
  148. hXmlDoc:SAVE('file', cDateiName).
  149. EMPTY TEMP-TABLE tElemente.
  150. iZeile = 0.
  151. hXmlDoc:GET-DOCUMENT-ELEMENT(hXmlNode).
  152. IF hXmlNode:SUBTYPE = "element" THEN DO:
  153. DYNAMIC-FUNCTION('createElemente':U, hXmlNode ) NO-ERROR.
  154. END.
  155. RUN GetChildren ( hXmlNode ).
  156. FOR EACH tElemente:
  157. CASE tElemente.cName:
  158. WHEN 'CallID' THEN opNumber = tElemente.cValue.
  159. WHEN 'ERROR' THEN opMessage = tElemente.cValue.
  160. END CASE.
  161. END.
  162. /* OUTPUT TO 'C:\Temp\CallNumber.csv'. */
  163. /* FOR EACH tElemente: */
  164. /* EXPORT DELIMITER ';' tElemente. */
  165. /* END. */
  166. /* OUTPUT CLOSE. */
  167. FINALLY:
  168. IF VALID-HANDLE (hXmlDoc) THEN DELETE OBJECT hXmlDoc.
  169. IF VALID-HANDLE (hXmlNode) THEN DELETE OBJECT hXmlNode .
  170. IF VALID-OBJECT (HttpClient) THEN
  171. DO:
  172. HttpClient:Dispose().
  173. DELETE OBJECT HttpClient.
  174. END.
  175. END FINALLY.
  176. END PROCEDURE.
  177. /* _UIB-CODE-BLOCK-END */
  178. &ANALYZE-RESUME
  179. &ENDIF
  180. &IF DEFINED(EXCLUDE-CLEAR_CONNECTION) = 0 &THEN
  181. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CLEAR_CONNECTION Procedure
  182. PROCEDURE CLEAR_CONNECTION :
  183. /*------------------------------------------------------------------------------
  184. Purpose:
  185. Parameters: <none>
  186. Notes:
  187. ------------------------------------------------------------------------------*/
  188. DEFINE VARIABLE hXmlDoc AS HANDLE NO-UNDO.
  189. DEFINE VARIABLE hXmlNode AS HANDLE NO-UNDO.
  190. oURI = OpenEdge.Net.URI:Parse(cTelefonIP).
  191. oURI:Port = iTelefonPort.
  192. oURI:Path = cTelefonPfad.
  193. oURI:AddQuery("cmd" , "ClearConnection").
  194. oURI:AddQuery("deviceId" , cNumber ).
  195. oURI:AddQuery("gsSession", cSession).
  196. System.Net.ServicePointManager:CertificatePolicy = NEW AllowCertificatePolicy().
  197. HttpClient = NEW System.Net.WebClient().
  198. cString = oURI:ToString().
  199. webResponse = HttpClient:DownloadString(oURI:ToString()).
  200. CREATE X-DOCUMENT hXmlDoc .
  201. CREATE X-NODEREF hXmlNode.
  202. hXmlDoc:LOAD("LONGCHAR",webResponse,FALSE).
  203. hXmlDoc:SAVE('file', cDateiName).
  204. EMPTY TEMP-TABLE tElemente.
  205. iZeile = 0.
  206. hXmlDoc:GET-DOCUMENT-ELEMENT(hXmlNode).
  207. IF hXmlNode:SUBTYPE = "element" THEN DO:
  208. DYNAMIC-FUNCTION('createElemente':U, hXmlNode ) NO-ERROR.
  209. END.
  210. RUN GetChildren ( hXmlNode ).
  211. /* OUTPUT TO 'C:\Temp\ClearConnection.csv'. */
  212. /* FOR EACH tElemente: */
  213. /* EXPORT DELIMITER ';' tElemente. */
  214. /* END. */
  215. /* OUTPUT CLOSE. */
  216. FINALLY:
  217. IF VALID-HANDLE (hXmlDoc) THEN DELETE OBJECT hXmlDoc.
  218. IF VALID-HANDLE (hXmlNode) THEN DELETE OBJECT hXmlNode .
  219. IF VALID-OBJECT (HttpClient) THEN
  220. DO:
  221. HttpClient:Dispose().
  222. DELETE OBJECT HttpClient.
  223. END.
  224. END FINALLY.
  225. END PROCEDURE.
  226. /* _UIB-CODE-BLOCK-END */
  227. &ANALYZE-RESUME
  228. &ENDIF
  229. &IF DEFINED(EXCLUDE-GetChildren) = 0 &THEN
  230. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GetChildren Procedure
  231. PROCEDURE GetChildren :
  232. /*------------------------------------------------------------------------------
  233. Purpose:
  234. Parameters: <none>
  235. Notes:
  236. ------------------------------------------------------------------------------*/
  237. DEFINE INPUT PARAMETER hParent AS HANDLE NO-UNDO.
  238. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  239. DEFINE VARIABLE hXmlNode AS HANDLE NO-UNDO.
  240. CREATE X-NODEREF hXmlNode.
  241. REPEAT ii = 1 TO hParent:NUM-CHILDREN:
  242. lok = hParent:GET-CHILD(hXmlNode,ii) NO-ERROR.
  243. IF NOT lok THEN LEAVE.
  244. IF hXmlNode:SUBTYPE <> "element" THEN NEXT.
  245. DYNAMIC-FUNCTION('createElemente':U, hXmlNode ) NO-ERROR.
  246. RUN GetChildren ( hXmlNode ).
  247. END.
  248. DELETE OBJECT hXmlNode.
  249. END PROCEDURE.
  250. /* _UIB-CODE-BLOCK-END */
  251. &ANALYZE-RESUME
  252. &ENDIF
  253. &IF DEFINED(EXCLUDE-GETDEVICESTATE) = 0 &THEN
  254. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GETDEVICESTATE Procedure
  255. PROCEDURE GETDEVICESTATE :
  256. /*------------------------------------------------------------------------------
  257. Purpose:
  258. Parameters: <none>
  259. Notes:
  260. ------------------------------------------------------------------------------*/
  261. DEFINE OUTPUT PARAMETER opMessage AS CHARACTER NO-UNDO.
  262. DEFINE VARIABLE hXmlDoc AS HANDLE NO-UNDO.
  263. DEFINE VARIABLE hXmlNode AS HANDLE NO-UNDO.
  264. DEFINE VARIABLE lFrei AS LOGICAL NO-UNDO.
  265. DEFINE VARIABLE cParam AS CHARACTER EXTENT 10 NO-UNDO.
  266. oURI = OpenEdge.Net.URI:Parse(cTelefonIP).
  267. oURI:Port = iTelefonPort.
  268. oURI:Path = cTelefonPfad.
  269. oURI:AddQuery("cmd" , "GetDeviceState").
  270. oURI:AddQuery("device" , STRING(ipIntern) ).
  271. oURI:AddQuery("gsSession" , cSession).
  272. System.Net.ServicePointManager:CertificatePolicy = NEW AllowCertificatePolicy().
  273. HttpClient = NEW System.Net.WebClient().
  274. cString = oURI:ToString().
  275. webResponse = HttpClient:DownloadString(oURI:ToString()).
  276. CREATE X-DOCUMENT hXmlDoc .
  277. CREATE X-NODEREF hXmlNode.
  278. hXmlDoc:LOAD("LONGCHAR",webResponse,FALSE).
  279. hXmlDoc:SAVE('file', cDateiName).
  280. EMPTY TEMP-TABLE tElemente.
  281. iZeile = 0.
  282. hXmlDoc:GET-DOCUMENT-ELEMENT(hXmlNode).
  283. IF hXmlNode:SUBTYPE = "element" THEN DO:
  284. DYNAMIC-FUNCTION('createElemente':U, hXmlNode ) NO-ERROR.
  285. END.
  286. RUN GetChildren ( hXmlNode ).
  287. lFrei = TRUE.
  288. cParam = ''.
  289. FIND FIRST tElemente NO-LOCK
  290. WHERE tElemente.cName = 'Calling' NO-ERROR.
  291. DO WHILE TRUE:
  292. IF NOT AVAILABLE tElemente THEN LEAVE.
  293. lFrei = FALSE.
  294. IF tElemente.cValue = STRING(ipIntern) THEN DO:
  295. cParam[01] = DYNAMIC-FUNCTION('getAttributeValue':U, tElemente.cAttribute, 'Name') NO-ERROR.
  296. FIND FIRST tElemente NO-LOCK
  297. WHERE tElemente.cName = 'Called' NO-ERROR.
  298. IF AVAILABLE tElemente THEN cParam[02] = tElemente.cValue.
  299. LEAVE.
  300. END.
  301. cParam[02] = tElemente.cValue.
  302. FIND FIRST tElemente NO-LOCK
  303. WHERE tElemente.cName = 'Called' NO-ERROR.
  304. IF AVAILABLE tElemente THEN cParam[01] = DYNAMIC-FUNCTION('getAttributeValue':U, tElemente.cAttribute, 'Name') NO-ERROR.
  305. LEAVE.
  306. END.
  307. IF NOT lFrei THEN opMessage = SUBSTITUTE('Leitung besetzt durch &1 mit Nummer &2', cParam[01], cParam[02]).
  308. /* OUTPUT TO 'C:\Temp\GetDeviceStatus.csv'. */
  309. /* FOR EACH tElemente: */
  310. /* EXPORT DELIMITER ';' tElemente. */
  311. /* END. */
  312. /* OUTPUT CLOSE. */
  313. FINALLY:
  314. IF VALID-HANDLE (hXmlDoc) THEN DELETE OBJECT hXmlDoc.
  315. IF VALID-HANDLE (hXmlNode) THEN DELETE OBJECT hXmlNode .
  316. IF VALID-OBJECT (HttpClient) THEN
  317. DO:
  318. HttpClient:Dispose().
  319. DELETE OBJECT HttpClient.
  320. END.
  321. END FINALLY.
  322. END PROCEDURE.
  323. /* _UIB-CODE-BLOCK-END */
  324. &ANALYZE-RESUME
  325. &ENDIF
  326. &IF DEFINED(EXCLUDE-LOGON) = 0 &THEN
  327. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LOGON Procedure
  328. PROCEDURE LOGON :
  329. /*------------------------------------------------------------------------------
  330. Purpose:
  331. Parameters: <none>
  332. Notes:
  333. ------------------------------------------------------------------------------*/
  334. DEF OUTPUT PARAMETER opSession AS CHAR NO-UNDO.
  335. DEF OUTPUT PARAMETER opMessage AS CHAR NO-UNDO.
  336. DEFINE VARIABLE hXmlDoc AS HANDLE NO-UNDO.
  337. DEFINE VARIABLE hXmlNode AS HANDLE NO-UNDO.
  338. oURI = OpenEdge.Net.URI:Parse(cTelefonIP).
  339. oURI:Port = iTelefonPort.
  340. oURI:Path = cTelefonPfad.
  341. oURI:AddQuery("cmd" , "Login").
  342. oURI:AddQuery("gsUser", STRING(ipIntern) ).
  343. oURI:AddQuery("gsPass", ipPassword).
  344. System.Net.ServicePointManager:CertificatePolicy = NEW AllowCertificatePolicy().
  345. HttpClient = NEW System.Net.WebClient().
  346. cString = oURI:ToString().
  347. webResponse = HttpClient:DownloadString(oURI:ToString()).
  348. CREATE X-DOCUMENT hXmlDoc .
  349. CREATE X-NODEREF hXmlNode.
  350. hXmlDoc:LOAD("LONGCHAR",webResponse,FALSE).
  351. hXmlDoc:SAVE('file', cDateiName).
  352. EMPTY TEMP-TABLE tElemente.
  353. iZeile = 0.
  354. hXmlDoc:GET-DOCUMENT-ELEMENT(hXmlNode).
  355. IF hXmlNode:SUBTYPE = "element" THEN DO:
  356. DYNAMIC-FUNCTION('createElemente':U, hXmlNode ) NO-ERROR.
  357. END.
  358. RUN GetChildren ( hXmlNode ).
  359. FOR EACH tElemente:
  360. CASE tElemente.cName:
  361. WHEN 'ID' THEN opSession = tElemente.cValue.
  362. WHEN 'ERROR' THEN opMessage = tElemente.cValue.
  363. WHEN 'REASON' THEN opMessage = tElemente.cValue.
  364. END CASE.
  365. END.
  366. /* OUTPUT TO 'C:\Temp\Logon.csv'. */
  367. /* FOR EACH tElemente: */
  368. /* EXPORT DELIMITER ';' tElemente. */
  369. /* END. */
  370. /* OUTPUT CLOSE. */
  371. FINALLY:
  372. IF VALID-HANDLE (hXmlDoc) THEN DELETE OBJECT hXmlDoc.
  373. IF VALID-HANDLE (hXmlNode) THEN DELETE OBJECT hXmlNode .
  374. IF VALID-OBJECT (HttpClient) THEN
  375. DO:
  376. HttpClient:Dispose().
  377. DELETE OBJECT HttpClient.
  378. END.
  379. END FINALLY.
  380. END PROCEDURE.
  381. /* _UIB-CODE-BLOCK-END */
  382. &ANALYZE-RESUME
  383. &ENDIF
  384. /* ************************ Function Implementations ***************** */
  385. &IF DEFINED(EXCLUDE-createElemente) = 0 &THEN
  386. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createElemente Procedure
  387. FUNCTION createElemente RETURNS LOGICAL
  388. ( iphXmlNode AS HANDLE ) :
  389. /*------------------------------------------------------------------------------
  390. Purpose:
  391. Notes:
  392. ------------------------------------------------------------------------------*/
  393. DEFINE VARIABLE hXmlAttr AS HANDLE NO-UNDO.
  394. DEFINE VARIABLE hXmlChild AS HANDLE NO-UNDO.
  395. DEFINE VARIABLE cNames AS CHAR NO-UNDO.
  396. DEFINE VARIABLE cAttribute AS CHAR NO-UNDO.
  397. DEFINE VARIABLE i1 AS INT NO-UNDO.
  398. DEFINE VARIABLE cValue AS CHAR NO-UNDO.
  399. iZeile = iZeile + 1.
  400. CREATE tElemente.
  401. ASSIGN tElemente.iZeile = iZeile
  402. tElemente.cName = iphXmlNode:NAME
  403. tELemente.cValue = iphXmlNode:NODE-VALUE.
  404. IF iphXmlNode:NUM-CHILDREN > 0 THEN DO:
  405. cValue = ''.
  406. CREATE X-NODEREF hXmlAttr.
  407. iphXmlNode:GET-CHILD(hXmlAttr, 1).
  408. IF hXmlAttr:NUM-CHILDREN = 0 THEN DO:
  409. cValue = hXmlAttr:NODE-VALUE.
  410. cValue = REPLACE(REPLACE(cValue, CHR(13), ''), CHR(10), '').
  411. ASSIGN tElemente.cValue = cValue.
  412. /* MESSAGE 'Null ' iphXmlNode:NAME '/' hXmlAttr:NAME '->' cValue '-' hXmlAttr:SUBTYPE '-' hXmlAttr:ATTRIBUTE-NAMES view-as alert-box. */
  413. END.
  414. DELETE OBJECT hXmlAttr.
  415. END.
  416. cNames = iphXmlNode:ATTRIBUTE-NAMES.
  417. IF cNames <> '' THEN DO:
  418. DO i1 = 1 TO NUM-ENTRIES(cNames).
  419. cValue = ''.
  420. cAttribute = ENTRY(i1, cNames, ',').
  421. cValue = iphXmlNode:GET-ATTRIBUTE(cAttribute).
  422. cValue = REPLACE(REPLACE(cValue, CHR(13), ''), CHR(10), '').
  423. tElemente.cAttribute = tElemente.cAttribute
  424. + (IF tElemente.cAttribute = '' THEN '' ELSE CHR(01))
  425. + cAttribute
  426. + CHR(02)
  427. + cValue.
  428. END.
  429. END.
  430. /* message 'createElemente ' tElemente.cName '-' tElemente.cValue '-' tElemente.cattribute view-as alert-box. */
  431. RETURN TRUE.
  432. END FUNCTION.
  433. /* _UIB-CODE-BLOCK-END */
  434. &ANALYZE-RESUME
  435. &ENDIF
  436. &IF DEFINED(EXCLUDE-getAttributeValue) = 0 &THEN
  437. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getAttributeValue Procedure
  438. FUNCTION getAttributeValue RETURNS CHARACTER
  439. ( ipcListe AS CHAR, ipcAttrib AS CHAR ) :
  440. /*------------------------------------------------------------------------------
  441. Purpose:
  442. Notes:
  443. ------------------------------------------------------------------------------*/
  444. DEFINE VARIABLE cAttribute AS CHARACTER NO-UNDO.
  445. DEFINE VARIABLE cName AS CHARACTER NO-UNDO.
  446. DEFINE VARIABLE cValue AS CHARACTER NO-UNDO.
  447. DEFINE VARIABLE i1 AS INT NO-UNDO.
  448. DO i1 = 1 TO NUM-ENTRIES(ipcListe, CHR(01)):
  449. cAttribute = ENTRY(i1, ipcListe, CHR(01)).
  450. cName = ENTRY(1, cAttribute, CHR(02)).
  451. cValue = ENTRY(2, cAttribute, CHR(02)).
  452. CASE cName:
  453. WHEN ipcAttrib THEN LEAVE.
  454. END CASE.
  455. END.
  456. RETURN cValue.
  457. END FUNCTION.
  458. /* _UIB-CODE-BLOCK-END */
  459. &ANALYZE-RESUME
  460. &ENDIF