'MacroName: ChangeSubs 'MacroDescription: Subroutines to be included in ChangeBySomething macros ' Written by: Joel Hahn, Niles Public Library District Declare Sub NewBook(CallNum$) Declare Sub GenericChangeCallNum(CallNum$) Declare Function WorkForm() Declare Function DlgWorkForm( WhichControl$, action%, suppvalue& ) 'Sub Main 'CurrentSession.GetTextInRegion CallNum$, 10, 20, 10, 69 'CallNum$="3"+Trim(CallNum$) 'GenericChangeCallNum(CallNum$) 'wkfmxx = Workform() 'End Sub Sub NewBook(CallNum$) Dim CS as Session Set CS=CurrentSession Dim nTimeOut2 as Integer nTimeOut2 = 60 Caller=Val(Left(CallNum$, 1)) CallNum$=Right(CallNum$, Len(CallNum$)-1) NBook=0 If Left(CallNum$, 8)="NEW BOOK" Then NBook=1 If NBook<>1 and Left(CallNum$, 3)="NEW" then NBook=2 If Left(CallNum$, 10)="J/NEW BOOK" Then NBook=3 If NBook<>3 and Left(CallNum$, 5)="J/NEW" Then NBook=4 Select Case NBook Case 0 'Msgbox "Not a new book. Format, Loan Cat and Hold indicators replaced anyway." Goto SubReturn Case 1 NewCall$=Right(CallNum$, Len(CallNum$)-9) Case 2 NewCall$=Right(CallNum$, Len(CallNum$)-4) Case 3 NewCall$="J/"+Right(CallNum$, Len(CallNum$)-11) Case 4 NewCall$="J/"+Right(CallNum$, Len(CallNum$)-6) End Select DA=4 'sometimes 5 If Caller=3 Then DA=5 'sometimes 6 DnArr$="" For DownArrows=1 to DA DnArr$=DnArr$+chr(27)+"[B" 'Down Arrows Next DownArrows CS.Send DnArr$+chr(4) CS.Send NewCall$ ' Wait for response from host. CS.Receive nTimeOut2, "[?25h" SubReturn: End Sub '*************************************************************** Sub GenericChangeCallNum(CallNum$) Dim CS as Session Set CS=CurrentSession Dim nTimeOut as Integer nTimeOut = 60 Caller=Val(Left(CallNum$, 1)) CallNum$=Right(CallNum$, Len(CallNum$)-1) CS.GetTextInRegion CallerCheck$, 3, 1, 3, 79 'If InStr(1, CallerCheck$, "BIB/ITEM MAINTENANCE - Call Number Search") Then ' Caller=3 'End If CNStatus=0 If Left(CallNum$, 2)="LT" Then CNStatus=1 If (InStr(CallNum$, "P-T")) Then CNStatus=2 If (Left(CallNum$, 2)="J/") and (InStr(CallNum$, ", ")) Then CNStatus=3 'If Left(CallNum$, 3)="SF/" Then CNStatus=4 'If Left(CallNum$, 12)="CLIFFS NOTES" Then CNStatus=5 Select Case CNStatus Case 0 'NewCall$="STORAGE/"+CallNum$ 'MsgBox "Nothing to change found; macro will save record and go on to next." Goto SubReturn Case 1 NewCall$="LARGE TYPE"+Right(CallNum$, Len(CallNum$)-2) Case 2 place=InStr(1, CallNum$, "P-T") If place=3 then NC1$=Right(CallNum$, Len(CallNum$)-place-3) NC2$="" Else NC1$=Mid(CallNum$, 3, place-4) If place+3<>Len(CallNum$) Then NC2$=Right(CallNum$, Len(CallNum$)-place-2) Else NC2$="" End If End If NewCall$="J/PARENT-TEACHER/"+NC1$+NC2$ Case 3 place=InStr(1, CallNum$, ",") NewCall$=Left(CallNum$, place-1) Case 4 'NewCall$="SCIENCE FICTION/"+Right(CallNum$, Len(CallNum$)-3) Case 5 'NewCall$="CLIFF NOTES/"+Right(CallNum$, Len(CallNum$)-13) End Select DA=4 'sometimes 5 If Caller=3 Then DA=5 'sometimes 6 DnArr$="" For DownArrows=1 to DA DnArr$=DnArr$+chr(27)+"[B" 'Down Arrows Next DownArrows CS.Send DnArr$+chr(4) CS.Send NewCall$ ' Wait for response from host. 'CS.Receive nTimeOut3, "[?25h" SubReturn: End Sub '*************************************************************** Function DlgWorkForm( WhichControl$, action%, suppvalue& ) Select Case action% Case 1 DlgEnable "AddDel0", 0 DlgEnable "AddDel1", 0 DlgEnable "AddDel2", 0 DlgEnable "AddDel3", 0 DlgEnable "AddDel4", 0 DlgEnable "AddDel5", 0 DlgEnable "DelText", 0 DlgEnable "Del2Text", 0 DlgEnable "Del2JText", 0 DlgEnable "Del2J2Text", 0 DlgEnable "Add", 0 DlgEnable "Del", 0 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 DlgValue "AddDel0", 1 Case 2 Select Case WhichControl$ Case "NewBook" DlgValue "AD", 0 DlgValue "Other", 0 DlgEnable "AddDel0", 0 DlgEnable "AddDel1", 0 DlgEnable "AddDel2", 0 DlgEnable "AddDel3", 0 DlgEnable "AddDel4", 0 DlgEnable "AddDel5", 0 DlgEnable "DelText", 0 DlgEnable "Del2Text", 0 DlgEnable "Del2JText", 0 DlgEnable "Del2J2Text", 0 DlgEnable "Add", 0 DlgEnable "Del", 0 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 Case "AD" DlgValue "NewBook", 0 DlgValue "Other", 0 If DlgValue("AD") = 1 Then DlgEnable "AddDel0", 1 DlgEnable "AddDel1", 1 DlgEnable "AddDel2", 1 DlgEnable "AddDel3", 1 DlgEnable "AddDel4", 1 DlgEnable "AddDel5", 1 DlgEnable "DelText", 1 DlgEnable "Del2Text", 1 DlgEnable "Del2JText", 1 DlgEnable "Del2J2Text", 1 If DlgValue("AddDel0") = 1 or DlgValue("AddDel1") = 1 Then DlgEnable "Add", 1 ElseIf DlgValue("AddDel2") = 1 or DlgValue("AddDel3") = 1 Then DlgEnable "Del", 1 ElseIf DlgValue("AddDel4") = 1 Then DlgEnable "Add2", 1 DlgEnable "Del2", 1 ElseIf DlgValue("AddDel5") = 1 Then DlgEnable "Add2J", 1 DlgEnable "Del2J", 1 End If Else DlgEnable "AddDel0", 0 DlgEnable "AddDel1", 0 DlgEnable "AddDel2", 0 DlgEnable "AddDel3", 0 DlgEnable "AddDel4", 0 DlgEnable "AddDel5", 0 DlgEnable "DelText", 0 DlgEnable "Del2Text", 0 DlgEnable "Del2JText", 0 DlgEnable "Del2J2Text", 0 DlgEnable "Add", 0 DlgEnable "Del", 0 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 End If Case "Other" DlgValue "NewBook", 0 DlgValue "AD", 0 DlgEnable "AddDel0", 0 DlgEnable "AddDel1", 0 DlgEnable "AddDel2", 0 DlgEnable "AddDel3", 0 DlgEnable "AddDel4", 0 DlgEnable "AddDel5", 0 DlgEnable "DelText", 0 DlgEnable "Del2Text", 0 DlgEnable "Del2JText", 0 DlgEnable "Del2J2Text", 0 DlgEnable "Add", 0 DlgEnable "Del", 0 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 Case "AddDel0" DlgValue "AddDel0", 1 DlgValue "AddDel1", 0 DlgValue "AddDel2", 0 DlgValue "AddDel3", 0 DlgValue "AddDel4", 0 DlgValue "AddDel5", 0 DlgEnable "Add", 1 DlgEnable "Del", 0 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 Case "AddDel1" DlgValue "AddDel0", 0 DlgValue "AddDel1", 1 DlgValue "AddDel2", 0 DlgValue "AddDel3", 0 DlgValue "AddDel4", 0 DlgValue "AddDel5", 0 DlgEnable "Add", 1 DlgEnable "Del", 0 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 Case "AddDel2" DlgValue "AddDel0", 0 DlgValue "AddDel1", 0 DlgValue "AddDel2", 1 DlgValue "AddDel3", 0 DlgValue "AddDel4", 0 DlgValue "AddDel5", 0 DlgEnable "Add", 0 DlgEnable "Del", 1 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 Case "AddDel3" DlgValue "AddDel0", 0 DlgValue "AddDel1", 0 DlgValue "AddDel2", 0 DlgValue "AddDel3", 1 DlgValue "AddDel4", 0 DlgValue "AddDel5", 0 DlgEnable "Add", 0 DlgEnable "Del", 1 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 Case "AddDel4" DlgValue "AddDel0", 0 DlgValue "AddDel1", 0 DlgValue "AddDel2", 0 DlgValue "AddDel3", 0 DlgValue "AddDel4", 1 DlgValue "AddDel5", 0 DlgEnable "Add", 0 DlgEnable "Del", 0 DlgEnable "Add2", 1 DlgEnable "Del2", 1 DlgEnable "Add2J", 0 DlgEnable "Del2J", 0 Case "AddDel5" DlgValue "AddDel0", 0 DlgValue "AddDel1", 0 DlgValue "AddDel2", 0 DlgValue "AddDel3", 0 DlgValue "AddDel4", 0 DlgValue "AddDel5", 1 DlgEnable "Add", 0 DlgEnable "Del", 0 DlgEnable "Add2", 0 DlgEnable "Del2", 0 DlgEnable "Add2J", 1 DlgEnable "Del2J", 1 'End Select 'End If End Select Case 3 Case 4 Case 5 End Select End Function Function WorkForm() Dim NIKNGK$(2) Dim YN$(2) Dim ShelfStat$(2) Dim ItemStat$(5) NIKNGK$(0)=" " NIKNGK$(1)="NIK/NIK" NIKNGK$(2)="NGK/NGK" YN$(0)=" " YN$(1)="Y" YN$(2)="N" ShelfStat$(0)=" " ShelfStat$(1)="CIRCULATING" ShelfStat$(2)="NON CIRCULATING" ItemStat$(0)=" " ItemStat$(1)="On Shelf/[Due Date]" ItemStat$(2)="On Order/Checked Out" ItemStat$(3)="On Display" ItemStat$(4)="At Bindery" ItemStat$(5)="In Storage" WhichButton=1 WorkDialog: Begin Dialog FDialog 356, 200, "Workform", .DlgWorkform Text 8, 1, 201, 9, "Enter data to be changed for all selected records; leave blank all" Text 8, 10, 90, 8, "fields that you want left alone" Text 11, 22, 23, 8, "Active:" DropListBox 34, 20, 46, 40, NIKNGK, .Active Text 81, 22, 18, 8, "Perm:" DropListBox 100, 20, 46, 40, NIKNGK, .Perm Text 147, 22, 23, 8, "Status:" DropListBox 171, 21, 39, 60, ItemStat, .ItemStatus Text 12, 38, 22, 8, "Call #:" TextBox 34, 36, 163, 13, .CallNumber Text 1, 54, 33, 8, "Loan Cat:" TextBox 34, 52, 10, 12, .LoanCat Text 111, 54, 18, 8, "Scat:" TextBox 130, 52, 16, 12, .Scat Text 10, 70, 24, 8, "Format:" TextBox 34, 68, 10, 12, .Format Text 111, 70, 18, 8, "Cost:" TextBox 130, 68, 24, 12, .Cost Text 87, 88, 42, 8, "Shelf Status:" DropListBox 130, 84, 66, 40, ShelfStat, .ShelfStatus Text 9, 102, 25, 8, "Renew:" DropListBox 34, 100, 20, 40, YN, .Renew Text 82, 102, 47, 8, "Purge Protect:" DropListBox 130, 100, 20, 40, YN, .PurgeProtect Text 13, 118, 21, 8, "Local:" DropListBox 34, 116, 20, 40, YN, .Local Text 59, 118, 17, 8, "Area:" DropListBox 78, 116, 20, 40, YN, .Area Text 103, 118, 26, 8, "System:" DropListBox 130, 116, 20, 40, YN, .Sys Text 151, 118, 39, 8, "Intersystem:" DropListBox 191, 116, 20, 40, YN, .InterSys Text 88, 134, 41, 8, "Date Added:" TextBox 130, 132, 40, 13, .DateAdd Text 9, 150, 25, 8, "Note 1:" TextBox 34, 148, 164, 12, .Note1 Text 9, 166, 25, 8, "Note 2:" TextBox 34, 164, 164, 12, .Note2 GroupBox 212, 1, 139, 38, "Choose one" CheckBox 217, 8, 59, 10, "Remove 'New'", .NewBook CheckBox 217, 18, 114, 10, "Add to/Delete from call number", .AD CheckBox 217, 28, 113, 10, "Other special call num. change", .Other CheckBox 217, 44, 117, 10, "Add to start of Adult call number", .AddDel0 CheckBox 217, 56, 119, 10, "Add after 'J/' of Juv. call number", .AddDel1 CheckBox 217, 92, 133, 10, "Delete from start of Adult call number", .AddDel2 CheckBox 217, 104, 127, 10, "Delete after 'J/' of Juv. call number", .AddDel3 CheckBox 217, 139, 33, 10, "Delete", .AddDel4 CheckBox 217, 161, 33, 10, "Delete", .AddDel5 GroupBox 212, 36, 139, 48, "" TextBox 244, 68, 85, 12, .Add GroupBox 212, 82, 139, 51, "" TextBox 252, 117, 12, 12, .Del Text 265, 119, 39, 8, "characters", .DelText GroupBox 212, 130, 139, 59, "", .Group3 TextBox 252, 138, 12, 12, .Del2 TextBox 275, 149, 62, 12, .Add2 Text 265, 140, 67, 8, "characters and add", .Del2Text TextBox 252, 160, 12, 12, .Del2J Text 265, 162, 69, 8, "characters after 'J/'", .Del2JText TextBox 275, 171, 62, 12, .Add2J Text 243, 174, 30, 8, "and add", .Del2J2Text OkButton 62, 180, 40, 14, .OK CancelButton 114, 180, 40, 14, .Cancel End Dialog Dim Fields As FDialog Fields.NewBook=0 Fields.Other=0 WhichButton=Dialog(Fields) If WhichButton=0 Then WkFm="" Goto done End If NB=Trim(Str(Fields.NewBook)) Other=Trim(Str(Fields.Other)) If Fields.CallNumber<>"" Then NB="0" Other="0" End If WkFm="" WkFm=WkFm + NB + Other 'WkFm=WkFM+Trim(Str(Fields.NewBook))+Trim(Str(Fields.LTPT)) If Fields.Active<>0 Then If Fields.Active=1 Then WkFm=WkFm+"NIK/NIK" Else WkFm=WkFm+"NGK/NGK" Else WkFm=WkFm+chr(27)+"[B" 'Skip Active field End If If Fields.Perm<>0 Then If Fields.Perm=1 Then WkFm=WkFm+"NIK/NIK" Else WkFm=WkFm+"NGK/NGK" Else WkFm=WkFm+chr(27)+"[B" 'Skip Perm field End If 'If Fields.Active<>"" Then WkFm=WkFm+Left(Fields.Active, 7) Else WkFm=WkFm+chr(27)+"[B" 'If Fields.Perm<>"" Then WkFm=WkFm+Left(Fields.Perm, 7) Else WkFm=WkFm+chr(27)+"[B" WkFm=WkFm+chr(27)+"[B" 'Skip Barcode If Fields.ItemStatus<>0 Then WkFm=WkFm+Chr(1)+"b" 'Shift-F2 statArr=0 Do While statArr < Fields.ItemStatus-1 WkFm=WkFm+chr(27)+"[B" statArr=statArr+1 Loop WkFm=WkFm+chr(13)+chr(10)+chr(27)+"[B" Else WkFm=WkFm+chr(27)+"[B" 'Skip Status End If If Fields.CallNumber<>"" Then If Len(Fields.CallNumber)>48 Then ClNm=Left(Fields.CallNumber, 48) Else ClNm=Fields.CallNumber End If WkFm=WkFm+Chr(4)+ClNm ElseIf Fields.AD=1 Then 'AddD=Fields.AddDel If Fields.AddDel0 = 1 Then AddD = 0 ElseIf Fields.AddDel1 = 1 Then AddD = 1 ElseIf Fields.AddDel2 = 1 Then AddD = 2 ElseIf Fields.AddDel3 = 1 Then AddD = 3 ElseIf Fields.AddDel4 = 1 Then AddD = 4 ElseIf Fields.AddDel5 = 1 Then AddD = 5 End If Select Case AddD Case 0 To 1 If Fields.Add="" Then MsgBox "You need to fill in the proper box." Goto WorkDialog End If AddText$=Fields.Add If Right(AddText$, 1)<>"/" Then AddText$=AddText$+"/" If AddD=1 Then AddText$=Chr(27)+"[C"+Chr(27)+"[C"+AddText$ ClNm=Chr(5)+AddText$+Chr(5) Case 2 To 3 If Fields.Del="" Then MsgBox "You need to fill in the proper box." Goto WorkDialog End If NumDel=Val(Fields.Del) If NumDel=0 Then MsgBox "You need to fill in the proper box with a number." Goto WorkDialog End If For i=1 to NumDel ClNm=ClNm+Chr(127) Next If AddD=3 Then ClNm=Chr(27)+"[C"+Chr(27)+"[C"+ClNm Case 4 If Fields.Add2="" or Fields.Del2="" Then MsgBox "You need to fill in the proper boxes." Goto WorkDialog End If NumDel=Val(Fields.Del2) If NumDel=0 Then MsgBox "You need to fill in the proper box with a number." Goto WorkDialog End If For i=1 to NumDel ClNm=ClNm+Chr(127) Next AddText$=Fields.Add2 'If Right(AddText$, 1)<>"/" Then AddText$=AddText$+"/" ClNm=ClNm+Chr(5)+AddText$+Chr(5) Case 5 If Fields.Add2J="" or Fields.Del2J="" Then MsgBox "You need to fill in the proper boxes." Goto WorkDialog End If NumDel=Val(Fields.Del2J) If NumDel=0 Then MsgBox "You need to fill in the proper box with a number." Goto WorkDialog End If For i=1 to NumDel ClNm=ClNm+Chr(127) Next AddText$=Fields.Add2J 'If Right(AddText$, 1)<>"/" Then AddText$=AddText$+"/" ClNm=Chr(27)+"[C"+Chr(27)+"[C"+ClNm+Chr(5)+AddText$+Chr(5) End Select WkFm=WkFm+ClNm End If WkFm=WkFm+chr(27)+"[B" If Fields.LoanCat<>"" Then WkFm=WkFm+Left(Fields.LoanCat, 1) Else WkFm=WkFm+chr(27)+"[B" If Fields.Scat<>"" Then WkFm=WkFm+Left(Fields.Scat, 4) WkFm=WkFm+chr(27)+"[B" If Fields.Format<>"" Then WkFm=WkFm+Left(Fields.Format, 1) Else WkFm=WkFm+chr(27)+"[B" If Fields.Cost<>"" Then If Left(Fields.Cost, 1)<>"$" Then WFCost="$"+Fields.Cost Else WFCost=Fields.Cost WkFm=WkFm+WFCost End If WkFm=WkFm+chr(27)+"[B" If Fields.ShelfStatus<>0 Then Select Case Fields.ShelfStatus Case 1 WkFm=WkFm+Chr(4)+"CIRCULATING" Case 2 WkFm=WkFm+Chr(4)+"NON CIRCULATING" Case 3 WkFm=WkFm+Chr(4)+"OFFLINE" End Select End If WkFm=WkFm+chr(27)+"[B" If Fields.Renew<>0 Then If Fields.Renew=1 Then WkFm=WkFm+"Y" Else WkFm=WkFm+"N" Else WkFm=WkFm+chr(27)+"[B" End If If Fields.PurgeProtect<>0 Then If Fields.PurgeProtect=1 Then WkFm=WkFm+"Y" Else WkFm=WkFm+"N" Else WkFm=WkFm+chr(27)+"[B" End If If Fields.Local<>0 Then If Fields.Local=1 Then WkFm=WkFm+"Y" Else WkFm=WkFm+"N" Else WkFm=WkFm+chr(27)+"[B" End If If Fields.Area<>0 Then If Fields.Area=1 Then WkFm=WkFm+"Y" Else WkFm=WkFm+"N" Else WkFm=WkFm+chr(27)+"[B" End If If Fields.Sys<>0 Then If Fields.Sys=1 Then WkFm=WkFm+"Y" Else WkFm=WkFm+"N" Else WkFm=WkFm+chr(27)+"[B" End If If Fields.InterSys<>0 Then If Fields.InterSys=1 Then WkFm=WkFm+"Y" Else WkFm=WkFm+"N" Else WkFm=WkFm+chr(27)+"[B" End If If Fields.DateAdd<>"" Then WkFm=WkFm+chr(4)+Fields.DateAdd Else WkFm=WkFm+chr(27)+"[B" If Fields.Note1<>"" Then WkFm=WkFm+chr(4)+Fields.Note1+chr(27)+"[B" Else WkFm=WkFm+chr(27)+"[B" If Fields.Note2<>"" Then WkFm=WkFm+chr(4)+Fields.Note2+chr(27)+"[B" Else WkFm=WkFm+chr(27)+"[B" 'MsgBox WkFm done: WorkForm=WkFm End Function