tnef 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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