Your SlideShare is downloading. ×
Batchhow
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Batchhow

280
views

Published on

Cross-Platform Batch reports using WinBatch …

Cross-Platform Batch reports using WinBatch
presented at VUGM 2001

Published in: Technology, Business

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
280
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cross-platform Batch Reports Waldo Library Western Michigan University
  • 2. Objectives
    • show an implementation of automated, cross-platform, hands-off report generation in the Voyager environment
    • provide you with the information to do this at your site
  • 3. Bonus!!!!! Source code for BLOB access and a table+column schema listing included in the handout.
  • 4. Brief Bio
  • 5. Brief Bio
    • Working at WMU for 16 years now
  • 6. Brief Bio
    • Working at WMU for 16 years now
    • Initially spent many years on the VAX
  • 7. Brief Bio
    • Working at WMU for 16 years now
    • Initially spent many years on the VAX
    • Struggled for several years with the IBM mainframe and NOTIS
  • 8. Brief Bio
    • Working at WMU for 16 years now
    • Initially spent many years on the VAX
    • Struggled for several years with the IBM mainframe and NOTIS
    • Supporting Voyager for close to 3 years
  • 9. Brief Bio
    • Working at WMU for 16 years now
    • Initially spent many years on the VAX
    • Struggled for several years with the IBM mainframe and NOTIS
    • Supporting Voyager for close to 3 years
    • Picked up some Oracle, (PL/)SQL, Perl, and Unix along the way
  • 10. Why We Did This
  • 11. Why We Did This
    • initially no access to Access with ODBC stuff; had no clue
  • 12. Why We Did This
    • initially no access to Access with ODBC stuff; had no clue
    • explored our Voyager Unix box, located SQL*PLUS
  • 13. Why We Did This
    • So we created reports -
    • run them on the Voyager box,
    • transfer to PC
    • format and print in Word,
    • etc...
  • 14. Why We Did This
    • So we created reports -
    • library liked them -
    • I got tired of:
  • 15. Why We Did This
    • So we created reports -
    • library liked them -
    • I got tired of:
    • running reports
    • ftping them
    • formatting them
    • printing them
    • physically delivering them
  • 16. Cross-Platform Batch Reports Overview of Process (Handout page 4) Unix
  • 17. cron Cross-Platform Batch Reports Overview of Process Unix
  • 18. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file
  • 19. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script
  • 20. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl
  • 21. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running
  • 22. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC
  • 23. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch
  • 24. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch script or .exe
  • 25. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch script or .exe use ftp to get the report pull it into Word format the report
  • 26. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch script or .exe use ftp to get the report pull it into Word format the report time/date parameters stored in each script
  • 27. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch script or .exe use ftp to get the report pull it into Word format the report time/date parameters stored in each script copy report to destination on LAN
  • 28. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch script or .exe use ftp to get the report pull it into Word format the report time/date parameters stored in each script copy report to destination on LAN print report to location
  • 29. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch script or .exe use ftp to get the report pull it into Word format the report time/date parameters stored in each script copy report to destination on LAN print report to location Library Administration Library Systems Media Resources Mono Acquisitions Serials
  • 30. When to Choose SQL, PL/SQL, or Perl
    • SQL
  • 31. When to Choose SQL, PL/SQL, or Perl
    • SQL
    • invoked from within SQL*PLUS
  • 32. When to Choose SQL, PL/SQL, or Perl
    • SQL
    • invoked from within SQL*PLUS
    • sufficient for most reports
  • 33. When to Choose SQL, PL/SQL, or Perl
    • SQL
    • invoked from within SQL*PLUS
    • sufficient for most reports
    • easy control of page & line size, page formatting
  • 34. When to Choose SQL, PL/SQL, or Perl
    • SQL
    • invoked from within SQL*PLUS
    • sufficient for most reports
    • easy control of page & line size, page formatting
    • takes control, does most of the work for you
  • 35. When to Choose SQL, PL/SQL, or Perl
    • SQL
    • invoked from within SQL*PLUS
    • sufficient for most reports
    • easy control of page & line size, page formatting
    • takes control, does most of the work for you
    • output to screen or file
  • 36. When to Choose SQL, PL/SQL, or Perl
    • SQL
    • sample of code… (Handout page 5)
    • output snippet below
  • 37. When to Choose SQL, PL/SQL, or Perl identify what the report generates
  • 38. When to Choose SQL, PL/SQL, or Perl include Word format settings
  • 39. When to Choose SQL, PL/SQL, or Perl define output columns
  • 40. When to Choose SQL, PL/SQL, or Perl these two columns are for sorting only
  • 41. When to Choose SQL, PL/SQL, or Perl The call to FISCYRSETUP creates a temporary table, for the duration of this report, that contains the name and start date for the current and previous year. This is used in a number of reports to automatically reference fiscal year data.
  • 42. When to Choose SQL, PL/SQL, or Perl Set up title and some report parameters. Want output in a file.
  • 43. When to Choose SQL, PL/SQL, or Perl Run the query to create the report. Clean up when done.
  • 44. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
  • 45. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • invoked from within SQL*PLUS, or embedded in / combined with SQL
  • 46. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • invoked from within SQL*PLUS, or embedded in / combined with SQL
    • provides SQL capabilities with programming language control added
  • 47. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • invoked from within SQL*PLUS, or embedded in / combined with SQL
    • provides SQL capabilities with programming language control added
    • functionality sort of in-between SQL and Perl
  • 48. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • output to screen or to screen
  • 49. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • output to screen or to screen
    • Oracle allows output to file, but the Voyager installation does not enable this
  • 50. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • output to screen or to screen
    • Oracle allows output to file, but the Voyager installation does not enable this
    • size limited to 1 million bytes output
  • 51. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • output to screen or to screen
    • Oracle allows output to file, but the Voyager installation does not enable this
    • size limited to 1 million bytes output
    • screen output can be captured to file
  • 52. When to Choose SQL, PL/SQL, or Perl
    • PL/SQL
    • sample of code… (Handout pages 6 & 7)
    • output snippet below
  • 53. When to Choose SQL, PL/SQL, or Perl start off with some comments… output limitation…
  • 54. When to Choose SQL, PL/SQL, or Perl important reminder
  • 55. When to Choose SQL, PL/SQL, or Perl note the order by
  • 56. When to Choose SQL, PL/SQL, or Perl variables must be declared
  • 57. When to Choose SQL, PL/SQL, or Perl fields from the table
  • 58. When to Choose SQL, PL/SQL, or Perl you have control of looping through results
  • 59. When to Choose SQL, PL/SQL, or Perl What is a BLOB ? It stands for B inary L arge Ob ject. More simply put, it is a collection of bytes that can contain both printable and unprintable characters. This is how MARC data is stored under Voyager.
  • 60. When to Choose SQL, PL/SQL, or Perl The BLOB can be stored in one or more sections: BibID: 57 Seqnum: 1 Recseg: BLOB Part A BibID: 57 Seqnum: 2 Recseg: BLOB Part B
  • 61. When to Choose SQL, PL/SQL, or Perl The BLOB can be stored in one or more sections: BibID: 57 Seqnum: 1 Recseg: BLOB Part A BibID: 57 Seqnum: 2 Recseg: BLOB Part B The BLOB is put together in reverse order, because we can depend on Seqnum #1 being the last one that way.
  • 62. When to Choose SQL, PL/SQL, or Perl get data from the header, then get each tag’s data as we loop through the directory structure
  • 63. When to Choose SQL, PL/SQL, or Perl do some formatting...
  • 64. When to Choose SQL, PL/SQL, or Perl print formatted tag data… finish looping and end the program
  • 65. When to Choose SQL, PL/SQL, or Perl Without the closing “ / ”, your PL/SQL code will NOT run!
  • 66. When to Choose SQL, PL/SQL, or Perl
    • Perl
  • 67. When to Choose SQL, PL/SQL, or Perl
    • Perl
    • invoked from the operating system
    • (can be called from within SQL(*PLUS)
  • 68. When to Choose SQL, PL/SQL, or Perl
    • Perl
    • invoked from the operating system
    • (can be called from within SQL(*PLUS)
    • you have control over everything, which means:
  • 69. When to Choose SQL, PL/SQL, or Perl
    • Perl
    • invoked from the operating system
    • (can be called from within SQL(*PLUS)
    • you have control over everything, which means:
    • relatively unlimited flexibility
    • that you have to do ALL the work
  • 70. When to Choose SQL, PL/SQL, or Perl
    • Perl
    • invoked from the operating system
    • (can be called from within SQL(*PLUS)
    • you have control over everything, which means:
    • relatively unlimited flexibility
    • that you have to do ALL the work
    • output to screen or file
  • 71. When to Choose SQL, PL/SQL, or Perl
    • Perl
    • sample of code… (Handout pages 8 -10)
    • output snippet below
  • 72. When to Choose SQL, PL/SQL, or Perl start off with some comments
  • 73. When to Choose SQL, PL/SQL, or Perl You’ll need to have DBI and DBD for Oracle set up on your Unix box.
  • 74. When to Choose SQL, PL/SQL, or Perl set up some variables
  • 75. When to Choose SQL, PL/SQL, or Perl need to be able to talk to the database
  • 76. When to Choose SQL, PL/SQL, or Perl Get all the table names. In my experience, I was unable to use the reserved word “ distinct ” in the query. Thus the extract code to dedupe the results.
  • 77. When to Choose SQL, PL/SQL, or Perl need to know how many columns per table to aid in output formatting
  • 78. When to Choose SQL, PL/SQL, or Perl set up and initiate output
  • 79. When to Choose SQL, PL/SQL, or Perl get the report’s data
  • 80. When to Choose SQL, PL/SQL, or Perl keep track of column names ending in “_id”
  • 81. When to Choose SQL, PL/SQL, or Perl go through array, output columns ending in “_id” first
  • 82. When to Choose SQL, PL/SQL, or Perl go through array, output columns ending in “_id” first Remember counting columns per table? Here we advance to the next page, if the table doesn’t fit on the current page.
  • 83. When to Choose SQL, PL/SQL, or Perl then repeat this process for columns that do not end in “_id”
  • 84. When to Choose SQL, PL/SQL, or Perl if not enough room for smallest possible table, go to next page
  • 85. When to Choose SQL, PL/SQL, or Perl clean up when done
  • 86. The Batch PC
  • 87. The Batch PC
    • Should be dedicated to this task
  • 88. The Batch PC
    • Should be dedicated to this task
    • configuration...
  • 89. The Batch PC
    • Hardware
  • 90. The Batch PC
    • Hardware
    • older pc will be adequate
  • 91. The Batch PC
    • Hardware
    • older pc will be adequate
    • we’re using a 133MHz Pentium
  • 92. The Batch PC
    • Hardware
    • older pc will be adequate
    • we’re using a 133MHz Pentium
    • 32 meg RAM
  • 93. The Batch PC
    • Hardware
    • older pc will be adequate
    • we’re using a 133MHz Pentium
    • 32 meg RAM
    • 1.5 gig hard disk, which is way more than necessary
  • 94. The Batch PC
    • Software
  • 95. The Batch PC
    • Software
    • running Windows 95
  • 96. The Batch PC
    • Software
    • running Windows 95
    • WinBatch software
    • (see www.windowware.com )
  • 97. The Batch PC
    • Software
    • running Windows 95
    • WinBatch software
    • (see www.windowware.com )
    • the scripts that you write...
  • 98. The Batch PC
    • The Batch Software
  • 99. The Batch PC
    • The Batch Software
    • WinBatch installation will leave it running in the background
  • 100. The Batch PC
    • The Batch Software
    • WinBatch installation will leave it running in the background
    • in Windows Explorer, double click on your WinBatch script, identified as a .WBT file
  • 101. The Batch PC
    • The Batch Software
    • WinBatch installation will leave it running in the background
    • in Windows Explorer, double click on your WinBatch script, identified as a .WBT file
    • it will either run right away, or appear on the task bar, awaiting its time
  • 102. Quick Process Review
  • 103. cron Cross-Platform Batch Reports Overview of Process Unix Time/date parameters in one crontab file script SQL, PL/SQL, Perl report One cron process running Batch PC WinBatch script or .exe use ftp to get the report pull it into Word format the report time/date parameters stored in each script copy report to destination on LAN print report to location Library Administration Library Systems Media Resources Mono Acquisitions Serials
  • 104. The Batch PC
    • The Batch Software
    • FINALLY, a script! (Handout pages 11 & 12)
  • 105. The Batch PC start off with comments, including instructions on when the script can be started safely to avoid duplication of report printing
  • 106. The Batch PC set up paths and filenames on the Unix box and the batch PC, get the database password from a file
  • 107. The Batch PC determine if it’s time for the script to run
  • 108. The Batch PC Encapsulating the ftp process in a WinBatch script file works well. Use the DOS ftp program supplied with Windows.
  • 109. The Batch PC wait a minute for ftp to complete
  • 110. The Batch PC make sure file exists, then launch Word with it
  • 111. The Batch PC send formatting keystrokes to Word
  • 112. The Batch PC Get the printer pull-down menu, select the desired printer, and print. Wait a minute for printing to complete before closing Word.
  • 113. The Batch PC The rest of the code closes loops and makes the script wait until the next run time occurs.
  • 114. Example from another script illustrating how to trigger on day of the week. This script runs early in the morning, six days a week.
  • 115. The Batch PC
    • The Batch Software
    • Some final hints
  • 116. The Batch PC
    • The Batch Software
    • Some final hints
    • WinBatch appears to get application Windows confused, despite referring to them by name in the scripts
  • 117. The Batch PC
    • The Batch Software
    • Some final hints
    • WinBatch appears to get application Windows confused, despite referring to them by name in the scripts
    • set up trigger and run times so that they do not overlap
  • 118. The Batch PC
    • The Batch Software
    • Some final hints
    • long lines in your scripts:
    • don’t break them up!
    • WinBatch expects them to remain
    • contiguous!
  • 119. Thanks for listening Questions? Email: zimmer@wmich.edu Phone: 616.387.3885
  • 120. Better Call Number Sorting Roll your own!
  • 121. What Voyager gives us…
  • 122. We can achieve better results… this is now our input correctly sorted
  • 123. Better Call Number Sorting
    • originally written in SAS back in our NOTIS days
  • 124. Better Call Number Sorting
    • originally written in SAS back in our NOTIS days
    • ported to Perl for use with Voyager
  • 125. Better Call Number Sorting
    • originally written in SAS back in our NOTIS days
    • ported to Perl for use with Voyager
    • with NOTIS, could only sort on whole call number field, with expected atrocious results
  • 126. Better Call Number Sorting
    • originally written in SAS back in our NOTIS days
    • ported to Perl for use with Voyager
    • with NOTIS, could only sort on whole call number field, with expected atrocious results
    • Voyager provides normalized call number, which allows for better than 80% correct sorting
  • 127. Better Call Number Sorting
    • with intelligent parsing applied to the call number, we can achieve about 99% correct sorting
    • implemented it as a Perl module
    • put use Sort::CallNumber; at the beginning of your Perl code
  • 128. Better Call Number Sorting
    • one call returns the call number chunks:
    • @cnparts = cnparse($callnum);
    • then sort on the cnparts
  • 129. Thanks for listening. Contact me if you want to receive the CallNumber Perl module. Questions? Email: zimmer@wmich.edu Phone: 616.387.3885