Skip to main content

[archive] Obtaining IP Address

  • September 1, 2007
  • 49 replies
  • 1 view

Show first post

49 replies

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
In this scenario it is a Windows server.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
As I dig further, it appears as though the bougs IP address has to do with a VPN. Perhaps that will mean something to someone who can help?

Thanks in advance...

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
As I dig further, it appears as though the bougs IP address has to do with a VPN. Perhaps that will mean something to someone who can help?

Thanks in advance...

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
I found this article that seems to describe the problem I'm having, but I'm experiencing it on Windows XP.

http://support.microsoft.com/kb/822713

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
I found this article that seems to describe the problem I'm having, but I'm experiencing it on Windows XP.

http://support.microsoft.com/kb/822713

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Have you considered a call to c$system with "ping servername" and redirecting to a file which you can then parse for the ip address.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Have you considered a call to c$system with "ping servername" and redirecting to a file which you can then parse for the ip address.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Have you considered a call to c$system with "ping servername" and redirecting to a file which you can then parse for the ip address.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Dilbert,

Thanks for the suggestions, however, I've decided to use this API solution (at least for now).

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Dilbert,

Thanks for the suggestions, however, I've decided to use this API solution (at least for now).

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Ok... I found a solution written in VB, but I'm having a hard time coding it in COBOL. I'm hoping someone can help... Calling all API experts!

I've attached the VB code here and my attempt at COBOL code. I'm getting a MAV and I'm sure I'm missing something obvious. Thanks in advance for any help.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Ok... I found a solution written in VB, but I'm having a hard time coding it in COBOL. I'm hoping someone can help... Calling all API experts!

I've attached the VB code here and my attempt at COBOL code. I'm getting a MAV and I'm sure I'm missing something obvious. Thanks in advance for any help.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Before I dive into your cobol code. It appears to me that the vb program does just enumerate adapters, like what the original example I gave you does. Can you tell me if the original example provided by me is crashing as well? If not, what is the difference (assuming you have used this as a template)?

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Before I dive into your cobol code. It appears to me that the vb program does just enumerate adapters, like what the original example I gave you does. Can you tell me if the original example provided by me is crashing as well? If not, what is the difference (assuming you have used this as a template)?

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Before I dive into your cobol code. It appears to me that the vb program does just enumerate adapters, like what the original example I gave you does. Can you tell me if the original example provided by me is crashing as well? If not, what is the difference (assuming you have used this as a template)?

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Gisle,

Sorry - Somehow I lost sight that your program actually enumerated! Unfortunately, your sample also crashes with a MAV at the same place. It's at the C$MEMCPY after moving NextAdapterPtr to StepPtr in the loop. Works the first time, but MAVs the second time.

Thanks for your help.

Rob

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Gisle,

Sorry - Somehow I lost sight that your program actually enumerated! Unfortunately, your sample also crashes with a MAV at the same place. It's at the C$MEMCPY after moving NextAdapterPtr to StepPtr in the loop. Works the first time, but MAVs the second time.

Thanks for your help.

Rob

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
I were not able to get this to crash (of course...), but I suspect this works locally and crashes remotely using thin client? (You have TC prefixes in there, so I am inclined to think so)
I figure that is probably because you use M$ALLOC to allocate memory. This memory will be allocated on the server side. The api functions called on the client side will not see this memory. You will have to use API functions to allocate memory on the client. For instance HeapAlloc in Kernel32.dll, memory allocated with this function will be accessible by the IP functions.
Note however: Do not use this kind of memory with the clipboard. The clipboard demands global memory and should be allocated using GlobalAlloc.
Hope this helps.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
I were not able to get this to crash (of course...), but I suspect this works locally and crashes remotely using thin client? (You have TC prefixes in there, so I am inclined to think so)
I figure that is probably because you use M$ALLOC to allocate memory. This memory will be allocated on the server side. The api functions called on the client side will not see this memory. You will have to use API functions to allocate memory on the client. For instance HeapAlloc in Kernel32.dll, memory allocated with this function will be accessible by the IP functions.
Note however: Do not use this kind of memory with the clipboard. The clipboard demands global memory and should be allocated using GlobalAlloc.
Hope this helps.

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Gisle,

Thank you - that was the problem. It worked fine on Windows. At this time, I actually don't need a thin client solution, so I'm in luck! I was just executing on thin client for convenience. Thanks for your help - I guess I had the answers all along and just needed to take a small journey to realize it!

Rob

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Gisle,

Thank you - that was the problem. It worked fine on Windows. At this time, I actually don't need a thin client solution, so I'm in luck! I was just executing on thin client for convenience. Thanks for your help - I guess I had the answers all along and just needed to take a small journey to realize it!

Rob

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
Gisle,

Thank you - that was the problem. It worked fine on Windows. At this time, I actually don't need a thin client solution, so I'm in luck! I was just executing on thin client for convenience. Thanks for your help - I guess I had the answers all along and just needed to take a small journey to realize it!

Rob

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
That's life in a nutshell. You know it is there in front of you, but just cannot see the obvious.
Tell me about it... Been there, done that... :-)

Dominique Sacre
Forum|alt.badge.img+2

[Migrated content. Thread originally posted on 31 August 2007]


       PROCEDURE DIVISION.
       MAIN-LOGIC.
    PERFORM SHOW-ADAPTERS.
           STOP    RUN.
       SHOW-ADAPTERS.
           INITIALIZE               KEY-STATUS
                                    AllocSize
                                    AllocPtr
                                    StepPtr.
           SET     IpStructSize     TO SIZE OF IP-ADAPTER-INFO.
           CALL    "IpHlpAPI.DLL@WINAPI".
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           CALL    "M$ALLOC"        USING AllocSize
                   AllocPtr.
           CALL    "GetAdaptersInfo" USING
                   BY VALUE         AllocPtr
                   BY REFERENCE     AllocSize.
           MOVE    AllocPtr         TO StepPtr.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADAPTER-INFO
                                    BY VALUE StepPtr
                                    BY VALUE IpStructSize
                   PERFORM          DISPLAY-ADAPTER
                   MOVE             NextAdapterPtr to StepPtr
                   END-PERFORM.
           CALL    "M$FREE"         USING AllocPtr.
           CANCEL  "IpHlpAPI.DLL"
           EXIT    PARAGRAPH.
       DISPLAY-ADAPTER.
           EVALUATE                 AdapterType
                   WHEN             001 MOVE "Other" TO
                                             WS-AdapterType
                   WHEN             006 MOVE "Ethernet CSMACD" TO
                                             WS-AdapterType
                   WHEN             020 MOVE "Basic ISDN" TO
                                             WS-AdapterType
                   WHEN             021 MOVE "Primary ISDN" TO
                                             WS-AdapterType
                   WHEN             023 MOVE "PPP" TO
                                             WS-AdapterType
                   WHEN             026 MOVE "Ethernet 3Mb" TO
                                             WS-AdapterType
                   WHEN             048 MOVE "Modem" TO
                                             WS-AdapterType
                   WHEN             062 MOVE "Ethernet 100BaseT" TO
                                             WS-AdapterType
                   WHEN             063 MOVE "ISDN X.25" TO
                                             WS-AdapterType
                   WHEN             069 MOVE "Ethernet 100BaseFX" TO
                                             WS-AdapterType
                   WHEN             075 MOVE "ISDN S/T" TO
                                             WS-AdapterType
                   WHEN             076 MOVE "ISDN U" TO
                                             WS-AdapterType
                   WHEN             117 MOVE "Ethernet Gigabit" TO
                                             WS-AdapterType
                   WHEN             OTHER MOVE "Check list in src" TO
                                             WS-AdapterType
           END-EVALUATE.
           INITIALIZE               WS-Title.
           MOVE    AdapterIndex     TO WS-AdapterIndex.
           EVALUATE                 TRUE
                   WHEN             (AdapterIndex < 10)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(4:1)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 100)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(3:2)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             (AdapterIndex < 1000)
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex(2:3)
                                            DELIMITED BY SIZE INTO
                                            WS-Title
                   WHEN             OTHER
                                    STRING  "Network Adapter #"
                                            WS-AdapterIndex
                                            DELIMITED BY SIZE INTO
                                            WS-Title
           END-EVALUATE.
           IF      DHCPEnabled      NOT = 0
                   Move             "Yes" TO WS-DHCPEnabled
           ELSE
                   Move             "No " TO WS-DHCPEnabled
                   END-IF.
           IF      HaveWins         NOT = 0
                   Move             "Yes" TO WS-HaveWins
           ELSE
                   Move             "No " TO WS-HaveWins
                   END-IF.
           PERFORM CREATE-MAC-ADDRESS.
           PERFORM GENERATE-IP-ASSOC.
           PERFORM GENERATE-GATEWAY.
           PERFORM GENERATE-DHCPServer
           DISPLAY MESSAGE          BOX
                   "Adapter name"   x"09" AdapterName x"0a"
                   "Description"    x"09" Description x"0a"
                   "AdapterAddress" x"09" WS-AdapterAddress x"0a"
                   "Adapter type"   x"09" WS-AdapterType x"0a"
                   "DHCP Enabled"   x"09" WS-DHCPEnabled x"0a"
                   "Have Wins"      x"09" WS-HaveWins x"0a" x"0a"
                   WS-IpAssocList   x"0a"
                   WS-GatewayList   x"0a"
                   WS-DHCPSrvList
                   ICON             1
                   TITLE            WS-Title.
           EXIT    PARAGRAPH.
       GENERATE-IP-ASSOC.
           INITIALIZE               WS-IpAssocList.
           SET     OSize            TO SIZE OF IP-ADDR-STRING.
           SET     StepPtr          TO ADDRESS OF IpAddressList.
           MOVE    1                TO PosCounter.
           STRING  "IP Address, mask and context:" DELIMITED BY SIZE
                   x"0a"            DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           PERFORM UNTIL            StepPtr = 0
            CALL             "C$MEMCPY" USING
                             BY REFERENCE IP-ADDR-STRING
                                    BY VALUE StepPtr
                                    BY VALUE OSize
     IF               IpAddress = LOW-VALUES
                                    STRING x"09" DELIMITED BY SIZE
                                           "N/A" DELIMITED BY SIZE
                                           x"0a" DELIMITED BY SIZE
                                           INTO WS-IpAssocList
                                           WITH POINTER PosCounter
                                    END-STRING
                                    MOVE NextAddressPtr TO
                                         StepPtr
                      EXIT PERFORM CYCLE
                      END-IF
                   MOVE             IpContext TO WS-AdapterIndex
                   STRING           x"09" DELIMITED BY SIZE
                                    IpAddress DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" DELIMITED BY SIZE
                                    IpMask DELIMITED BY LOW-VALUE
                                    x"0a" DELIMITED BY SIZE
                                    x"09" WS-AdapterIndex DELIMITED BY
                                          SIZE
                                    x"0a" DELIMITED BY SIZE
                                    INTO WS-IpAssocList WITH POINTER
                                          PosCounter
                                    END-STRING
                   MOVE             NextAddressPtr TO StepPtr
                   END-PERFORM.
           STRING  x"0a"            DELIMITED BY SIZE
                   LOW-VALUE        DELIMITED BY SIZE
                   INTO             WS-IpAssocList
                   WITH             POINTER PosCounter.
           EXIT    PARAGRAPH.
That's life in a nutshell. You know it is there in front of you, but just cannot see the obvious.
Tell me about it... Been there, done that... :-)