none
VBScript: Is there a better way to write this conditional statement ... RRS feed

  • General discussion

  • Hi,

     Is there a better way to write this conditional statement? It works but it is so long.

    Thanks in advance!

    'Loop Script

    For size = 64 to 8976

    print "Packet length is " & size

    For i = 1 to 1
    If size > 64 AND size = 256 Then
    size = 511
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size > 512 AND size = 528 Then
    size = 767
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size = 784 Then
    size = 1023
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size > 1024 AND size = 1040 Then
    size = 1279
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size = 1296 Then
    size = 1535
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size > 1536 AND size = 1552 Then
    size = 1791
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size = 1808 Then
    size = 2047
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size > 2048 AND size = 2064 Then
    size = 2303
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size = 2320 Then
    size = 2559
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size > 2560 AND size = 2576 Then
    size = 2815
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size = 2832 Then
    size = 3071
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size > 3072 AND size = 3088 Then
    size = 3327
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size = 3344 Then
    size = 3583
    print vbcrlf
    print size
    print vbcrlf
    Exit For
    ElseIf size > 3584 AND size = 3600 Then
    size = 3839
    print vbcrlf
    Exit For
    ElseIf size = 3856 Then
    size = 4095
    print vbcrlf
    Exit For
    ElseIf size > 4096 AND size = 4112 Then
    size = 4351
    print vbcrlf
    Exit For
    ElseIf size = 4368 Then
    size = 4607
    print vbcrlf
    Exit For
    ElseIf size > 4608 AND size = 4624 Then
    size = 4863
    print vbcrlf
    Exit For
    ElseIf size = 4880  Then
    size = 5119
    print vbcrlf
    Exit For
    ElseIf size > 5120 AND size = 5136  Then
    size = 5375
    print vbcrlf
    Exit For
    ElseIf size = 5392 Then
    size = 5631
    print vbcrlf
    Exit For
    ElseIf size > 5632 AND size = 5648 Then
    size = 5887
    print vbcrlf
    Exit For
    ElseIf size = 5904 Then
    size = 6143
    print vbcrlf
    Exit For
    ElseIf size > 6144 AND size = 6160 Then
    size = 6399
    print vbcrlf
    Exit For
    ElseIf size = 6416 Then
    size = 6655
    print vbcrlf
    Exit For
    ElseIf size > 6656 AND size = 6672 Then
    size = 6911
    print vbcrlf
    Exit For
    ElseIf size = 6928 Then
    size = 7167
    print vbcrlf
    Exit For
    ElseIf size > 7168 AND size = 7184 Then
    size = 7423
    print vbcrlf
    Exit For
    ElseIf size = 7440 Then
    size = 7679
    print vbcrlf
    Exit For
    ElseIf size > 7680 AND size = 7696 Then
    size = 7935
    print vbcrlf
    Exit For
    ElseIf size = 7952 Then
    size = 8191
    print vbcrlf
    Exit For
    ElseIf size > 8192 AND size = 8208 Then
    size = 8447
    print vbcrlf
    Exit For
    ElseIf size = 8464 Then
    size = 8703
    print vbcrlf
    Exit For
    ElseIf size > 8704 AND size = 8720 Then
    size = 8959
    print vbcrlf
    Exit For
    ElseIf size = 8976 Then
    print "last size is " & size 
    Exit For

    End If
    Next

    Next



    Adohr

    • Changed type Bill_Stewart Friday, January 26, 2018 3:03 PM
    • Moved by Bill_Stewart Friday, January 26, 2018 3:04 PM This is not "do my homework for me" forumn
    Friday, December 1, 2017 10:02 PM

All replies

  • Hint 1: Take a look at the Mod (modulus) operator.

    Hint 2: This is not a homework forum.


    -- Bill Stewart [Bill_Stewart]

    Friday, December 1, 2017 10:21 PM
  • Wow.

    That was cold-blooded.

    This is not a homework assignment. It is a legitimate secular work task that I am trying to do.

    Can you help?


    Adohr

    Friday, December 1, 2017 10:25 PM
  • What is the logic you are trying to express with the multiple If and ElseIf statements?

    Why use VBScript rather than PowerShell?


    -- Bill Stewart [Bill_Stewart]

    Friday, December 1, 2017 10:53 PM
  • Also the logic is just plain wrong.  Things like this "ElseIf size > 6144 AND size = 6160 Then"  just don't make any sense.  Perhaps some study of logic would help.

    The whole script is just pointless.  "For I = 1 to 1" --- why?  Why loop only once?

    "Print" is not a VBS command and cannot be used in VBS.


    \_(ツ)_/


    • Edited by jrv Friday, December 1, 2017 11:10 PM
    Friday, December 1, 2017 11:09 PM
  • The following is what you have written minus all of the mistakes and unnecessary items:

    For size = 64 to 8976
    	If size = 256 Then 
    		newsize = 511
    	ElseIf size = 528 Then 
    		newsize = 767
    	ElseIf size = 784 Then 
    		newsize = 1023
    	ElseIf size = 1040 Then 
    		newsize = 1279
    	ElseIf size = 1296 Then 
    		newsize = 1535
    	ElseIf size = 1552 Then 
    		newsize = 1791
    	ElseIf size = 1808 Then 
    		newsize = 2047
    	ElseIf size = 2064 Then 
    		newsize = 2303
    	ElseIf size = 2320 Then 
    		newsize = 2559
    	ElseIf size = 2576 Then 
    		newsize = 2815
    	ElseIf size = 2832 Then 
    		newsize = 3071
    	ElseIf size = 3088 Then 
    		newsize = 3327
    	ElseIf size = 3344 Then 
    		newsize = 3583
    	ElseIf size = 3600 Then 
    		newsize = 3839
    	ElseIf size = 3856 Then 
    		newsize = 4095
    	ElseIf size = 4112 Then 
    		newsize = 4351
    	ElseIf size = 4368 Then 
    		newsize = 4607
    	ElseIf size = 4624 Then 
    		newsize = 4863
    	ElseIf size = 4880 Then 
    		newsize = 5119
    	ElseIf size = 5136 Then 
    		newsize = 5375
    	ElseIf size = 5392 Then 
    		newsize = 5631
    	'... more
    	Else
    		newsize = -1
    	End If
    	If newsize > 0 Then WScript.Echo "Size:" & size & " Newsize:" & newsize
    Next

    A 'Case" statement would be even more compact.  I would probably use a dictionary.


    \_(ツ)_/


    • Edited by jrv Friday, December 1, 2017 11:33 PM
    Friday, December 1, 2017 11:32 PM
  • It is a legitimate secular work task that I am trying to do.

    What is the purpose?


    -- Bill Stewart [Bill_Stewart]

    Monday, December 4, 2017 4:18 PM