tnef 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. data/ext/tnef/AUTHORS +7 -0
  2. data/ext/tnef/BUGS.in +5 -0
  3. data/ext/tnef/COPYING +340 -0
  4. data/ext/tnef/ChangeLog +1550 -0
  5. data/ext/tnef/INSTALL +234 -0
  6. data/ext/tnef/Makefile.am +7 -0
  7. data/ext/tnef/Makefile.in +699 -0
  8. data/ext/tnef/NEWS +177 -0
  9. data/ext/tnef/README +39 -0
  10. data/ext/tnef/THANKS +1 -0
  11. data/ext/tnef/TODO +7 -0
  12. data/ext/tnef/acinclude.m4 +47 -0
  13. data/ext/tnef/aclocal.m4 +1012 -0
  14. data/ext/tnef/configure +6815 -0
  15. data/ext/tnef/configure.in +67 -0
  16. data/ext/tnef/depcomp +584 -0
  17. data/ext/tnef/doc/FAQ +25 -0
  18. data/ext/tnef/doc/Makefile.am +6 -0
  19. data/ext/tnef/doc/Makefile.in +623 -0
  20. data/ext/tnef/doc/file-format.tex +139 -0
  21. data/ext/tnef/doc/tnef.1.in +183 -0
  22. data/ext/tnef/doc/www/Makefile.am +14 -0
  23. data/ext/tnef/doc/www/Makefile.in +542 -0
  24. data/ext/tnef/doc/www/cgi-bin/Makefile.am +14 -0
  25. data/ext/tnef/doc/www/cgi-bin/Makefile.in +340 -0
  26. data/ext/tnef/doc/www/htdocs/Makefile.am +14 -0
  27. data/ext/tnef/doc/www/htdocs/Makefile.in +340 -0
  28. data/ext/tnef/extconf.rb +3 -0
  29. data/ext/tnef/install-sh +507 -0
  30. data/ext/tnef/missing +367 -0
  31. data/ext/tnef/mkinstalldirs +161 -0
  32. data/ext/tnef/src/Makefile.am +48 -0
  33. data/ext/tnef/src/Makefile.in +700 -0
  34. data/ext/tnef/src/alloc.c +107 -0
  35. data/ext/tnef/src/alloc.h +54 -0
  36. data/ext/tnef/src/attr.c +270 -0
  37. data/ext/tnef/src/attr.h +74 -0
  38. data/ext/tnef/src/common.h +101 -0
  39. data/ext/tnef/src/config.h.in +111 -0
  40. data/ext/tnef/src/date.c +66 -0
  41. data/ext/tnef/src/date.h +43 -0
  42. data/ext/tnef/src/debug.c +45 -0
  43. data/ext/tnef/src/debug.h +32 -0
  44. data/ext/tnef/src/file.c +259 -0
  45. data/ext/tnef/src/file.h +48 -0
  46. data/ext/tnef/src/main.c +386 -0
  47. data/ext/tnef/src/mapi-names.data +430 -0
  48. data/ext/tnef/src/mapi-types.data +19 -0
  49. data/ext/tnef/src/mapi_attr.c +419 -0
  50. data/ext/tnef/src/mapi_attr.h +78 -0
  51. data/ext/tnef/src/mkdata.awk +100 -0
  52. data/ext/tnef/src/options.c +32 -0
  53. data/ext/tnef/src/options.h +67 -0
  54. data/ext/tnef/src/path.c +397 -0
  55. data/ext/tnef/src/path.h +34 -0
  56. data/ext/tnef/src/replace/Makefile.am +8 -0
  57. data/ext/tnef/src/replace/Makefile.in +435 -0
  58. data/ext/tnef/src/replace/basename.c +45 -0
  59. data/ext/tnef/src/replace/dummy.c +7 -0
  60. data/ext/tnef/src/replace/getopt_long.c +940 -0
  61. data/ext/tnef/src/replace/getopt_long.h +141 -0
  62. data/ext/tnef/src/replace/malloc.c +41 -0
  63. data/ext/tnef/src/replace/strdup.c +51 -0
  64. data/ext/tnef/src/rtf.c +362 -0
  65. data/ext/tnef/src/rtf.h +36 -0
  66. data/ext/tnef/src/tnef-names.data +34 -0
  67. data/ext/tnef/src/tnef-types.data +12 -0
  68. data/ext/tnef/src/tnef.c +396 -0
  69. data/ext/tnef/src/tnef.h +45 -0
  70. data/ext/tnef/src/util.c +112 -0
  71. data/ext/tnef/src/util.h +42 -0
  72. data/ext/tnef/src/write.c +136 -0
  73. data/ext/tnef/src/write.h +25 -0
  74. data/ext/tnef/src/xstrdup.c +41 -0
  75. data/ext/tnef/tests/Makefile.am +4 -0
  76. data/ext/tnef/tests/Makefile.in +530 -0
  77. data/ext/tnef/tests/cmdline/AUTHORS +8 -0
  78. data/ext/tnef/tests/cmdline/AUTHORS.baseline +8 -0
  79. data/ext/tnef/tests/cmdline/Makefile.am +33 -0
  80. data/ext/tnef/tests/cmdline/Makefile.in +455 -0
  81. data/ext/tnef/tests/cmdline/basic.baseline +4 -0
  82. data/ext/tnef/tests/cmdline/basic.test +39 -0
  83. data/ext/tnef/tests/cmdline/body-test.html.baseline +95 -0
  84. data/ext/tnef/tests/cmdline/body.baseline +929 -0
  85. data/ext/tnef/tests/cmdline/body.test +55 -0
  86. data/ext/tnef/tests/cmdline/debug.baseline +155 -0
  87. data/ext/tnef/tests/cmdline/debug.test +14 -0
  88. data/ext/tnef/tests/cmdline/directory.baseline +3 -0
  89. data/ext/tnef/tests/cmdline/directory.test +35 -0
  90. data/ext/tnef/tests/cmdline/help.baseline +63 -0
  91. data/ext/tnef/tests/cmdline/help.test +12 -0
  92. data/ext/tnef/tests/cmdline/interactive.test +5 -0
  93. data/ext/tnef/tests/cmdline/list.baseline +5 -0
  94. data/ext/tnef/tests/cmdline/list.test +21 -0
  95. data/ext/tnef/tests/cmdline/maxsize.baseline +828 -0
  96. data/ext/tnef/tests/cmdline/maxsize.test +43 -0
  97. data/ext/tnef/tests/cmdline/message.html.baseline +95 -0
  98. data/ext/tnef/tests/cmdline/mime-types.baseline +3 -0
  99. data/ext/tnef/tests/cmdline/mime-types.test +11 -0
  100. data/ext/tnef/tests/cmdline/overwrite.baseline +8 -0
  101. data/ext/tnef/tests/cmdline/overwrite.test +40 -0
  102. data/ext/tnef/tests/cmdline/rtf-test.rtf.baseline +0 -0
  103. data/ext/tnef/tests/cmdline/stdin.baseline +2 -0
  104. data/ext/tnef/tests/cmdline/stdin.test +18 -0
  105. data/ext/tnef/tests/cmdline/test.tnef +0 -0
  106. data/ext/tnef/tests/cmdline/triples-test-2.rtf.baseline +0 -0
  107. data/ext/tnef/tests/cmdline/triples-test-2.txt.baseline +0 -0
  108. data/ext/tnef/tests/cmdline/triples-test.txt.baseline +0 -0
  109. data/ext/tnef/tests/cmdline/use-path.baseline +0 -0
  110. data/ext/tnef/tests/cmdline/use-path.test +5 -0
  111. data/ext/tnef/tests/cmdline/verbose.baseline +5 -0
  112. data/ext/tnef/tests/cmdline/verbose.test +19 -0
  113. data/ext/tnef/tests/cmdline/version.baseline +17 -0
  114. data/ext/tnef/tests/cmdline/version.test +14 -0
  115. data/ext/tnef/tests/files/MAPI_ATTACH_DATA_OBJ.test +9 -0
  116. data/ext/tnef/tests/files/MAPI_OBJECT.test +9 -0
  117. data/ext/tnef/tests/files/Makefile.am +16 -0
  118. data/ext/tnef/tests/files/Makefile.in +636 -0
  119. data/ext/tnef/tests/files/baselines/AUTHORS.baseline +8 -0
  120. data/ext/tnef/tests/files/baselines/AUTOEXEC.BAT.baseline +0 -0
  121. data/ext/tnef/tests/files/baselines/CONFIG.SYS.baseline +0 -0
  122. data/ext/tnef/tests/files/baselines/MAPI_ATTACH_DATA_OBJ-body.rtf.baseline +0 -0
  123. data/ext/tnef/tests/files/baselines/MAPI_ATTACH_DATA_OBJ.baseline +229 -0
  124. data/ext/tnef/tests/files/baselines/MAPI_OBJECT-body.rtf.baseline +0 -0
  125. data/ext/tnef/tests/files/baselines/MAPI_OBJECT.baseline +153 -0
  126. data/ext/tnef/tests/files/baselines/Makefile.am +35 -0
  127. data/ext/tnef/tests/files/baselines/Makefile.in +361 -0
  128. data/ext/tnef/tests/files/baselines/README.baseline +31 -0
  129. data/ext/tnef/tests/files/baselines/TechlibDEC99-JAN00.doc.baseline +0 -0
  130. data/ext/tnef/tests/files/baselines/TechlibDEC99.doc.baseline +0 -0
  131. data/ext/tnef/tests/files/baselines/TechlibNOV99.doc.baseline +0 -0
  132. data/ext/tnef/tests/files/baselines/Untitled_Attachment.baseline +0 -0
  133. data/ext/tnef/tests/files/baselines/VIA_Nytt_1402.doc.baseline +0 -0
  134. data/ext/tnef/tests/files/baselines/VIA_Nytt_1402.pdf.baseline +0 -0
  135. data/ext/tnef/tests/files/baselines/VIA_Nytt_14021.htm.baseline +1914 -0
  136. data/ext/tnef/tests/files/baselines/body-body.html.baseline +95 -0
  137. data/ext/tnef/tests/files/baselines/body.baseline +124 -0
  138. data/ext/tnef/tests/files/baselines/boot.ini.baseline +6 -0
  139. data/ext/tnef/tests/files/baselines/data-before-name-body.rtf.baseline +0 -0
  140. data/ext/tnef/tests/files/baselines/data-before-name.baseline +213 -0
  141. data/ext/tnef/tests/files/baselines/garbage-at-end.baseline +73 -0
  142. data/ext/tnef/tests/files/baselines/generpts.src.baseline +1691 -0
  143. data/ext/tnef/tests/files/baselines/long-filename-body.rtf.baseline +26 -0
  144. data/ext/tnef/tests/files/baselines/long-filename.baseline +218 -0
  145. data/ext/tnef/tests/files/baselines/message.rtf.baseline +0 -0
  146. data/ext/tnef/tests/files/baselines/missing-filenames-body.rtf.baseline +20 -0
  147. data/ext/tnef/tests/files/baselines/missing-filenames.baseline +252 -0
  148. data/ext/tnef/tests/files/baselines/multi-name-property.baseline +243 -0
  149. data/ext/tnef/tests/files/baselines/one-file.baseline +155 -0
  150. data/ext/tnef/tests/files/baselines/rtf-body.rtf.baseline +0 -0
  151. data/ext/tnef/tests/files/baselines/rtf.baseline +167 -0
  152. data/ext/tnef/tests/files/baselines/triples-body.rtf.baseline +0 -0
  153. data/ext/tnef/tests/files/baselines/triples.baseline +254 -0
  154. data/ext/tnef/tests/files/baselines/two-files.baseline +186 -0
  155. data/ext/tnef/tests/files/body.test +9 -0
  156. data/ext/tnef/tests/files/data-before-name.test +9 -0
  157. data/ext/tnef/tests/files/datafiles/MAPI_ATTACH_DATA_OBJ.list +4 -0
  158. data/ext/tnef/tests/files/datafiles/MAPI_ATTACH_DATA_OBJ.tnef +0 -0
  159. data/ext/tnef/tests/files/datafiles/MAPI_OBJECT.list +2 -0
  160. data/ext/tnef/tests/files/datafiles/MAPI_OBJECT.tnef +0 -0
  161. data/ext/tnef/tests/files/datafiles/Makefile.am +27 -0
  162. data/ext/tnef/tests/files/datafiles/Makefile.in +351 -0
  163. data/ext/tnef/tests/files/datafiles/body.list +1 -0
  164. data/ext/tnef/tests/files/datafiles/body.tnef +0 -0
  165. data/ext/tnef/tests/files/datafiles/data-before-name.list +4 -0
  166. data/ext/tnef/tests/files/datafiles/data-before-name.tnef +0 -0
  167. data/ext/tnef/tests/files/datafiles/garbage-at-end.list +0 -0
  168. data/ext/tnef/tests/files/datafiles/garbage-at-end.tnef +0 -0
  169. data/ext/tnef/tests/files/datafiles/long-filename.list +1 -0
  170. data/ext/tnef/tests/files/datafiles/long-filename.tnef +0 -0
  171. data/ext/tnef/tests/files/datafiles/missing-filenames.list +1 -0
  172. data/ext/tnef/tests/files/datafiles/missing-filenames.tnef +0 -0
  173. data/ext/tnef/tests/files/datafiles/multi-name-property.list +0 -0
  174. data/ext/tnef/tests/files/datafiles/multi-name-property.tnef +0 -0
  175. data/ext/tnef/tests/files/datafiles/one-file.list +1 -0
  176. data/ext/tnef/tests/files/datafiles/one-file.tnef +0 -0
  177. data/ext/tnef/tests/files/datafiles/rtf.list +1 -0
  178. data/ext/tnef/tests/files/datafiles/rtf.tnef +0 -0
  179. data/ext/tnef/tests/files/datafiles/triples.list +1 -0
  180. data/ext/tnef/tests/files/datafiles/triples.tnef +0 -0
  181. data/ext/tnef/tests/files/datafiles/two-files.list +2 -0
  182. data/ext/tnef/tests/files/datafiles/two-files.tnef +0 -0
  183. data/ext/tnef/tests/files/file-util.sh +38 -0
  184. data/ext/tnef/tests/files/garbage-at-end.test +9 -0
  185. data/ext/tnef/tests/files/long-filename.test +9 -0
  186. data/ext/tnef/tests/files/missing-filenames.test +9 -0
  187. data/ext/tnef/tests/files/multi-name-property.test +9 -0
  188. data/ext/tnef/tests/files/one-file.test +9 -0
  189. data/ext/tnef/tests/files/rtf.test +9 -0
  190. data/ext/tnef/tests/files/triples.test +9 -0
  191. data/ext/tnef/tests/files/two-files.test +9 -0
  192. data/ext/tnef/tests/util.sh +32 -0
  193. data/ext/tnef/tnef.spec.in +44 -0
  194. data/lib/tnef.rb +30 -0
  195. data/lib/tnef/executable.rb +27 -0
  196. data/lib/tnef/version.rb +3 -0
  197. metadata +243 -0
@@ -0,0 +1,1691 @@
1
+ *PROC CIRREQ01
2
+ *-----------------------------------------------------------------------------
3
+ *
4
+ * Title: Patron Request Report
5
+ * File: PATRQT01.PRC
6
+ * Author: Information Dimensions, Inc. (TD)
7
+ *
8
+ * Description: A list of patron requests
9
+ *
10
+ * Input Parameters:
11
+ * OUTPUT - may be 'REVIEW','PRINT'. Review displays report
12
+ * on screen, print outputs to file for printing.
13
+ *
14
+ * START_DATE/END_DATE - find where CIRC_REQUEST.ADD_DT
15
+ * is in range
16
+ *
17
+ * CIRC_SORT_KEY - option to sort by title, patron name,
18
+ * or patron id
19
+ *
20
+ * HOLD_SORT_KEY - option to sort by title, patron id,
21
+ * patron name, or call number.
22
+ *
23
+ * Other Selection Criteria:
24
+ * LIBR_KEY - Restrict to certain libraries.
25
+ *
26
+ * ALL - Boolean value; set true by Slang if no params entered
27
+ *
28
+ * Output File: patrqt01.rpt
29
+ *
30
+ * Record Types Referenced:
31
+ * TEMPLATE, COPY, CAT, CIRC_REQUEST
32
+ * Buffers: @A @B @C @D
33
+ *
34
+ * Report Name: Cairculation Requests
35
+ *
36
+ * Report No.: PATRQT01
37
+ *
38
+ * Menu Access: CATALOG REPORTS
39
+ *
40
+ * Parameter
41
+ * Input Screen: CATRPT12
42
+ *
43
+ * Templates: REPORT_HDR, BIB_PATRON, COPY_NOCIRC, COPY_NOCIRC_S,
44
+ * PATRON_REQUEST.
45
+ *
46
+ *------------------------------------------------------------------------------
47
+ *
48
+ * Revision History:
49
+ *
50
+ * Date Revised By Description
51
+ * -------- ---------- -----------
52
+ * 11/20/89 DeFrench Initial Version
53
+ * 03/28/91 Sandstrom Add LIBR_KEY to find commands.
54
+ * 04/25/91 Sandstrom Add MATERIAL_TYPE to FIND commands.
55
+ * 07/03/91 MChung Substitute tabs with 8 spaces and
56
+ * spelling checks
57
+ *
58
+ *------------------------------------------------------------------------------
59
+ *
60
+ START:
61
+ ACQUIRE/PV MESSAGE 46707, C2=MSG
62
+ TELL MSG,$B
63
+ ON/BREAK BREAKERR
64
+ ON/EXCEPTION EXCEPTION
65
+ ON/SYNTAX SYNTAXERR
66
+ SET/DEFAULT RESULT = N
67
+ SET/PV PV_TODAY = $YYYYMMDD
68
+ SET/PV PRINTTOP = 1
69
+ SET/PV RPTNM = 'PATRQT01'
70
+ SET/PV RPTTTL = 'Circulation/Holds report'
71
+ SET/PV PGNO = 0
72
+ * Set up for desired output method
73
+ SELECT (OUTPUT)
74
+ CASE 'REVIEW'
75
+ SET/PV MAXLINES = 20
76
+ SET/PV PV_FILEID = ''
77
+ CASE 'PRINT'
78
+ SET/PV MAXLINES = 60
79
+ OPEN/F patrqt01.rpt, FID=A, INTENT=WRITE, +
80
+ CARRIAGE=YES, ERR=OPENERR
81
+ SET/PV PV_FILEID = ',FID=A'
82
+ END_SELECT
83
+ *
84
+ GET/VIEW [TEMPLATE_KEY = 'REPORT_HDR']TEMPLATE@A, ERR = VIEWERR
85
+ ASSIGN/PV HEADER = TEXT@A
86
+ GET/VIEW [TEMPLATE_KEY='REQ_HDR']TEMPLATE@A, ERR=VIEWERR
87
+ ASSIGN/PV REQ_HDR = TEXT@A
88
+ GET/VIEW [TEMPLATE_KEY = 'PATRON_REQUEST']TEMPLATE@A, ERR = VIEWERR
89
+ ASSIGN/PV RQTINFO = TEXT@A
90
+ GET/VIEW [TEMPLATE_KEY = 'BIB_PATRON']TEMPLATE@A, ERR = VIEWERR
91
+ ASSIGN/PV CATINFO = TEXT@A
92
+ GET/VIEW [TEMPLATE_KEY = 'COPY_NOCIRC']TEMPLATE@A, ERR = VIEWERR
93
+ ASSIGN/PV COPYINFO = TEXT@A
94
+ GET/VIEW [TEMPLATE_KEY = 'COPY_NOCIRC_S']TEMPLATE@A, ERR = VIEWERR
95
+ ASSIGN/PV SCOPYINFO = TEXT@A
96
+ SET/PV CALLOC = 'CATR'
97
+ *
98
+ * Begin construction of FIND command.
99
+ *
100
+ SET/PV PV_FINDCMD = 'FIND CIRC_REQUEST,CATR,COPY,material_type ' //+
101
+ 'WHERE CIRC_REQUEST.CATNO:=CATR.CATNO ' //+
102
+ 'AND CIRC_REQUEST.ITEMID:=COPY.ITEMID ' //+
103
+ 'AND MATERIAL_TYPE.TYPE:=CATR.MTYPE '//+
104
+ 'AND CIRC_REQUEST.REQUEST_TYPE=''C'' '
105
+ *
106
+ * Add Library to find.
107
+ *
108
+ DELETE/GV OUTLC
109
+ DELETE/GV OUTSTR
110
+ DELETE/GV INSTR
111
+ SET/GV INSTR = LIBR_KEY
112
+ @/PL='$TLP_PROC/generpts' QTBLKS01, VFLDNM='COPY.LIBR_KEY'
113
+ SET/PV SAVE_OUTSTR = '(' //OUTSTR
114
+ SET/PV PV_FINDCMD = PV_FINDCMD // 'AND (' // OUTSTR //' '
115
+ *
116
+ DELETE/GV OUTLC
117
+ DELETE/GV OUTSTR
118
+ DELETE/GV INSTR
119
+ SET/GV INSTR = LIBR_KEY
120
+ @/PL='$TLP_PROC/generpts' QTBLKS01, +
121
+ VFLDNM='CIRC_REQUEST.PLACED_LIBR_KEY'
122
+ SET/PV SAVE_OUTSTR = SAVE_OUTSTR// ' OR ' //OUTSTR //') '
123
+ SET/PV PV_FINDCMD = PV_FINDCMD // 'OR ' // OUTSTR //') '
124
+ *
125
+ * Add the date fields if they were passed.
126
+ *
127
+ IF (START_DATE <> '')
128
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
129
+ ' AND CIRC_REQUEST.ADD_DT = '//START_DATE//':'//END_DATE//' '
130
+ END_IF
131
+ *
132
+ * Append FIND for sort options.
133
+ *
134
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
135
+ ' ORDER BY !CIRC_SORT_KEY!, CATR.TI,CATR.PUBL, COPY.YEAR, ' //+
136
+ 'COPY.LIBR_KEY, COPY.ITEMID, COPY.COPY'
137
+ *
138
+ * If output option is equal to 'PRINT', then delete the records
139
+ * as they are printed.
140
+ *
141
+ IF OUTPUT = 'PRINT'
142
+ START/TRANS SW=CIRC_REQUEST
143
+ END_IF
144
+ *
145
+ * Execute Find and set up for report generation
146
+ *
147
+ !PV_FINDCMD! END REF=NO
148
+ ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM
149
+ ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET
150
+ JUMPIF (PV_NUMMEM = 0), DO_HOLDS
151
+ *
152
+ * Write initial header.
153
+ *
154
+ IF OUTPUT = 'REVIEW'
155
+ CLEAR/SCREEN
156
+ SET/PV LINE_CNT =2
157
+ ELSE
158
+ TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
159
+ END_IF
160
+ *
161
+ SET/PV PGNO = PGNO + 1
162
+ TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
163
+ SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
164
+ TYPE !REQ_HDR!, $S2, LABELS = N, SKIP = 0, +
165
+ SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
166
+ SET/PV LINE_CNT = 8
167
+ *
168
+ * Step through members of set, generating correct output for each.
169
+ *
170
+ FOR PV_Q = 1, PV_NUMMEM
171
+ *
172
+ GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST@D, ERR = VIEWERR
173
+ GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CATR@B, ERR = VIEWERR
174
+ GET/VIEW [!PV_FOUNDSET!,!PV_Q!]COPY@C, ERR = VIEWERR
175
+ *
176
+ ASSIGN/PV CATDOC = CATR.DOC@B
177
+ IF CATDOC = 'SER'
178
+ TYPE !CATINFO!,!SCOPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, +
179
+ SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID!
180
+ SET/PV LINE_CNT = LINE_CNT + 12
181
+ ELSE
182
+ TYPE !CATINFO!,!COPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, +
183
+ SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID!
184
+ SET/PV LINE_CNT = LINE_CNT + 12
185
+ END_IF
186
+ IF OUTPUT = 'PRINT'
187
+ DELETE [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST
188
+ END_IF
189
+ *
190
+ * Check for a page break.
191
+ *
192
+ IF LINE_CNT > MAXLINES
193
+ IF OUTPUT = 'REVIEW'
194
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
195
+ INQUIRE/PV PV_QUIT, '!MSG!'
196
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
197
+ CLEAR/SCREEN
198
+ SET/PV LINE_CNT =2
199
+ ELSE
200
+ TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
201
+ END_IF
202
+ *
203
+ SET/PV PGNO = PGNO + 1
204
+ TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
205
+ SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
206
+ SET/PV LINE_CNT = 7
207
+ END_IF
208
+ *
209
+ END_FOR
210
+ *****************************************************
211
+ *****************************************************
212
+ DO_HOLDS:
213
+ *
214
+ * Begin construction of the HOLDS FIND command.
215
+ *
216
+ SET/PV PV_FINDCMD = 'FIND CIRC_REQUEST,CATR,COPY,MATERIAL_TYPE ' //+
217
+ 'WHERE CIRC_REQUEST.CATNO:=CATR.CATNO ' //+
218
+ 'AND CIRC_REQUEST.ITEMID:=COPY.ITEMID ' //+
219
+ 'AND MATERIAL_TYPE.TYPE:=CATR.MTYPE '//+
220
+ 'AND CIRC_REQUEST.REQUEST_TYPE=''H'' '//+
221
+ 'AND ' // SAVE_OUTSTR // ' '
222
+ *
223
+ * Add the date fields if they were passed.
224
+ *
225
+ IF (START_DATE <> '')
226
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
227
+ ' AND CIRC_REQUEST.ADD_DT = '//START_DATE//':'//END_DATE//' '
228
+ END_IF
229
+ *
230
+ * Append FIND for sort options.
231
+ *
232
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
233
+ ' ORDER BY !HOLD_SORT_KEY!, CATR.TI,CATR.PUBL, COPY.YEAR, ' //+
234
+ 'COPY.LIBR_KEY, COPY.ITEMID, COPY.COPY'
235
+ *
236
+ * Execute Find and set up for report generation
237
+ *
238
+ !PV_FINDCMD! END REF=NO
239
+ ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM
240
+ ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET
241
+ JUMPIF (PV_NUMMEM = 0), CLEANUP
242
+ *
243
+ * Write initial header.
244
+ *
245
+ IF OUTPUT = 'REVIEW'
246
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
247
+ INQUIRE/PV PV_QUIT, '!MSG!'
248
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
249
+ CLEAR/SCREEN
250
+ SET/PV LINE_CNT =2
251
+ ELSE
252
+ TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
253
+ END_IF
254
+ *
255
+ SET/PV PGNO = PGNO + 1
256
+ TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
257
+ SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
258
+ SET/PV LINE_CNT = 7
259
+ *
260
+ * Step through members of set, generating correct output for each.
261
+ *
262
+ FOR PV_Q = 1, PV_NUMMEM
263
+ *
264
+ GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST@D, ERR = VIEWERR
265
+ GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CATR@B, ERR = VIEWERR
266
+ GET/VIEW [!PV_FOUNDSET!,!PV_Q!]COPY@C, ERR = VIEWERR
267
+ *
268
+ ASSIGN/PV HOLDTYPE = CIRC_REQUEST.HOLD_TYPE@D
269
+ SET/PV RHOLDTYPE = $RAISE(HOLDTYPE)
270
+ IF RHOLDTYPE = 'COPY'
271
+ TYPE $S2, 'COPY level hold for:' +
272
+ SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
273
+ ELSE
274
+ TYPE $S2, 'CAT level hold for:' +
275
+ SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
276
+ END_IF
277
+ *
278
+ * Choose the serials copy info if item is a serial.
279
+ *
280
+ ASSIGN/PV CATDOC = CATR.DOC@B
281
+ IF CATDOC = 'SER'
282
+ TYPE !CATINFO!,!SCOPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, +
283
+ SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID!
284
+ SET/PV LINE_CNT = LINE_CNT + 12
285
+ ELSE
286
+ TYPE !CATINFO!,!COPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, +
287
+ SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID!
288
+ SET/PV LINE_CNT = LINE_CNT + 12
289
+ END_IF
290
+ *
291
+ * Delete the occurrence if print is selected
292
+ *
293
+ IF OUTPUT = 'PRINT'
294
+ DELETE [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST
295
+ END_IF
296
+ *
297
+ * Check for a page break.
298
+ *
299
+ IF LINE_CNT > MAXLINES
300
+ IF OUTPUT = 'REVIEW'
301
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
302
+ INQUIRE/PV PV_QUIT, '!MSG!'
303
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
304
+ CLEAR/SCREEN
305
+ SET/PV LINE_CNT =2
306
+ ELSE
307
+ TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
308
+ END_IF
309
+ *
310
+ SET/PV PGNO = PGNO + 1
311
+ TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
312
+ SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
313
+ SET/PV LINE_CNT = 7
314
+ END_IF
315
+ *
316
+ END_FOR
317
+ *
318
+ * Cleanup - close files and discard result sets.
319
+ *
320
+ CLEANUP:
321
+ ACQUIRE/PV MESSAGE 46708, C2=MSG
322
+ TELL MSG
323
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
324
+ INQUIRE/PV DUMMY, '!MSG!'
325
+ QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET
326
+ DISCARD !PV_FOUNDSET!:!PV_LASTSET!
327
+ SET/DEF RESULT = Y
328
+ IF (OUTPUT <> 'REVIEW')
329
+ CLOSE/F FID = A,ERR=$CONTINUE
330
+ FINISH/TRANS
331
+ END_IF
332
+ *
333
+ * DONE - successful report generation; return to caller
334
+ *
335
+ DONE:
336
+ RETURN_TO_SCREEN
337
+ *
338
+ * Error - inform user and close file, if necessary.
339
+ *
340
+ SYNTAXERR:
341
+ EXCEPTION:
342
+ OPENERR:
343
+ VIEWERR:
344
+ SHOW/MESSAGE !DMSTAT!
345
+ JUMP ERROR
346
+ BREAKERR:
347
+ SHOW/MESSAGE 46700
348
+ ERROR:
349
+ SHOW/MESSAGE 46703
350
+ IF (OUTPUT <> 'REVIEW')
351
+ CLOSE/FILE FID = A,ERR=$CONTINUE
352
+ ABORT/TRANSACTION, ERR=$CONTINUE
353
+ END_IF
354
+ SET/DEF RESULT = Y
355
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
356
+ INQUIRE/PV DUMMY, '!MSG!'
357
+ RETURN_TO_SCREEN
358
+ *PROC FILOPN01
359
+ *-----------------------------------------------------------------------------
360
+ *
361
+ * Title: Generic File Open
362
+ * File: FILOPN01.PRC
363
+ * Author: Information Dimensions, Inc. (BPM)
364
+ *
365
+ * Description: This proc is designed as a subroutine that is called from
366
+ * other TLP procs to correctly open files in cases where the
367
+ * file may already exist.
368
+ *
369
+ * Input Parameters:
370
+ * FIL The file descriptor to be opened.
371
+ * ID The file ID to be assigned to this file.
372
+ * Called by: Any report that has an OPEN/FILE.
373
+ * Call: @/PL='$TLP_PROC/generpts' FILOPN01 FIL=!A!, ID=!B!
374
+ *------------------------------------------------------------------------------
375
+ * Revision History
376
+ *
377
+ * Date Rev. Revised By Description
378
+ * --------- ---------- --------------------------------
379
+ * 04/07/93 BMOORE Initial version
380
+ *-----------------------------------------------------------------------------
381
+ *
382
+ START:
383
+ *
384
+ * Open the file.
385
+ *
386
+ OPEN/FILE FD=!FIL! FID=!ID! INTENT=WRITE CARRIAGE=NO ERR=OPENERR
387
+ SET/GV FILE_STATUS = 'OK'
388
+ RETURN
389
+ *
390
+ * If error occurs, attempt to delete existing file and then open the file.
391
+ *
392
+ OPENERR:
393
+ *
394
+ DELETE/FILE !FIL!
395
+ OPEN/FILE FD=!FIL! FID=!ID! INTENT=WRITE CARRIAGE=NO ERR=OPENER2
396
+ SET/GV FILE_STATUS = 'OK'
397
+ RETURN
398
+ *
399
+ * If still unable to open the file, display message and return.
400
+ *
401
+ OPENER2:
402
+ *
403
+ SET/GV FILE_STATUS = 'OPEN_ERROR'
404
+ TELL 'File cannot be opened. Contact your DBA'
405
+ RETURN
406
+ *PROC GENPRT01
407
+ *-----------------------------------------------------------------------------
408
+ *
409
+ * Title: Generic Print Routine
410
+ * File: GENPRT01.PRC
411
+ * Author: Information Dimensions, Inc. (BPM)
412
+ *
413
+ * Description: This proc is designed as a subroutine that is called from
414
+ * other TLP procs to allow custom printing of reports.
415
+ * The proc uses the ROUTE/FILE command to route a file to the
416
+ * printer of chice. Consult the BASISplus Command Procedures
417
+ * manual for additional parameters. Optionally, you can use
418
+ * a SPAWN command to call local procedures for printing.
419
+ *
420
+ * Input Parameters:
421
+ * FIL The file descriptor to be sent to the printer.
422
+ * ERROR_FLG is 'Y' if called from within error branch of
423
+ * the calling proc.
424
+ *
425
+ * Called by: Any report that generates a printable file.
426
+ *
427
+ * Call: @/PL=TLP$PROC:GENERPTS.LIB GENPRT01 FIL=!A! ERROR_FLG='N'
428
+ *------------------------------------------------------------------------------
429
+ * Revision History
430
+ *
431
+ * Date Rev. Revised By Description
432
+ * --------- ---------- --------------------------------
433
+ * 04/08/93 BMOORE Initial version
434
+ *-----------------------------------------------------------------------------
435
+ *
436
+ ON/EXCEPTION $RETURN
437
+ START:
438
+ *
439
+ **** ROUTE/FILE FD=!FIL!
440
+ RETURN
441
+ *PROC MAROUT01
442
+ *-----------------------------------------------------------------------------
443
+ *
444
+ * Title: Marc Output
445
+ * File: MAROUT01.PRC
446
+ * Author: Information Dimensions, Inc. (HB)
447
+ *
448
+ * Description: Create Marc Input file records that can be run using the Marc
449
+ * program
450
+ *
451
+ * Input Parameters:
452
+ * OUTPUT - may be 'REVIEW','PRINT'. Review displays report
453
+ * on screen, print outputs to file.
454
+ *
455
+ * FORMAT - may be set to OCLC, LC, or PC
456
+ *
457
+ * BLOCKSIZE - the length of each line in output file
458
+ *
459
+ * FIND_CAT - where part of find command for cat record
460
+ *
461
+ * FIND_COPY - where part of find command for copy record
462
+ *
463
+ * CATNO - a string of CATNO's to search on
464
+ *
465
+ * Valid Combinations:
466
+ * OUTPUT, FORMAT, and BLOCKSIZE are required.
467
+ * User may enter one of: FIND_CAT OR FIND_COPY OR CATNO
468
+ *
469
+ * Output File: marout01.rpt
470
+ * marout01.log
471
+ *
472
+ * Record Types Referenced:
473
+ * MARC
474
+ * Buffers: @A
475
+ *
476
+ * Report Name: MARC OUTPUT
477
+ *
478
+ * Report No.: MAROUT01
479
+ *
480
+ * Menu Access: CATRPT01
481
+ *
482
+ * Parameter
483
+ * Input Screen: MARRPT10
484
+ *
485
+ * Templates: none
486
+ *
487
+ *------------------------------------------------------------------------------
488
+ *
489
+ * Revision History:
490
+ *
491
+ * Date Revised By Description
492
+ * -------- ---------- -----------
493
+ * 04/25/90 Berger Initial version
494
+ * 04/26/90 Sandstrom Added PC format code
495
+ * 05/10/90 Sandstrom Added LC format code
496
+ * 05/11/90 Berger Revisions to FIND_CAT and FIND_COPY
497
+ * 07/03/91 MChung Substitute tabs with 8 spaces and
498
+ * spelling checks
499
+ * 12/02/91 Sandstrom Changed log file open to handle
500
+ * error if log file already exists.
501
+ *
502
+ *------------------------------------------------------------------------------
503
+ *
504
+ START:
505
+ ACQUIRE/PV MESSAGE 46707, C2=MSG
506
+ TELL MSG,$B
507
+ ON/BREAK BREAKERR
508
+ ON/EXCEPTION EXCEPTION
509
+ ON/SYNTAX SYNTAXERR
510
+ SET/DEFAULT RESULT = N
511
+ SET/PV LINE_CNT = 1
512
+ * Check for bad blocksize
513
+ IF BLOCKSIZE < 80
514
+ SET/PV BLOCKSIZE = 80
515
+ ELSE_IF BLOCKSIZE > 2048
516
+ SET/PV BLOCKSIZE = 2048
517
+ END_IF
518
+ * Set up for desired output method
519
+ SELECT (OUTPUT)
520
+ CASE 'REVIEW'
521
+ SET/PV BLOCKSIZE = 80
522
+ CASE 'PRINT'
523
+ OPEN/FILE marout01.rpt, FID=A, +
524
+ INTENT=WRITE,ERR=OPENERR, RECORDLC=!BLOCKSIZE!
525
+ SET/PV PV_FILEID = ',FID=A'
526
+ END_SELECT
527
+ *
528
+ * Construct find command for search on CAT record
529
+ *
530
+ IF FIND_CAT <> NULL
531
+ SET/PV PV_FINDCMD = 'FIND CAT,MARC ' //+
532
+ 'WHERE CAT.CATNO:=MARC.CATNO AND '
533
+ SET/PV FIND_CAT = $RAISE(FIND_CAT)
534
+ *
535
+ * Add CAT. to ambiguous fields in find command where it is not specified
536
+ *
537
+ SET/PV PV_ADD = $MATCH('ADD_DT',FIND_CAT)
538
+ SET/PV PV_EXISTS = $MATCH('.ADD_DT',FIND_CAT)
539
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
540
+ SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+
541
+ FIND_CAT[PV_ADD:*]
542
+ END_IF
543
+ *
544
+ SET/PV PV_ADD = $MATCH('CATNO',FIND_CAT)
545
+ SET/PV PV_EXISTS = $MATCH('.CATNO',FIND_CAT)
546
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
547
+ SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+
548
+ FIND_CAT[PV_ADD:*]
549
+ END_IF
550
+ *
551
+ SET/PV PV_ADD = $MATCH('REV_DT',FIND_CAT)
552
+ SET/PV PV_EXISTS = $MATCH('.REV_DT',FIND_CAT)
553
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
554
+ SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+
555
+ FIND_CAT[PV_ADD:*]
556
+ END_IF
557
+ *
558
+ SET/PV PV_ADD = $MATCH('REV_UID',FIND_CAT)
559
+ SET/PV PV_EXISTS = $MATCH('.REV_UID',FIND_CAT)
560
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
561
+ SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+
562
+ FIND_CAT[PV_ADD:*]
563
+ END_IF
564
+ * Append restrictive condition to find command
565
+ SET/PV PV_FINDCMD = PV_FINDCMD // FIND_CAT
566
+ *
567
+ * Construct find command for search on COPY record
568
+ *
569
+ ELSE_IF FIND_COPY <> NULL
570
+ SET/PV PV_FINDCMD = 'FIND COPY,MARC ' //+
571
+ 'WHERE COPY.CATNO:=MARC.CATNO AND '
572
+ SET/PV FIND_COPY = $RAISE(FIND_COPY)
573
+ *
574
+ * Add COPY. to ambiguous fields in find command where it is not specified
575
+ *
576
+ SET/PV PV_ADD = $MATCH('ADD_DT',FIND_COPY)
577
+ SET/PV PV_EXISTS = $MATCH('.ADD_DT',FIND_COPY)
578
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
579
+ SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+
580
+ FIND_COPY[PV_ADD:*]
581
+ END_IF
582
+ *
583
+ SET/PV PV_ADD = $MATCH('CATNO',FIND_COPY)
584
+ SET/PV PV_EXISTS = $MATCH('.CATNO',FIND_COPY)
585
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
586
+ SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+
587
+ FIND_COPY[PV_ADD:*]
588
+ END_IF
589
+ *
590
+ SET/PV PV_ADD = $MATCH('REV_DT',FIND_COPY)
591
+ SET/PV PV_EXISTS = $MATCH('.REV_DT',FIND_COPY)
592
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
593
+ SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+
594
+ FIND_COPY[PV_ADD:*]
595
+ END_IF
596
+ *
597
+ SET/PV PV_ADD = $MATCH('REV_UID',FIND_COPY)
598
+ SET/PV PV_EXISTS = $MATCH('.REV_UID',FIND_COPY)
599
+ IF (PV_ADD > 0) AND (PV_EXISTS = 0)
600
+ SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+
601
+ FIND_COPY[PV_ADD:*]
602
+ END_IF
603
+ * Append restrictive condition to find command
604
+ SET/PV PV_FINDCMD = PV_FINDCMD // FIND_COPY
605
+ *
606
+ * Construct find command for search on selected CATNO's
607
+ *
608
+ ELSE_IF CATNO <> NULL
609
+ SET/PV PV_FINDCMD = 'FIND MARC WHERE MARC.CATNO =' //!CATNO!
610
+ *
611
+ * Construct default find command for no selected search criteria
612
+ *
613
+ ELSE
614
+ SET/PV PV_FINDCMD = 'FIND MARC'
615
+ END_IF
616
+ *
617
+ * Add sort to the find command
618
+ *
619
+ SET/PV PV_FINDCMD = PV_FINDCMD // ' ORDER BY MARC.CATNO END REF=NO'
620
+ *
621
+ * Write find command to log file
622
+ *
623
+ * OPEN/FILE marout01.log,FID=B,INTENT=WRITE,CREATE=YES, +
624
+ * CARRIAGE=YES, ERR=OPENERR
625
+ * smls19911202 changed error branch on log file open to $continue
626
+ * and added test for dmstat.
627
+ OPEN/FILE marout01.log,FID=B,INTENT=WRITE,CREATE=YES, +
628
+ ERR=$CONTINUE
629
+ IF DMSTAT <> 0
630
+ OPEN/FILE marout01.log,FID=B,INTENT=UPDATE,ERR=OPENERR
631
+ END_IF
632
+ PUT/FILE ' Log File for MAROUT01',FID=B
633
+ PUT/FILE ' ---------------------',FID=B
634
+ PUT/FILE $S2,'FIND COMMAND',$B,'------------',FID=B
635
+ SET/PV PV_FINDLEN = $LC(PV_FINDCMD)
636
+ SET/PV PV_POINT = 1
637
+ WHILE (PV_POINT <= PV_FINDLEN)
638
+ PUT/FILE PV_FINDCMD[PV_POINT:(PV_POINT+79)],FID=B
639
+ SET/PV PV_POINT = PV_POINT + 80
640
+ END_WHILE
641
+ *
642
+ * Execute find, store members and set in variables
643
+ *
644
+ !PV_FINDCMD!,ERR=FNDERR
645
+ ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM
646
+ ACQUIRE/PV LASTSET, N1 = PV_SET
647
+ *
648
+ * Write members to log file and close file
649
+ *
650
+ PUT/FILE $S2,'NUMBER OF MEMBERS = ',PV_NUMMEM,FID=B
651
+ CLOSE/FILE FID=B
652
+ *
653
+ * Check for no hits
654
+ *
655
+ IF (PV_NUMMEM <= 0)
656
+ SHOW/MESSAGE 46705
657
+ JUMP CLEANUP
658
+ END_IF
659
+ *
660
+ * Type output for specified formats
661
+ *
662
+ SELECT (FORMAT)
663
+ CASE 'OCLC'
664
+ *
665
+ * Step through members of set, generating correct output for each.
666
+ *
667
+ FOR PV_MEM = 1, PV_NUMMEM
668
+ GET/VIEW[!PV_SET!,!PV_MEM!]MARC@A
669
+ ASSIGN/PV PV_OUTDATA = MARC_DATA@A
670
+ SET/PV PV_LENGTH = $LC(PV_OUTDATA)
671
+ SET/PV PV_POINT = 1
672
+ ****** Loop through printing one record at a time ******
673
+ WHILE (PV_POINT <= PV_LENGTH)
674
+ IF OUTPUT = 'REVIEW'
675
+ SET/PV LINE_CNT = LINE_CNT + 1
676
+ ******* Check for page break ********
677
+ IF LINE_CNT >= 20
678
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
679
+ INQUIRE/PV PV_QUIT, '!MSG!'
680
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
681
+ CLEAR/SCREEN
682
+ SET/PV LINE_CNT = 1
683
+ END_IF
684
+ TELL PV_OUTDATA[PV_POINT:(PV_POINT+BLOCKSIZE-1)]
685
+ ELSE
686
+ PUT/F PV_OUTDATA[PV_POINT:(PV_POINT+BLOCKSIZE-1)] +
687
+ ,FID=A
688
+ END_IF
689
+ SET/PV PV_POINT = PV_POINT + BLOCKSIZE
690
+ END_WHILE
691
+ END_FOR
692
+ *
693
+ CASE 'PC'
694
+ *
695
+ *
696
+ SET/PV PV_MEM = 1
697
+ SET/PV PV_POINT_OUT = 1
698
+ GETPC:
699
+ WHILE PV_MEM LE PV_NUMMEM
700
+ *
701
+ * Get record
702
+ *
703
+ GET/VIEW[!PV_SET!,!PV_MEM!]MARC@A
704
+ ASSIGN/PV PV_MARCDATA = MARC_DATA@A
705
+ SET/PV PV_MARCDATA = $TRIM (PV_MARCDATA)
706
+ SET/PV PV_MEM = PV_MEM + 1
707
+ SET/PV PV_LENGTH = PV_MARCDATA[1:5]
708
+ SET/PV PV_SEGLEN = PV_LENGTH
709
+ SET/PV PV_POINT_IN = 1
710
+ *
711
+ * Loop to build and write buffer
712
+ *
713
+ BLDPC:
714
+ *
715
+ * Record will begin and end in this block....
716
+ IF (PV_SEGLEN EQ PV_LENGTH) AND +
717
+ PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1) THEN
718
+ SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT+PV_SEGLEN-1]=+
719
+ PV_MARCDATA[1:PV_LENGTH]
720
+ SET/PV PV_POINT_OUT = PV_POINT_OUT + PV_SEGLEN
721
+ SET/PV PV_SEGLEN = 0
722
+ IF PV_POINT_OUT GT BLOCKSIZE THEN
723
+ SET/PV PV_POINT_OUT = 1
724
+ JUMP OUTPC
725
+ END_IF
726
+ JUMP GETPC
727
+ END_IF
728
+ * Record will begin but not end in this block....
729
+ IF (PV_SEGLEN EQ PV_LENGTH) AND +
730
+ PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1) THEN
731
+ SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = +
732
+ PV_MARCDATA[1:BLOCKSIZE-PV_POINT_OUT+1]
733
+ SET/PV PV_SEGLEN = PV_SEGLEN - (BLOCKSIZE-PV_POINT_OUT+1)
734
+ SET/PV PV_POINT_IN = PV_POINT_IN+BLOCKSIZE-PV_POINT_OUT+1
735
+ SET/PV PV_POINT_OUT = 1
736
+ JUMP OUTPC
737
+ END_IF
738
+ * Record will end but not begin in this block....
739
+ IF (PV_SEGLEN NE PV_LENGTH) AND +
740
+ PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1) THEN
741
+ SET/PV PV_BUFFER[PV_POINT_OUT:*] = +
742
+ PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+PV_SEGLEN-1]
743
+ SET/PV PV_POINT_OUT = PV_SEGLEN + 1
744
+ IF PV_POINT_OUT GT BLOCKSIZE THEN
745
+ SET/PV PV_POINT_OUT = 1
746
+ SET/PV PV_SEGLEN = 0
747
+ JUMP OUTPC
748
+ END_IF
749
+ JUMP GETPC
750
+ END_IF
751
+ * Record will not begin or end in this block....
752
+ IF (PV_SEGLEN NE PV_LENGTH) AND +
753
+ PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1) THEN
754
+ SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = +
755
+ PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+BLOCKSIZE-1]
756
+ SET/PV PV_SEGLEN = PV_SEGLEN - BLOCKSIZE
757
+ SET/PV PV_POINT_IN = PV_POINT_IN + BLOCKSIZE
758
+ JUMP OUTPC
759
+ END_IF
760
+ OUTPC:
761
+ IF OUTPUT = 'REVIEW'
762
+ SET/PV LINE_CNT = LINE_CNT + 1
763
+ ******* Check for page break ********
764
+ IF LINE_CNT >= 20
765
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
766
+ INQUIRE/PV PV_QUIT, '!MSG!'
767
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
768
+ CLEAR/SCREEN
769
+ SET/PV LINE_CNT = 1
770
+ END_IF
771
+ TELL PV_BUFFER[1:BLOCKSIZE]
772
+ ELSE
773
+ PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A
774
+ END_IF
775
+ *
776
+ IF PV_SEGLEN EQ 0 THEN
777
+ JUMP GETPC
778
+ ELSE
779
+ JUMP BLDPC
780
+ END_IF
781
+ END_WHILE
782
+ * "Put" last line
783
+ IF OUTPUT = 'REVIEW'
784
+ TELL PV_BUFFER[1:BLOCKSIZE]
785
+ ELSE
786
+ PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A
787
+ END_IF
788
+ *
789
+ *
790
+ CASE 'LC'
791
+ *
792
+ SET/PV PV_MEM = 1
793
+ SET/PV PV_POINT_OUT = 1
794
+ GETLC:
795
+ WHILE PV_MEM LE PV_NUMMEM
796
+ *
797
+ * Get record
798
+ *
799
+ GET/VIEW[!PV_SET!,!PV_MEM!]MARC@A
800
+ ASSIGN/PV PV_MARCDATA = MARC_DATA@A
801
+ SET/PV PV_MARCDATA = $TRIM (PV_MARCDATA)
802
+ SET/PV PV_MEM = PV_MEM + 1
803
+ SET/PV PV_LENGTH = PV_MARCDATA[1:5]
804
+ SET/PV PV_SEGLEN = PV_LENGTH
805
+ SET/PV PV_POINT_IN = 1
806
+ *
807
+ * Loop to build and write buffer
808
+ *
809
+ BLDLC:
810
+ *
811
+ * Record will begin and end in this block....0
812
+ IF (PV_SEGLEN EQ PV_LENGTH) AND +
813
+ PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN
814
+ * Set segment control word
815
+ SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '0'
816
+ SET/PV PV_SCW_I = PV_SEGLEN + 5
817
+ SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4)
818
+ SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = +
819
+ PV_SCW_S[1:4]
820
+ * Add record segment
821
+ SET/PV PV_POINT_OUT = PV_POINT_OUT + 5
822
+ SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT+PV_SEGLEN-1]=+
823
+ PV_MARCDATA[1:PV_LENGTH]
824
+ SET/PV PV_POINT_OUT = PV_POINT_OUT + PV_SEGLEN
825
+ SET/PV PV_SEGLEN = 0
826
+ IF PV_POINT_OUT GE (BLOCKSIZE-5) THEN
827
+ SET/PV PV_POINT_OUT = 1
828
+ JUMP OUTLC
829
+ END_IF
830
+ JUMP GETLC
831
+ END_IF
832
+ * Record will begin but not end in this block....1
833
+ IF (PV_SEGLEN EQ PV_LENGTH) AND +
834
+ PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN
835
+ * Set segment control word
836
+ SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '1'
837
+ SET/PV PV_SCW_I = BLOCKSIZE - PV_POINT_OUT + 1
838
+ SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4)
839
+ SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = +
840
+ PV_SCW_S[1:4]
841
+ * Add record segment
842
+ SET/PV PV_POINT_OUT = PV_POINT_OUT + 5
843
+ SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = +
844
+ PV_MARCDATA[1:BLOCKSIZE-PV_POINT_OUT+1]
845
+ SET/PV PV_SEGLEN = PV_SEGLEN - (BLOCKSIZE-PV_POINT_OUT+1)
846
+ SET/PV PV_POINT_IN = PV_POINT_IN+BLOCKSIZE-PV_POINT_OUT+1
847
+ SET/PV PV_POINT_OUT = 1
848
+ JUMP OUTLC
849
+ END_IF
850
+ * Record will end but not begin in this block....3
851
+ IF (PV_SEGLEN NE PV_LENGTH) AND +
852
+ PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN
853
+ * Set segment control word
854
+ SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '3'
855
+ SET/PV PV_SCW_I = PV_SEGLEN + 5
856
+ SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4)
857
+ SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = +
858
+ PV_SCW_S[1:4]
859
+ * Add record segment
860
+ SET/PV PV_POINT_OUT = PV_POINT_OUT + 5
861
+ SET/PV PV_BUFFER[PV_POINT_OUT:*] = +
862
+ PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+PV_SEGLEN-1]
863
+ SET/PV PV_POINT_OUT = PV_SEGLEN + 1 + 5
864
+ IF PV_POINT_OUT GE (BLOCKSIZE-5) THEN
865
+ SET/PV PV_POINT_OUT = 1
866
+ SET/PV PV_SEGLEN = 0
867
+ JUMP OUTLC
868
+ END_IF
869
+ JUMP GETLC
870
+ END_IF
871
+ * Record will not begin or end in this block....2
872
+ IF (PV_SEGLEN NE PV_LENGTH) AND +
873
+ PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN
874
+ * Set segment control word
875
+ SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '2'
876
+ SET/PV PV_SCW_I = BLOCKSIZE
877
+ SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4)
878
+ SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = +
879
+ PV_SCW_S[1:4]
880
+ * Add record segment
881
+ SET/PV PV_POINT_OUT = PV_POINT_OUT + 5
882
+ SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = +
883
+ PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+BLOCKSIZE-6]
884
+ SET/PV PV_SEGLEN = PV_SEGLEN - (BLOCKSIZE - 5)
885
+ SET/PV PV_POINT_IN = PV_POINT_IN + (BLOCKSIZE - 5)
886
+ SET/PV PV_POINT_OUT = 1
887
+ JUMP OUTLC
888
+ END_IF
889
+ OUTLC:
890
+ IF OUTPUT = 'REVIEW'
891
+ SET/PV LINE_CNT = LINE_CNT + 1
892
+ ******* Check for page break ********
893
+ IF LINE_CNT >= 20
894
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
895
+ INQUIRE/PV PV_QUIT, '!MSG!'
896
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
897
+ CLEAR/SCREEN
898
+ SET/PV LINE_CNT = 1
899
+ END_IF
900
+ TELL PV_BUFFER[1:BLOCKSIZE]
901
+ ELSE
902
+ PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A
903
+ END_IF
904
+ *
905
+ IF PV_SEGLEN EQ 0 THEN
906
+ JUMP GETLC
907
+ ELSE
908
+ JUMP BLDLC
909
+ END_IF
910
+ END_WHILE
911
+ * "Put" last line
912
+ IF OUTPUT = 'REVIEW'
913
+ TELL PV_BUFFER[1:BLOCKSIZE]
914
+ ELSE
915
+ PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A
916
+ END_IF
917
+ *
918
+ END_SELECT
919
+ *
920
+ * Cleanup - close files and discard result sets.
921
+ *
922
+ CLEANUP:
923
+ ACQUIRE/PV MESSAGE 46708, C2=MSG
924
+ TELL MSG
925
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
926
+ INQUIRE/PV DUMMY, '!MSG!'
927
+ QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET
928
+ IF (OUTPUT <> 'REVIEW')
929
+ CLOSE/F FID = A,ERR=$CONTINUE
930
+ END_IF
931
+ DISCARD !PV_SET!:!PV_LASTSET!
932
+ SET/DEF RESULT = Y
933
+ *
934
+ * DONE - successful report generation; return to caller
935
+ *
936
+ DONE:
937
+ RETURN_TO_SCREEN
938
+ *
939
+ * Error - inform user and close file, if necessary.
940
+ *
941
+ SYNTAXERR:
942
+ EXCEPTION:
943
+ OPENERR:
944
+ VIEWERR:
945
+ SHOW/MESSAGE !DMSTAT!
946
+ JUMP ERROR
947
+ FNDERR:
948
+ SHOW/MESSAGE 46702
949
+ JUMP ERROR
950
+ BREAKERR:
951
+ SHOW/MESSAGE 46700
952
+ ERROR:
953
+ SHOW/MESSAGE 46703
954
+ IF (OUTPUT <> 'REVIEW')
955
+ CLOSE/F FID = A,ERR=$CONTINUE
956
+ CLOSE/F FID = B,ERR=$CONTINUE
957
+ END_IF
958
+ SET/DEF RESULT = Y
959
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
960
+ INQUIRE/PV DUMMY, '!MSG!'
961
+ RETURN_TO_SCREEN
962
+ *PROC MRT
963
+ tell 'TLP ENU 920430 L1F P004 TLPV3.3'
964
+ return
965
+ *PROC NWBLST01
966
+ *-----------------------------------------------------------------------------
967
+ *
968
+ * Title: New Books List
969
+ * File: NWBLST01.PRC
970
+ * Author: Information Dimensions, Inc. (HB)
971
+ *
972
+ * Description: List of Titles newly received in the library
973
+ *
974
+ * Input Parameters:
975
+ * OUTPUT - may be 'REVIEW','PRINT'. Review displays report
976
+ * on screen, print outputs to file for printing.
977
+ *
978
+ * START_DT/END_DT - find where COPY.ADD_DT is in range
979
+ *
980
+ * SUBJECT - restrict to certain CAT.SUBJs
981
+ *
982
+ * SORT_KEY - option to sort by title or subject
983
+ *
984
+ * MONTH_YEAR - Inputted month and year for heading
985
+ *
986
+ * LOGIN_LIBR - User's login library
987
+ *
988
+ * Other Selection Criteria:
989
+ * LIBR_KEY - Restrict to certain libraries.
990
+ *
991
+ * ALL - Boolean value; set true by Slang if no params entered
992
+ *
993
+ * Valid Combinations:
994
+ * Presence or absence of SUBJECT. Subject must be present for
995
+ * sort_key = 'SUBJECT'. All other parameters are required to
996
+ * be inputted to the proc.
997
+ *
998
+ * Output File: nwblst01.rpt
999
+ *
1000
+ * Record Types Referenced:
1001
+ * TEMPLATE, LIBR, COPY, CATR, SUB
1002
+ * Buffers: @A @B @C @D
1003
+ *
1004
+ * Report Name: New Books List
1005
+ *
1006
+ * Report No.: NWBLST01
1007
+ *
1008
+ * Menu Access: ???
1009
+ *
1010
+ * Parameter
1011
+ * Input Screen: CATRPT10
1012
+ *
1013
+ * Templates: REPORT_HDR, UNION_CAT, COPY_NEWBOOK
1014
+ *
1015
+ *------------------------------------------------------------------------------
1016
+ *
1017
+ * Revision History:
1018
+ *
1019
+ * Date Revised By Description
1020
+ * -------- ---------- -----------
1021
+ * 11/16/89 Berger Initial version
1022
+ * 09/27/90 Berger Fix paging problem, problem with type
1023
+ * 01/07/91 Sandstrom 20 libs fix
1024
+ * 05/08/91 Sandstrom Moved file opens and template gets
1025
+ * to be after the find command.
1026
+ * 07/03/91 MChung Substitute tabs with 8 spaces and
1027
+ * spelling check
1028
+ *
1029
+ *------------------------------------------------------------------------------
1030
+ *
1031
+ START:
1032
+ ACQUIRE/PV MESSAGE 46707, C2=MSG
1033
+ TELL MSG,$B
1034
+ ON/BREAK BREAKERR
1035
+ ON/EXCEPTION EXCEPTION
1036
+ ON/SYNTAX SYNTAXERR
1037
+ SET/DEFAULT RESULT = N
1038
+ SET/PV PV_TODAY = $YYYYMMDD
1039
+ SET/PV PRINTTOP = 1
1040
+ SET/PV RPTNM = 'NWBLST01'
1041
+ SET/PV RPTTTL = 'New Books list for '// MONTH_YEAR
1042
+ SET/PV PGNO = 0
1043
+ *
1044
+ *set/mode echoproc=yes
1045
+ * Begin construction of FIND command.
1046
+ *
1047
+ * 910107smls added 20 libs fix
1048
+ DELETE/GV OUTSTR
1049
+ DELETE/GV OUTLC
1050
+ DELETE/GV INSTR
1051
+ SET/GV INSTR = LIBR_KEY
1052
+ @/PL='$TLP_PROC/generpts' QTBLKS01, VFLDNM='COPY.LIBR_KEY'
1053
+ SET/PV PV_FINDCMD = 'FIND SUB,RCAT,COPY,LIBR ' //+
1054
+ 'WHERE RCAT.CATNO:=>>SUB.CATNO ' //+
1055
+ 'AND RCAT.CATNO:=>>COPY.CATNO ' //+
1056
+ 'AND LIBR.LIBR_KEY:=COPY.LIBR_KEY ' //+
1057
+ ' AND ((RCAT.ADD_DT = '//START_DT//':'//END_DT// +
1058
+ ' ) '// +
1059
+ 'OR (SUB.ADD_DT = '//START_DT//':'//END_DT// +
1060
+ ' AND DOC inc ''SER''* AND RNUM=0)) '
1061
+ *
1062
+ * Append FIND command based on options.
1063
+ *
1064
+ * IF (SUBJECT <> '')
1065
+ * SET/PV PV_FINDCMD = PV_FINDCMD //+
1066
+ * 'AND RCAT.SHELF INC ' // SUBJECT
1067
+ * END_IF
1068
+ *
1069
+ * Append FIND for sort options.
1070
+ *
1071
+ * Removed copy.libr_key from order by
1072
+ * SET/PV PV_FINDCMD = PV_FINDCMD //+
1073
+ * ' ORDER BY !SORT_KEY! RCAT.TI, RCAT.PUBL, ' //+
1074
+ * 'COPY.YEAR, COPY.ITEMID, COPY.COPY'
1075
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
1076
+ ' ORDER BY rcat.shelf'
1077
+ *
1078
+ * Execute Find and set up for report generation
1079
+ *
1080
+ !PV_FINDCMD! END REF=NO
1081
+ ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM
1082
+ ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET
1083
+ IF (PV_NUMMEM <= 0)
1084
+ SHOW/MESSAGE 46705
1085
+ JUMP CLEANUP
1086
+ END_IF
1087
+ * smls 910508 moved this to be after the FIND command.
1088
+ * Set up for desired output method
1089
+ SELECT (OUTPUT)
1090
+ CASE 'REVIEW'
1091
+ SET/PV MAXLINES = 20
1092
+ SET/PV PV_FILEID = ''
1093
+ CASE 'PRINT'
1094
+ SET/PV MAXLINES = 60
1095
+ spawn rm -f nwblst01.rpt
1096
+ OPEN/F nwblst01.rpt, FID=A, INTENT=WRITE,ERR=OPENERR
1097
+ put/f fid=a $t20,rptttl
1098
+ SET/PV PV_FILEID = ',FID=A'
1099
+ END_SELECT
1100
+ *
1101
+ * GET/VIEW [TEMPLATE_KEY = 'REPORT_HDR']TEMPLATE@A, ERR = VIEWERR
1102
+ * ASSIGN/PV HEADER = TEXT@A
1103
+ GET/VIEW [TEMPLATE_KEY = 'UNION_CAT']TEMPLATE@A, ERR = VIEWERR
1104
+ ASSIGN/PV CATINFO = TEXT@A
1105
+ * GET/VIEW [TEMPLATE_KEY = 'COPY_NEWBOOK']TEMPLATE@A, ERR = VIEWERR
1106
+ * ASSIGN/PV COPYINFO = TEXT@A
1107
+ *
1108
+ * Step through members of set, generating correct output for each.
1109
+ FOR PV_Q = 1, PV_NUMMEM
1110
+ *
1111
+ GET/VIEW [!PV_FOUNDSET!,!PV_Q!]LIBR@B, ERR = VIEWERR
1112
+ ASSIGN/PV LIBR_NAME = LIBR_NAME@B
1113
+ ASSIGN/PV LOC_NAME = LOC_NAME@B
1114
+ ASSIGN/PV CALLOC = CALL_NUM_LOC@B
1115
+ IF CALLOC = 'CAT' OR CALLOC = NULL THEN
1116
+ SET/PV CALLOC = 'RCAT'
1117
+ END_IF
1118
+ *
1119
+ * Generate report header, then data for each item
1120
+ *
1121
+ * IF LIBR_NAME <> PV_OLD_LIBR_NAME OR PV_Q = 1
1122
+ IF PV_Q = 1
1123
+ IF OUTPUT = 'REVIEW'
1124
+ IF PV_Q <> 1
1125
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
1126
+ INQUIRE/PV PV_QUIT, '!MSG!'
1127
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
1128
+ END_IF
1129
+ CLEAR/SCREEN
1130
+ SET/PV LINE_CNT = 2
1131
+ * ELSE_IF PV_Q <> 1
1132
+ * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
1133
+ END_IF
1134
+ *
1135
+ SET/PV PGNO = 1
1136
+ * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
1137
+ * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
1138
+ SET/PV LINE_CNT = 1
1139
+ END_IF
1140
+ SET/PV PV_OLD_LIBR_NAME = LIBR_NAME
1141
+ *
1142
+ * Check for new Subject (if subject is entered)
1143
+ *
1144
+ IF SUBJECT <> ''
1145
+ GET/VIEW [PV_FOUNDSET,PV_Q]RCAT@D,ERR=VIEWERR
1146
+ ASSIGN/PV PV_CURSUBJ = SUBJ@D
1147
+ IF PV_CURSUBJ <> PV_OLDSUBJ
1148
+ SET/PV PV_OLDSUBJ = PV_CURSUBJ
1149
+ * Check for page break
1150
+ SET/PV LINE_CNT = LINE_CNT + 2
1151
+ IF LINE_CNT > MAXLINES
1152
+ IF OUTPUT = 'REVIEW'
1153
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
1154
+ INQUIRE/PV PV_QUIT, '!MSG!'
1155
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
1156
+ CLEAR/SCREEN
1157
+ SET/PV LINE_CNT = 2
1158
+ ELSE
1159
+ * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
1160
+ SET/PV PGNO = PGNO + 1
1161
+ * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
1162
+ * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
1163
+ SET/PV LINE_CNT =1
1164
+ END_IF
1165
+ END_IF
1166
+ * TYPE $S2, RCAT.SUBJ, LABELS = N, SKIP = 0, +
1167
+ * SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID!
1168
+ END_IF
1169
+ END_IF
1170
+ *
1171
+ GET/VIEW [PV_FOUNDSET,PV_Q]COPY@C, ERR = VIEWERR
1172
+ ASSIGN/PV PV_CURCATNO = CATNO@C
1173
+ IF PV_CURCATNO = NULL
1174
+ GET/VIEW [PV_FOUNDSET,PV_Q]RCAT@D, ERR = VIEWERR
1175
+ ASSIGN/PV PV_CURCATNO = CATNO@D
1176
+ END_IF
1177
+ ASSIGN/PV PV_CURITEMID = ITEMID@C
1178
+ * If new catno, print catalog info
1179
+ IF (PV_CURCATNO <> PV_LSTCATNO)
1180
+ SET/PV LINE_CNT = LINE_CNT + 7
1181
+ * Check for page break
1182
+ IF LINE_CNT > MAXLINES
1183
+ IF OUTPUT = 'REVIEW'
1184
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
1185
+ INQUIRE/PV PV_QUIT, '!MSG!'
1186
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
1187
+ CLEAR/SCREEN
1188
+ SET/PV LINE_CNT = 2
1189
+ ELSE
1190
+ * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
1191
+ SET/PV PGNO = PGNO + 1
1192
+ * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
1193
+ * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
1194
+ SET/PV LINE_CNT = 1
1195
+ END_IF
1196
+ END_IF
1197
+ TYPE $S2, !CATINFO!, LABELS = N, SKIP = 0, +
1198
+ SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID!
1199
+ SET/PV PV_LSTCATNO = PV_CURCATNO
1200
+ set/pv line_cnt=line_cnt+dm_lines
1201
+ END_IF
1202
+ * Aviod duplicates from FIND command
1203
+ IF (PV_CURITEMID <> PV_LSTITEMID)
1204
+ SET/PV LINE_CNT = LINE_CNT + 1
1205
+ * Check for page break
1206
+ IF LINE_CNT > MAXLINES
1207
+ IF OUTPUT = 'REVIEW'
1208
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
1209
+ INQUIRE/PV PV_QUIT, '!MSG!'
1210
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
1211
+ CLEAR/SCREEN
1212
+ SET/PV LINE_CNT = 2
1213
+ ELSE
1214
+ * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID!
1215
+ SET/PV PGNO = PGNO + 1
1216
+ * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, +
1217
+ * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID!
1218
+ SET/PV LINE_CNT = 1
1219
+ END_IF
1220
+ END_IF
1221
+ TYPE !COPYINFO!, LABELS = N, SKIP = 0, +
1222
+ SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID!
1223
+ SET/PV PV_LSTITEMID = PV_CURITEMID
1224
+ set/pv line_cnt=line_cnt+dm_lines
1225
+ END_IF
1226
+ *
1227
+ END_FOR
1228
+ *
1229
+ * Cleanup - close files and discard result sets.
1230
+ *
1231
+ CLEANUP:
1232
+ ACQUIRE/PV MESSAGE 46708, C2=MSG
1233
+ TELL MSG
1234
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
1235
+ INQUIRE/PV DUMMY, '!MSG!'
1236
+ QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET
1237
+ IF (OUTPUT <> 'REVIEW')
1238
+ CLOSE/F FID = A,ERR=$CONTINUE
1239
+ END_IF
1240
+ DISCARD !PV_FOUNDSET!:!PV_LASTSET!
1241
+ SET/DEF RESULT = Y
1242
+ *
1243
+ * DONE - successful report generation; return to caller
1244
+ *
1245
+ DONE:
1246
+ RETURN_TO_SCREEN
1247
+ *
1248
+ * Error - inform user and close file, if necessary.
1249
+ *
1250
+ SYNTAXERR:
1251
+ EXCEPTION:
1252
+ OPENERR:
1253
+ VIEWERR:
1254
+ SHOW/MESSAGE !DMSTAT!
1255
+ JUMP ERROR
1256
+ BREAKERR:
1257
+ SHOW/MESSAGE 46700
1258
+ ERROR:
1259
+ SHOW/MESSAGE 46703
1260
+ IF (OUTPUT <> 'REVIEW')
1261
+ CLOSE/F FID = A,ERR=$CONTINUE
1262
+ END_IF
1263
+ SET/DEF RESULT = Y
1264
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
1265
+ INQUIRE/PV DUMMY, '!MSG!'
1266
+ RETURN_TO_SCREEN
1267
+ *PROC QTBLKS01
1268
+ *-----------------------------------------------------------------------------
1269
+ *
1270
+ * Title: Build Library Key String
1271
+ * File: QTBLKS01
1272
+ * Author: Information Dimensions, Inc. (BB/SMLS)
1273
+ *
1274
+ * Description: This proc is called to build a string of library keys that
1275
+ * can be used within a find command. This routine handles the
1276
+ * >20 terms/field limit.
1277
+ *
1278
+ * Directions:
1279
+ *
1280
+ * Input:
1281
+ * Passed as a global variable:
1282
+ * INSTR[*] - Input character string that contains the list of
1283
+ * library keys with single quotes around each key.
1284
+ * Multiple keys are separated by commas.
1285
+ * Passed on call:
1286
+ * VFLDNM[*] - Contains the name of the view field with a source
1287
+ * of the library key to be used in the find command.
1288
+ * Output:
1289
+ * The following global variables are set:
1290
+ * OUTSTR[*] - The product of this routine, the field test.
1291
+ * OUTLC - The length of the field test value.
1292
+ * BSTAT - Return status....0=ok, -1=error.
1293
+ *
1294
+ *------------------------------------------------------------------------------
1295
+ *
1296
+ * Revision History:
1297
+ *
1298
+ * Date Revised By Description
1299
+ * -------- ---------- -----------
1300
+ * 12/20/90 Beaber Initial Version
1301
+ * 01/03/91 Sandstrom Revisions
1302
+ * 07/08/91 MChung Substitute tabs with 8 spaces &
1303
+ * spelling checks
1304
+ *
1305
+ *------------------------------------------------------------------------------
1306
+ *
1307
+ *
1308
+ * Initialize variables.
1309
+ *
1310
+ SET/PV VFNSC = 1
1311
+ SET/PV VFNEC = $LC(VFLDNM)
1312
+ SET/PV INEC = $LC(INSTR)
1313
+ SET/PV INSC = 1
1314
+ SET/PV OUTSC = 1
1315
+ SET/PV SC = 1
1316
+ SET/PV SC20 = 1
1317
+ SET/PV COUNT = 0
1318
+ SET/GV BSTAT = 0
1319
+ *
1320
+ * Begin building output string by adding on '(', field name, '='.
1321
+ *
1322
+ SET/GV OUTSTR[*] = '(' // VFLDNM[VFNSC:VFNEC] // '='
1323
+ SET/PV OUTSC = OUTSC + VFNEC - VFNSC + 4
1324
+ *
1325
+ * Loop through input string searching for commas.
1326
+ *
1327
+ SET/PV COMMA = $MATCH(',',INSTR[SC:INEC])
1328
+ WHILE (COMMA NE 0)
1329
+ SET/PV COUNT = COUNT + 1
1330
+ *
1331
+ * Continue building the string as every 20th comma is found.
1332
+ *
1333
+ IF ($MOD(COUNT,20) EQ 0) THEN
1334
+ *
1335
+ * Add on "OR Field_name=", if necessary.
1336
+ *
1337
+ IF (OUTSTR[OUTSC-2] <> '=') THEN
1338
+ SET/GV OUTSTR[OUTSC+1:OUTSC+VFNEC-VFNSC+7] = +
1339
+ ' OR ' // VFLDNM[VFNSC:VFNEC] // '='
1340
+ SET/PV OUTSC = OUTSC + VFNEC - VFNSC + 7
1341
+ END_IF
1342
+ *
1343
+ * Add on next 20 keys.
1344
+ *
1345
+ IF SC20 = INSC THEN
1346
+ SET/GV OUTSTR[OUTSC:OUTSC+SC+COMMA-SC20-2] = +
1347
+ INSTR[SC20:SC+COMMA-2]
1348
+ ELSE
1349
+ SET/GV OUTSTR[OUTSC:OUTSC+SC+COMMA-SC20-2] = +
1350
+ INSTR[SC20+1:SC+COMMA-2]
1351
+ END_IF
1352
+ *
1353
+ * Increment index (SC) and continue looking for commas.
1354
+ *
1355
+ SET/PV OUTSC = OUTSC + SC + COMMA - SC20 - 2
1356
+ SET/PV SC20 = SC + COMMA
1357
+ END_IF
1358
+ *
1359
+ * Increment index (SC) and continue looking for commas.
1360
+ *
1361
+ SET/PV SC = SC + COMMA
1362
+ BREAK_IF (SC GT INEC)
1363
+ SET/PV COMMA = $MATCH(',',INSTR[SC:INEC])
1364
+ END_WHILE
1365
+ *
1366
+ * Add on "OR Field_name=", if necessary.
1367
+ *
1368
+ IF (OUTSTR[OUTSC-2] <> '=') THEN
1369
+ SET/GV OUTSTR[OUTSC+1:OUTSC+VFNEC-VFNSC+7] = +
1370
+ ' OR ' // VFLDNM[VFNSC:VFNEC] // '='
1371
+ SET/PV OUTSC = OUTSC + VFNEC - VFNSC + 7
1372
+ END_IF
1373
+ *
1374
+ * Add on last set of characters.
1375
+ *
1376
+ SET/PV OUTEC = OUTSC + INEC - SC20 + 2
1377
+ SET/GV OUTSTR[OUTSC:OUTEC] = INSTR[SC20:INEC] // ')'
1378
+ *
1379
+ SET/GV OUTLC = OUTEC
1380
+ RETURN
1381
+ *PROC SPILAB01
1382
+ *-----------------------------------------------------------------------------
1383
+ *
1384
+ * Title: Spine Labels
1385
+ * File: SPILAB01.PRC
1386
+ * Author: Information Dimensions, Inc. (HB)
1387
+ *
1388
+ * Description: Spine labels for cataloged books
1389
+ *
1390
+ * Input Parameters:
1391
+ * OUTPUT - may be 'REVIEW','PRINT'. Review displays report
1392
+ * on screen, print outputs to file for printing.
1393
+ *
1394
+ * START_DT/END_DT - find where COPY.ADD_DT is in range
1395
+ *
1396
+ * CALL - restrict to certain CATR.CALLs
1397
+ *
1398
+ * ITEMID - restrict to certain COPY.ITEMIDs
1399
+ *
1400
+ * LOGIN_LIBR - User's login library
1401
+ *
1402
+ * Other Selection Criteria:
1403
+ * LIBR_KEY - Restrict to certain libraries.
1404
+ *
1405
+ * ALL - Boolean value; set true by Slang if no params entered
1406
+ *
1407
+ * Valid Combinations:
1408
+ * START AND END DT REQUIRED. CALL and ITEMID are optional.
1409
+ *
1410
+ * Output File: spilab01.rpt
1411
+ *
1412
+ * Record Types Referenced:
1413
+ * TEMPLATE, LIBR, SYS_PARM, COPY, CATR, SUB
1414
+ * Buffers: @A @C @B @E @D
1415
+ *
1416
+ * Report Name: Spine Labels
1417
+ *
1418
+ * Report No.: SPILAB01
1419
+ *
1420
+ * Menu Access: ???
1421
+ *
1422
+ * Parameter
1423
+ * Input Screen: CATRPT11
1424
+ *
1425
+ * Templates:
1426
+ *
1427
+ *------------------------------------------------------------------------------
1428
+ *
1429
+ * Revision History:
1430
+ *
1431
+ * Date Revised By Description
1432
+ * -------- ---------- -----------
1433
+ * 10/16/89 Berger Initial version
1434
+ * 11/14/90 Berger Fixed bug in dewey form on the
1435
+ * line counter
1436
+ * 01/07/91 Sandstrom 20 libs fix
1437
+ * 05/08/91 Sandstrom Moved file opens and template gets to
1438
+ * after the find command.
1439
+ * 07/03/91 MChung Substitute tabs with 8 spaces and
1440
+ * spelling check
1441
+ * 04/14/92 Sandstrom Fix for TLP-1291-7. Output for
1442
+ * call number was not correct.
1443
+ *
1444
+ *------------------------------------------------------------------------------
1445
+ *
1446
+ START:
1447
+ ACQUIRE/PV MESSAGE 46707, C2=MSG
1448
+ TELL MSG,$B
1449
+ ON/BREAK BREAKERR
1450
+ ON/EXCEPTION EXCEPTION
1451
+ ON/SYNTAX SYNTAXERR
1452
+ SET/DEFAULT RESULT = N
1453
+ SET/PV PV_TODAY = $YYYYMMDD
1454
+ *
1455
+ * Begin construction of FIND command.
1456
+ *
1457
+ * 910107smls added 20 libs fix
1458
+ DELETE/GV OUTSTR
1459
+ DELETE/GV OUTLC
1460
+ DELETE/GV INSTR
1461
+ SET/GV INSTR = LIBR_KEY
1462
+ @/PL='$TLP_PROC/generpts' QTBLKS01, VFLDNM='COPY.LIBR_KEY'
1463
+ SET/PV PV_FINDCMD = 'FIND CATR,COPY,LIBR ' //+
1464
+ 'WHERE COPY.CATNO:=CATR.CATNO ' //+
1465
+ 'AND LIBR.LIBR_KEY:=COPY.LIBR_KEY AND ' //+
1466
+ OUTSTR[1:OUTLC]//' '
1467
+ IF START_DT <> '' THEN
1468
+ SET/PV PV_FINDCMD = PV_FINDCMD//+
1469
+ 'AND COPY.ADD_DT = '//START_DT//':'//END_DT//' '
1470
+ END_IF
1471
+ *
1472
+ GET/VIEW [ID=1]SYS_PARM@B,ERR=VIEWERR
1473
+ ASSIGN/PV RPT_MULT_ENT = RPT_MULT_ENTITY@B
1474
+ ASSIGN/PV COPY_RPT_SORT = COPY_RPT_SORT@B
1475
+ GET/VIEW[LIBR_KEY=!LOGIN_LIBR!]LIBR@C,ERR=VIEWERR
1476
+ ASSIGN/PV CALLOC = CALL_NUM_LOC@C
1477
+ IF CALLOC = 'CAT' OR CALLOC = NULL
1478
+ SET/PV CALLOC = 'CATR'
1479
+ END_IF
1480
+ *
1481
+ * Append FIND command based on options.
1482
+ *
1483
+ IF (ITEMID <> '')
1484
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
1485
+ 'AND COPY.ITEMID = ' // ITEMID
1486
+ ELSE_IF (CALL <> '')
1487
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
1488
+ 'AND !CALLOC!.CALL = ' // CALL
1489
+ END_IF
1490
+ *
1491
+ * Build sortkey to reflect correct call no. field, depending on
1492
+ * SYS_PARM and LIBR flags
1493
+ *
1494
+ GET/VIEW [ID=1]SYS_PARM@B,ERR=VIEWERR
1495
+ ASSIGN/PV RPT_MULT_ENT = RPT_MULT_ENTITY@B
1496
+ ASSIGN/PV COPY_RPT_SORT = COPY_RPT_SORT@B
1497
+ IF (RPT_MULT_ENTITY = 'N')
1498
+ ASSIGN/PV CAT_LC = CAT_LC_FLG@B
1499
+ IF (CAT_LC = 'Y')
1500
+ SET/PV LCADD = '_LC_SORT'
1501
+ ELSE
1502
+ SET/PV CATRADD = '(1)'
1503
+ END_IF
1504
+ ELSE
1505
+ GET/VIEW[LIBR_KEY=!LOGIN_LIBR!]LIBR@C,ERR=VIEWERR
1506
+ ASSIGN/PV CAT_LC = CAT_LC_FLG@C
1507
+ ASSIGN/PV COPY_LC = COPY_LC_FLG@C
1508
+ IF (CALLOC = 'CATR') AND (CAT_LC = 'Y')
1509
+ SET/PV LCADD = '_LC_SORT'
1510
+ SET/PV CATRADD = ''
1511
+ ELSE_IF (CALLOC = 'CATR')
1512
+ SET/PV LCADD = ''
1513
+ SET/PV CATRADD = '(1)'
1514
+ ELSE_IF (CALLOC = 'COPY') AND (COPY_LC = 'Y')
1515
+ SET/PV LCADD = '_LC_SORT'
1516
+ SET/PV CATRADD = ''
1517
+ ELSE
1518
+ SET/PV LCADD = ''
1519
+ SET/PV CATRADD = ''
1520
+ END_IF
1521
+ END_IF
1522
+ SET/PV SORTKEY = '!CALLOC!.CALL!LCADD!' // '!CATRADD!'
1523
+ *
1524
+ SET/PV PV_FINDCMD = PV_FINDCMD //+
1525
+ ' ORDER BY COPY.LIBR_KEY, !SORTKEY! '
1526
+ IF (COPY_RPT_SORT <> '')
1527
+ SET/PV PV_FINDCMD = PV_FINDCMD // ', !COPY_RPT_SORT! '
1528
+ END_IF
1529
+ *
1530
+ * Execute Find and set up for report generation
1531
+ *
1532
+ !PV_FINDCMD! END REF=NO
1533
+ ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM
1534
+ ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET
1535
+ IF (PV_NUMMEM <= 0)
1536
+ SHOW/MESSAGE 46705
1537
+ JUMP CLEANUP
1538
+ END_IF
1539
+ * smls moved file opens and template get.
1540
+ * Set up for desired output method
1541
+ SELECT (OUTPUT)
1542
+ CASE 'REVIEW'
1543
+ SET/PV PV_FILEID = ''
1544
+ CASE 'PRINT'
1545
+ OPEN/F spilab01.rpt, FID=A, INTENT=WRITE, +
1546
+ CARRIAGE=YES, ERR=OPENERR
1547
+ SET/PV PV_FILEID = ',FID=A'
1548
+ END_SELECT
1549
+ *
1550
+ GET/VIEW [TEMPLATE_KEY = 'SPINE_LABEL']TEMPLATE@A, ERR = VIEWERR
1551
+ ASSIGN/PV PV_SPINE_LABEL = TEXT@A
1552
+ * Step through members of set, generating correct output for each.
1553
+ FOR PV_Q = 1, PV_NUMMEM
1554
+ *
1555
+ * get calloc
1556
+ *
1557
+ GET/VIEW [PV_FOUNDSET,PV_Q]LIBR@C, ERR=VIEWERR
1558
+ ASSIGN/PV CALLOC = CALL_NUM_LOC@C
1559
+ IF CALLOC = 'CAT' OR CALLOC = NULL THEN
1560
+ SET/PV CALLOC = 'CATR'
1561
+ END_IF
1562
+ *
1563
+ * Parse the Call Number to print it in the template
1564
+ *
1565
+ IF CALLOC = 'CATR'
1566
+ GET/VIEW [PV_FOUNDSET,PV_Q]CATR@D,ERR=VIEWERR
1567
+ ASSIGN/PV PV_CALL = CALL@D
1568
+ ELSE
1569
+ GET/VIEW [PV_FOUNDSET,PV_Q]COPY@E,ERR=VIEWERR
1570
+ * smls19920414 changed field name being assigned to PV_CALL
1571
+ * from ASSIGN/PV PV_CALL = COPY@E to
1572
+ ASSIGN/PV PV_CALL = CALL@E
1573
+ END_IF
1574
+ SET/PV LENGTH = $LC(PV_CALL)
1575
+ SET/PV LINENUM = 1
1576
+ * Reset temp variables to give to template
1577
+ FOR I = 1,9
1578
+ SET/PV LINE!I! = ''
1579
+ END_FOR
1580
+ *
1581
+ * Parse LC call numbers
1582
+ *
1583
+ * smls19920414 added reference to COPY_LC.
1584
+ * Old IF was: IF CAT_LC = 'Y'
1585
+ IF (CALLOC = 'CATR' AND CAT_LC = 'Y') +
1586
+ OR (CALLOC = 'COPY' AND COPY_LC = 'Y') THEN
1587
+ FOR PV_P = 1,LENGTH
1588
+ SET/PV PV_CHAR = PV_CALL[PV_P]
1589
+ IF PV_P <> LENGTH
1590
+ SET/PV PV_Z = PV_P + 1
1591
+ SET/PV PV_NEXT = PV_CALL[PV_Z]
1592
+ ELSE
1593
+ SET/PV PV_NEXT = ' '
1594
+ END_IF
1595
+ SELECT LINENUM
1596
+ CASE 1
1597
+ * Check for letter
1598
+ IF $ABS(PV_CHAR) = 0 AND PV_CHAR <> '0'
1599
+ SET/PV LINE1 = LINE1 // PV_CHAR
1600
+ ELSE
1601
+ SET/PV LINE2 = PV_CHAR
1602
+ SET/PV LINENUM = 2
1603
+ END_IF
1604
+ CASE 2
1605
+ * Check for period followed by a letter
1606
+ IF PV_CHAR = '.' AND $ABS(PV_NEXT) = 0 AND +
1607
+ PV_NEXT <> '0'
1608
+ SET/PV LINENUM = 3
1609
+ ELSE
1610
+ SET/PV LINE2 = LINE2 // PV_CHAR
1611
+ END_IF
1612
+ DEFAULT
1613
+ SET/PV LINE!LINENUM! = LINE!LINENUM! // PV_CHAR
1614
+ * Check for a space or next character to be a letter
1615
+ IF ($ABS(PV_NEXT) = 0 AND PV_NEXT <> '0')
1616
+ SET/PV LINENUM = LINENUM + 1
1617
+ END_IF
1618
+ END_SELECT
1619
+ END_FOR
1620
+ *
1621
+ * Parse Dewey call numbers
1622
+ *
1623
+ ELSE
1624
+ FOR PV_P = 1,LENGTH
1625
+ SET/PV PV_CHAR = PV_CALL[PV_P]
1626
+ SELECT LINENUM
1627
+ CASE 1
1628
+ * Break on period
1629
+ IF PV_CHAR = '.'
1630
+ SET/PV LINENUM = 2
1631
+ END_IF
1632
+ SET/PV LINE!LINENUM! = LINE!LINENUM! // PV_CHAR
1633
+ DEFAULT
1634
+ SET/PV LINE!LINENUM! = LINE!LINENUM! // PV_CHAR
1635
+ * Break on spaces
1636
+ IF PV_CHAR = ' '
1637
+ SET/PV LINENUM = LINENUM + 1
1638
+ END_IF
1639
+ END_SELECT
1640
+ END_FOR
1641
+ END_IF
1642
+ * Type the Spine Label
1643
+ TYPE !PV_SPINE_LABEL!, SKIP=0, +
1644
+ SET=!PV_FOUNDSET!,MEMBERS=!PV_Q! !PV_FILEID!
1645
+ IF OUTPUT = 'REVIEW'
1646
+ ACQUIRE/PV MESSAGE 46710, C2=MSG
1647
+ INQUIRE/PV PV_QUIT, '!MSG!'
1648
+ JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT
1649
+ CLEAR/SCREEN
1650
+ END_IF
1651
+
1652
+ END_FOR
1653
+ *
1654
+ * Cleanup - close files and discard result sets.
1655
+ *
1656
+ CLEANUP:
1657
+ ACQUIRE/PV MESSAGE 46708, C2=MSG
1658
+ TELL MSG
1659
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
1660
+ INQUIRE/PV DUMMY, '!MSG!'
1661
+ QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET
1662
+ IF (OUTPUT <> 'REVIEW')
1663
+ CLOSE/F FID = A,ERR=$CONTINUE
1664
+ END_IF
1665
+ DISCARD !PV_FOUNDSET!:!PV_LASTSET!
1666
+ SET/DEF RESULT = Y
1667
+ *
1668
+ * DONE - successful report generation; return to caller
1669
+ *
1670
+ DONE:
1671
+ RETURN_TO_SCREEN
1672
+ *
1673
+ * Error - inform user and close file, if necessary.
1674
+ *
1675
+ SYNTAXERR:
1676
+ EXCEPTION:
1677
+ OPENERR:
1678
+ VIEWERR:
1679
+ SHOW/MESSAGE !DMSTAT!
1680
+ JUMP ERROR
1681
+ BREAKERR:
1682
+ SHOW/MESSAGE 46700
1683
+ ERROR:
1684
+ SHOW/MESSAGE 46703
1685
+ IF (OUTPUT <> 'REVIEW')
1686
+ CLOSE/F FID = A,ERR=$CONTINUE
1687
+ END_IF
1688
+ SET/DEF RESULT = Y
1689
+ ACQUIRE/PV MESSAGE 46709, C2=MSG
1690
+ INQUIRE/PV DUMMY, '!MSG!'
1691
+ RETURN_TO_SCREEN