[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.


