📄 readelstatus.bas
字号:
Dim eldata(1024) As Integer
Dim retval As Integer
Dim ha As Integer
Dim target As Integer
Dim lun As Integer
Dim results As String
Dim inqstr As String
Dim i As Integer
Dim NL
Dim length As Integer
Dim vendor As String
Dim vers As String
Dim product As String
Dim source As Integer
Dim picker As Integer
Dim dest As Integer
Dim x As Object
Dim bytecount As Integer
Dim dataoffset As Integer
Dim ellength As Integer
Dim pvol As Integer
Set x = CreateObject("Logger.Application")
x.WriteLine "Jukebox command test program "
x.WriteLine ""
pvol = 0
picker = 86
source = 82
dest = 0
bytecount = 0
dataoffset = 0
target = 6
ha = 2
lun = 0
retval = SCSIInquiry(ha,target,lun,eldata)
If retval <> 1 Then
MsgBox "Inquiry failed - Status = " & retval
Stop
Else
retval = SCSIGetVendor(ha,target,lun,vendor)
retval = SCSIGetProduct(ha,target,lun,product)
retval = SCSIGetVersion(ha,target, lun , vers)
results = "Vendor = " & vendor & " Product = " & product & " Version = " & vers
x.Write "Inquiry data = "
x.WriteLine results
End If
retval = SCSIReadElementStatus(ha,target,lun,2,0,255,1024,eldata)
If retval <> 0 Then
MsgBox "Read Element Status failed - Status = " & retval
Stop
Else
dataoffset = 8
bytecount = eldata(5) + eldata(6) + eldata(7)
ellength = eldata(dataoffset + 2) + eldata(dataoffset + 3)
x.WriteLine ""
x.WriteLine ""
x.Write "Element type = " & eldata(8)
If (eldata(8) = 1) Then x.WriteLine " - Tape Pickers"
If (eldata(8) = 2) Then x.WriteLine " - Cartridge Magazine Slots"
If (eldata(8) = 3) Then x.WriteLine " - Tape Drives"
If (eldata(9) And 128) Then
x.WriteLine "PVolTag = 1"
pvol = 1
Else
x.WriteLine "PVolTag = 0"
pvol = 0
End If
If (eldata(9) And 64) Then
x.WriteLine "AVolTag = 1"
Else
x.WriteLine "AVolTag = 0"
End If
x.WriteLine "Element Descriptor Length = " & ellength
x.Writeline "Byte Count of Descriptor data = " & bytecount
x.WriteLine "First Element Address = " & eldata(0) & eldata(1)
x.WriteLine "Number of Elements = " & eldata(2) & eldata(3)
x.WriteLine "Number of bytes of element status = " & bytecount
x.WriteLine ""
dataoffset = dataoffset + 8
bytecount = bytecount - 8
While (bytecount > 0)
x.WriteLine ""
x.WriteLine ""
x.WriteLine "Element Address = " & eldata(dataoffset) & eldata(dataoffset+1)
If (eldata(dataoffset+2) And 1) Then
x.WriteLine " - Full, "
Else
x.WriteLine " - Empty, "
End If
If (eldata(dataoffset+2) And 4) Then
x.Write " - Except = 1, "
Else
x.Write " - Except = 0, "
End If
If (eldata(dataoffset+2) And 8) Then
x.Write "Access = 1, "
Else
x.Write "Access = 0, "
End If
x.WriteLine ""
x.Write " - Additional Sense Code = " & eldata(dataoffset + 4)
x.WriteLine ", Additional Sense Code Qualifier = " & eldata(dataoffset + 5)
If (eldata(dataoffset + 6) And 128) Then
x.Write " - SValid = 1 "
Else
x.Write" - SValid = 0, "
End If
If (eldata(dataoffset + 6) And 64) Then
x.Write "Invert = 1 "
Else
x.Write "Invert = 0"
End If
x.Writeline ""
x.WriteLine " - Source Storage Element Address = " & eldata(dataoffset + 10) & eldata(dataoffset + 11)
If (pvol = 1) Then
x.Write " - Primary Volume Tag Information = "
For i = 12 To 47
x.Write eldata(dataoffset + i)
Next i
End If
bytecount = bytecount - ellength
dataoffset = dataoffset + ellength
Wend
x.WriteLine ""
End If
x.WriteLine "-------------------------------------------------------"
retval = SCSIReadElementStatus(ha,target,lun,1,0,255,1024,eldata)
If retval <> 0 Then
MsgBox "Read Element Status failed - Status = " & retval
Stop
Else
dataoffset = 8
bytecount = eldata(5) + eldata(6) + eldata(7)
ellength = eldata(dataoffset + 2) + eldata(dataoffset + 3)
x.WriteLine ""
x.WriteLine ""
x.Write "Element type = " & eldata(8)
If (eldata(8) = 1) Then x.WriteLine " - Tape Pickers"
If (eldata(8) = 2) Then x.WriteLine " - Cartridge Magazine Slots"
If (eldata(8) = 3) Then x.WriteLine " - Tape Drives"
x.WriteLine "First Element Address = " & eldata(0) & eldata(1)
x.WriteLine "Number of Elements = " & eldata(2) & eldata(3)
x.WriteLine "Number of bytes of element status = " & bytecount
x.WriteLine "Element Descriptor Length = " & ellength
x.WriteLine ""
dataoffset = dataoffset + 8
bytecount = bytecount - 8
While (bytecount > 0)
x.WriteLine ""
x.WriteLine ""
x.WriteLine "Element Address = " & eldata(dataoffset) & eldata(dataoffset+1)
If (eldata(dataoffset+2) And 1) Then
x.WriteLine " - Full, "
Else
x.WriteLine " - Empty, "
End If
If (eldata(dataoffset+2) And 4) Then
x.Write " - Except = 1, "
Else
x.Write " - Except = 0, "
End If
If (eldata(dataoffset+2) And 8) Then
x.Write "Access = 1, "
Else
x.Write "Access = 0, "
End If
x.WriteLine ""
x.Write " - Additional Sense Code = " & eldata(dataoffset + 4)
x.WriteLine ", Additional Sense Code Qualifier = " & eldata(dataoffset + 5)
If (eldata(dataoffset + 6) And 128) Then
x.Write " - SValid = 1 "
Else
x.Write" - SValid = 0, "
End If
If (eldata(dataoffset + 6) And 64) Then
x.Write "Invert = 1 "
Else
x.Write "Invert = 0"
End If
x.Writeline ""
x.WriteLine " - Source Storage Element Address = " & eldata(dataoffset + 10) & eldata(dataoffset + 11)
If (pvol = 1) Then
x.Write " - Primary Volume Tag Information = "
For i = 12 To 47
x.Write eldata(dataoffset + i)
Next i
End If
bytecount = bytecount - ellength
dataoffset = dataoffset + ellength
Wend
x.WriteLine ""
End If
x.WriteLine "-------------------------------------------------------"
retval = SCSIReadElementStatus(ha,target,lun,4,0,255,1024,eldata)
If retval <> 0 Then
MsgBox "Read Element Status failed - Status = " & retval
Stop
Else
dataoffset = 8
bytecount = eldata(5) + eldata(6) + eldata(7)
ellength = eldata(dataoffset + 2) + eldata(dataoffset + 3)
x.WriteLine ""
x.WriteLine ""
x.Write "Element type = " & eldata(8)
If (eldata(8) = 1) Then x.WriteLine " - Tape Pickers"
If (eldata(8) = 2) Then x.WriteLine " - Cartridge Magazine Slots"
If (eldata(8) = 4) Then x.WriteLine " - Tape Drives"
x.WriteLine "First Element Address = " & eldata(0) & eldata(1)
x.WriteLine "Number of Elements = " & eldata(2) & eldata(3)
x.WriteLine "Number of bytes of element status = " & bytecount
x.WriteLine "Element Descriptor Length = " & ellength
x.WriteLine ""
dataoffset = dataoffset + 8
bytecount = bytecount - 8
While (bytecount > 0)
x.Write "Element Address = " & eldata(dataoffset) & eldata(dataoffset+1)
x.WriteLine ""
If (eldata(dataoffset+2) And 1) Then
x.WriteLine " - Full, "
Else
x.WriteLine " - Empty, "
End If
If (eldata(dataoffset+2) And 4) Then
x.Write " - Except = 1, "
Else
x.Write " - Except = 0, "
End If
If (eldata(dataoffset+2) And 8) Then
x.Write "Access = 1, "
Else
x.Write "Access = 0, "
End If
x.WriteLine ""
x.Write " - Additional Sense Code = " & eldata(dataoffset + 4)
x.WriteLine ", Additional Sense Code Qualifier = " & eldata(dataoffset + 5)
If (eldata(dataoffset + 6) And 128) Then
x.Write " - Not Bus = 1,"
Else
x.Write " - Not Bus = 0,"
End If
If (eldata(dataoffset + 6) And 32) Then
x.Write " ID Valid = 1,"
Else
x.Write " ID Valid = 0,"
End If
If (eldata(dataoffset + 6) And 16) Then
x.Write " LU Valid = 1,"
Else
x.Write " LU Valid = 0,"
End If
x.WriteLine "Logical Unit Number = " & (eldata(dataoffset + 6) And 7)
x.WriteLine " - SCSI Bus Address = " & eldata(dataoffset + 7)
If (eldata(dataoffset + 6) And 128) Then
x.Write " - SValid = 1 "
Else
x.Write" - SValid = 0, "
End If
If (eldata(dataoffset + 6) And 64) Then
x.Write "Invert = 1 "
Else
x.Write "Invert = 0"
End If
x.Writeline ""
x.WriteLine " - Source Storage Element Address = " & eldata(dataoffset + 10) & eldata(dataoffset + 11)
If (pvol = 1) Then
x.Write " - Primary Volume Tag Information = "
For i = 12 To 47
x.Write eldata(dataoffset + i)
Next i
End If
bytecount = bytecount - ellength
dataoffset = dataoffset + ellength
Wend
x.WriteLine ""
End If
x.WriteLine "-------------------------------------------------------"
'retval = SCSIInitializeElementStatus(ha,target,lun)
'x.WriteLine "Initialize Element status = " & retval
'MsgBox "Move tape from 0 to 5. . ."
'dest = 0
'source = 5
'retval = SCSIMoveMedium(ha,target,lun,picker,source,dest)
'MsgBox "finished move - move back to 0"
'dest = 5
'source = 0
'retval = SCSIMoveMedium(ha,target,lun,picker,source,dest)
x.Write "The End"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -