call "PC_PRINTER_ENUM_NEXT" using by value enum-handle by reference printer-name
01 printer-name typedef. 03 cblte-pn-name-len pic x(2) comp-5. 03 cblte-pn-name pic x(n).
01 enum-handle pointer. 01 printer-name. 03 p-name-len pic x(2) comp-5. 03 p-name pic x(255). 01 enum-flags pic x(4) comp-5 value 0. 01 enum-printers-found pic x(4) comp-5 value 0. 01 p-counter binary-long. procedure division. move 1 to p-counter set p-name-len to length of p-name call "PC_PRINTER_ENUM_START" using by reference enum-handle by value enum-flags by reference enum-printers-found end-call if return-code not equal 0 display "RC: Enum-Start : " return-code end-if display "Printers found : " enum-printers-found perform until return-code not equal 0 set p-name-len to length of p-name call "PC_PRINTER_ENUM_NEXT" using by value enum-handle by reference printer-name end-call if return-code not equal 0 display "RC: Enum-Next : " return-code else display p-counter " " p-name(1:p-name-len) " size " p-name-len end-if add 1 to p-counter end-perform call "PC_PRINTER_ENUM_CLOSE" using by reference enum-handle end-call
If cblte-pn-name-len is zero on entry, then cblte-pn-name-len is updated with the size required for cblte-pn-name (not the size of the group) and the enumeration remains on the current entry.