660
code:
; begin MOAN
;
;!
Function moan($a,$b,$c)
Dim $,$d,$e,$f,$g,$h,$m[3]
$d="."

;Build Subnet Mask
$f=0,128,192,224,240,248,252,254
for $e=8 to 31
$=$e
$h=1
for $g=0 to 3
$m[$g]=iif($/8,255,$f[$ mod 8])
$=($>8)*($-8)
if $a & $b
$h=$h & split($b,$d)[$g]=(0+split($a,$d)[$g] & $m[$g])
endif
next
if $h
$c=$c+" /"+$e
endif
if $e=$c
$c=join($m,$d)
endif
next
;End build mask array
if instr($c,$d)
;build array of input values by splitting a string. Then convert to integers
; Mask = $[0..3] NetID = $[4..7] IPaddr = $[8..11]
$=split($c+$d+$b,$d)
if $a
;Calculate NetworkID using $ array
$c=""
for $e=0 to 3
$c=$c+$d+(0+$[$e] & 0+split($a,$d)[$e])
next
if $d+join(split($a),"")=$c
$c=""
endif

;Output: 1 if the IP is a member of a nework defined by network ID and subnet mask, otherwise 0
;Input NetworkID = Calculated NetworkID
if $b
$c=$d+join(split($b),"")=$c
endif
else
;Output: Network ID or empty string if no match
;Output: Array of all potential IP addresses or empty string if no match
for $b=$[4] to 255 + $[4] - $[0]
for $h=$[5] to 255 + $[5] - $[1]
for $e=$[6] to 255 + $[6] - $[2]
for $f=1+$[7] to 254 + $[7] - $[3]
$a = $a+" "+$b+$d+$h+$d+$e+$d+$f
next
next
next
next
$c=$a
endif
endif $=$c,split(substr($c,2))
$moan=$[len($c)>1]
EndFunction
;!
;!
; end MOAN

_________________________
!

download KiXnet