x>"IPM.Microsoft Mail.Note1  5<   ;B !DADB91D261E0D31183840020AF293BC6Y2K problem with Add-DT 2  +.@9+WtpOpen Text mailing listsq;M-Ӭw!,sp1@FHBOSL@0@FHBOSL@ WLZFu% rcpg1252Ctext PV?UQch set23F04# ;0v5 `cP d36 c0 Hiph , S P  u0 a D2a p``em wh pr!(ng a'Book Lt'. y`!"@ qelp us$ Ap tly i@ v#"!P0"p'h ( pADD_DT"r I"p`l!p'q!-u!pw fix+(% t.A@P!pc'A(PRC+a": g 0& ,.& sp1 d*p )t?!p(`saQ/` (3W3b.doc.s))a"` Vp *p(/()"p $!bu'!'#@&2p@9/Q8"+Q!cti @'&**p!pASAP$*%0 ad1ogu#"(s Rp!pR@@(8 qo;!c?+q;$,s,$A 90e 7b EOM NOTICE - T;4F>b q 8<"7!@@!a O&8& pof(a|dd*A@@"/"i'"@/`dMBK%1rno;r pI31 :KGP(eb&Q!C(!}%m&@Q">LAmo !Cp&8aD0@!M<7"?o FR FT8.5 F  F  F F F F  F6  F7  F8  F  F F  F? &6? G>c=AU;a=TELEMEMO;p=BHPMEL04;l=ITBNE-MSG01-000211061353Z-4604238@FHBOSL9@FHBOSL@00"Wt@0&/Wt=Y2K problem with Add-DT5L<41D7BC0B968CD111B6A100805FA774F503F2AAEB@itbne-msg01.incorrect.bhp.com.au> ) #BeHISTEPHEN,SUEHASENCOUNTEREDADATEPROBLEMWHILERUNNINGOURNEWBOOKSLISTCANYOUPLEASEHELPUSAPPARENTLYITISHAL<41D7BC0B968CD111B6A100805FA774F503F2AAEB@itbne-msg01.incorrect.bhp.com.au> = 3"M 3"M generpts.src  ! eA ( ?  !A Ff ( xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx *PROC CIRREQ01 *----------------------------------------------------------------------------- * * Title: Patron Request Report * File: PATRQT01.PRC * Author: Information Dimensions, Inc. (TD) * * Description: A list of patron requests * * Input Parameters: * OUTPUT - may be 'REVIEW','PRINT'. Review displays report * on screen, print outputs to file for printing. * * START_DATE/END_DATE - find where CIRC_REQUEST.ADD_DT * is in range * * CIRC_SORT_KEY - option to sort by title, patron name, * or patron id * * HOLD_SORT_KEY - option to sort by title, patron id, * patron name, or call number. * * Other Selection Criteria: * LIBR_KEY - Restrict to certain libraries. * * ALL - Boolean value; set true by Slang if no params entered * * Output File: patrqt01.rpt * * Record Types Referenced: * TEMPLATE, COPY, CAT, CIRC_REQUEST * Buffers: @A @B @C @D * * Report Name: Cairculation Requests * * Report No.: PATRQT01 * * Menu Access: CATALOG REPORTS * * Parameter * Input Screen: CATRPT12 * * Templates: REPORT_HDR, BIB_PATRON, COPY_NOCIRC, COPY_NOCIRC_S, * PATRON_REQUEST. * *------------------------------------------------------------------------------ * * Revision History: * * Date Revised By Description * -------- ---------- ----------- * 11/20/89 DeFrench Initial Version * 03/28/91 Sandstrom Add LIBR_KEY to find commands. * 04/25/91 Sandstrom Add MATERIAL_TYPE to FIND commands. * 07/03/91 MChung Substitute tabs with 8 spaces and * spelling checks * *------------------------------------------------------------------------------ * START: ACQUIRE/PV MESSAGE 46707, C2=MSG TELL MSG,$B ON/BREAK BREAKERR ON/EXCEPTION EXCEPTION ON/SYNTAX SYNTAXERR SET/DEFAULT RESULT = N SET/PV PV_TODAY = $YYYYMMDD SET/PV PRINTTOP = 1 SET/PV RPTNM = 'PATRQT01' SET/PV RPTTTL = 'Circulation/Holds report' SET/PV PGNO = 0 * Set up for desired output method SELECT (OUTPUT) CASE 'REVIEW' SET/PV MAXLINES = 20 SET/PV PV_FILEID = '' CASE 'PRINT' SET/PV MAXLINES = 60 OPEN/F patrqt01.rpt, FID=A, INTENT=WRITE, + CARRIAGE=YES, ERR=OPENERR SET/PV PV_FILEID = ',FID=A' END_SELECT * GET/VIEW [TEMPLATE_KEY = 'REPORT_HDR']TEMPLATE@A, ERR = VIEWERR ASSIGN/PV HEADER = TEXT@A GET/VIEW [TEMPLATE_KEY='REQ_HDR']TEMPLATE@A, ERR=VIEWERR ASSIGN/PV REQ_HDR = TEXT@A GET/VIEW [TEMPLATE_KEY = 'PATRON_REQUEST']TEMPLATE@A, ERR = VIEWERR ASSIGN/PV RQTINFO = TEXT@A GET/VIEW [TEMPLATE_KEY = 'BIB_PATRON']TEMPLATE@A, ERR = VIEWERR ASSIGN/PV CATINFO = TEXT@A GET/VIEW [TEMPLATE_KEY = 'COPY_NOCIRC']TEMPLATE@A, ERR = VIEWERR ASSIGN/PV COPYINFO = TEXT@A GET/VIEW [TEMPLATE_KEY = 'COPY_NOCIRC_S']TEMPLATE@A, ERR = VIEWERR ASSIGN/PV SCOPYINFO = TEXT@A SET/PV CALLOC = 'CATR' * * Begin construction of FIND command. * SET/PV PV_FINDCMD = 'FIND CIRC_REQUEST,CATR,COPY,material_type ' //+ 'WHERE CIRC_REQUEST.CATNO:=CATR.CATNO ' //+ 'AND CIRC_REQUEST.ITEMID:=COPY.ITEMID ' //+ 'AND MATERIAL_TYPE.TYPE:=CATR.MTYPE '//+ 'AND CIRC_REQUEST.REQUEST_TYPE=''C'' ' * * Add Library to find. * DELETE/GV OUTLC DELETE/GV OUTSTR DELETE/GV INSTR SET/GV INSTR = LIBR_KEY @/PL='$TLP_PROC/generpts' QTBLKS01, VFLDNM='COPY.LIBR_KEY' SET/PV SAVE_OUTSTR = '(' //OUTSTR SET/PV PV_FINDCMD = PV_FINDCMD // 'AND (' // OUTSTR //' ' * DELETE/GV OUTLC DELETE/GV OUTSTR DELETE/GV INSTR SET/GV INSTR = LIBR_KEY @/PL='$TLP_PROC/generpts' QTBLKS01, + VFLDNM='CIRC_REQUEST.PLACED_LIBR_KEY' SET/PV SAVE_OUTSTR = SAVE_OUTSTR// ' OR ' //OUTSTR //') ' SET/PV PV_FINDCMD = PV_FINDCMD // 'OR ' // OUTSTR //') ' * * Add the date fields if they were passed. * IF (START_DATE <> '') SET/PV PV_FINDCMD = PV_FINDCMD //+ ' AND CIRC_REQUEST.ADD_DT = '//START_DATE//':'//END_DATE//' ' END_IF * * Append FIND for sort options. * SET/PV PV_FINDCMD = PV_FINDCMD //+ ' ORDER BY !CIRC_SORT_KEY!, CATR.TI,CATR.PUBL, COPY.YEAR, ' //+ 'COPY.LIBR_KEY, COPY.ITEMID, COPY.COPY' * * If output option is equal to 'PRINT', then delete the records * as they are printed. * IF OUTPUT = 'PRINT' START/TRANS SW=CIRC_REQUEST END_IF * * Execute Find and set up for report generation * !PV_FINDCMD! END REF=NO ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET JUMPIF (PV_NUMMEM = 0), DO_HOLDS * * Write initial header. * IF OUTPUT = 'REVIEW' CLEAR/SCREEN SET/PV LINE_CNT =2 ELSE TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! END_IF * SET/PV PGNO = PGNO + 1 TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! TYPE !REQ_HDR!, $S2, LABELS = N, SKIP = 0, + SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT = 8 * * Step through members of set, generating correct output for each. * FOR PV_Q = 1, PV_NUMMEM * GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST@D, ERR = VIEWERR GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CATR@B, ERR = VIEWERR GET/VIEW [!PV_FOUNDSET!,!PV_Q!]COPY@C, ERR = VIEWERR * ASSIGN/PV CATDOC = CATR.DOC@B IF CATDOC = 'SER' TYPE !CATINFO!,!SCOPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, + SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID! SET/PV LINE_CNT = LINE_CNT + 12 ELSE TYPE !CATINFO!,!COPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, + SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID! SET/PV LINE_CNT = LINE_CNT + 12 END_IF IF OUTPUT = 'PRINT' DELETE [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST END_IF * * Check for a page break. * IF LINE_CNT > MAXLINES IF OUTPUT = 'REVIEW' ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT =2 ELSE TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! END_IF * SET/PV PGNO = PGNO + 1 TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT = 7 END_IF * END_FOR ***************************************************** ***************************************************** DO_HOLDS: * * Begin construction of the HOLDS FIND command. * SET/PV PV_FINDCMD = 'FIND CIRC_REQUEST,CATR,COPY,MATERIAL_TYPE ' //+ 'WHERE CIRC_REQUEST.CATNO:=CATR.CATNO ' //+ 'AND CIRC_REQUEST.ITEMID:=COPY.ITEMID ' //+ 'AND MATERIAL_TYPE.TYPE:=CATR.MTYPE '//+ 'AND CIRC_REQUEST.REQUEST_TYPE=''H'' '//+ 'AND ' // SAVE_OUTSTR // ' ' * * Add the date fields if they were passed. * IF (START_DATE <> '') SET/PV PV_FINDCMD = PV_FINDCMD //+ ' AND CIRC_REQUEST.ADD_DT = '//START_DATE//':'//END_DATE//' ' END_IF * * Append FIND for sort options. * SET/PV PV_FINDCMD = PV_FINDCMD //+ ' ORDER BY !HOLD_SORT_KEY!, CATR.TI,CATR.PUBL, COPY.YEAR, ' //+ 'COPY.LIBR_KEY, COPY.ITEMID, COPY.COPY' * * Execute Find and set up for report generation * !PV_FINDCMD! END REF=NO ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET JUMPIF (PV_NUMMEM = 0), CLEANUP * * Write initial header. * IF OUTPUT = 'REVIEW' ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT =2 ELSE TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! END_IF * SET/PV PGNO = PGNO + 1 TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT = 7 * * Step through members of set, generating correct output for each. * FOR PV_Q = 1, PV_NUMMEM * GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST@D, ERR = VIEWERR GET/VIEW [!PV_FOUNDSET!,!PV_Q!]CATR@B, ERR = VIEWERR GET/VIEW [!PV_FOUNDSET!,!PV_Q!]COPY@C, ERR = VIEWERR * ASSIGN/PV HOLDTYPE = CIRC_REQUEST.HOLD_TYPE@D SET/PV RHOLDTYPE = $RAISE(HOLDTYPE) IF RHOLDTYPE = 'COPY' TYPE $S2, 'COPY level hold for:' + SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! ELSE TYPE $S2, 'CAT level hold for:' + SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! END_IF * * Choose the serials copy info if item is a serial. * ASSIGN/PV CATDOC = CATR.DOC@B IF CATDOC = 'SER' TYPE !CATINFO!,!SCOPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, + SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID! SET/PV LINE_CNT = LINE_CNT + 12 ELSE TYPE !CATINFO!,!COPYINFO!,!RQTINFO!,LABELS=NO, SKIP=1, + SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID! SET/PV LINE_CNT = LINE_CNT + 12 END_IF * * Delete the occurrence if print is selected * IF OUTPUT = 'PRINT' DELETE [!PV_FOUNDSET!,!PV_Q!]CIRC_REQUEST END_IF * * Check for a page break. * IF LINE_CNT > MAXLINES IF OUTPUT = 'REVIEW' ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT =2 ELSE TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! END_IF * SET/PV PGNO = PGNO + 1 TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT = 7 END_IF * END_FOR * * Cleanup - close files and discard result sets. * CLEANUP: ACQUIRE/PV MESSAGE 46708, C2=MSG TELL MSG ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET DISCARD !PV_FOUNDSET!:!PV_LASTSET! SET/DEF RESULT = Y IF (OUTPUT <> 'REVIEW') CLOSE/F FID = A,ERR=$CONTINUE FINISH/TRANS END_IF * * DONE - successful report generation; return to caller * DONE: RETURN_TO_SCREEN * * Error - inform user and close file, if necessary. * SYNTAXERR: EXCEPTION: OPENERR: VIEWERR: SHOW/MESSAGE !DMSTAT! JUMP ERROR BREAKERR: SHOW/MESSAGE 46700 ERROR: SHOW/MESSAGE 46703 IF (OUTPUT <> 'REVIEW') CLOSE/FILE FID = A,ERR=$CONTINUE ABORT/TRANSACTION, ERR=$CONTINUE END_IF SET/DEF RESULT = Y ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' RETURN_TO_SCREEN *PROC FILOPN01 *----------------------------------------------------------------------------- * * Title: Generic File Open * File: FILOPN01.PRC * Author: Information Dimensions, Inc. (BPM) * * Description: This proc is designed as a subroutine that is called from * other TLP procs to correctly open files in cases where the * file may already exist. * * Input Parameters: * FIL The file descriptor to be opened. * ID The file ID to be assigned to this file. * Called by: Any report that has an OPEN/FILE. * Call: @/PL='$TLP_PROC/generpts' FILOPN01 FIL=!A!, ID=!B! *------------------------------------------------------------------------------ * Revision History * * Date Rev. Revised By Description * --------- ---------- -------------------------------- * 04/07/93 BMOORE Initial version *----------------------------------------------------------------------------- * START: * * Open the file. * OPEN/FILE FD=!FIL! FID=!ID! INTENT=WRITE CARRIAGE=NO ERR=OPENERR SET/GV FILE_STATUS = 'OK' RETURN * * If error occurs, attempt to delete existing file and then open the file. * OPENERR: * DELETE/FILE !FIL! OPEN/FILE FD=!FIL! FID=!ID! INTENT=WRITE CARRIAGE=NO ERR=OPENER2 SET/GV FILE_STATUS = 'OK' RETURN * * If still unable to open the file, display message and return. * OPENER2: * SET/GV FILE_STATUS = 'OPEN_ERROR' TELL 'File cannot be opened. Contact your DBA' RETURN *PROC GENPRT01 *----------------------------------------------------------------------------- * * Title: Generic Print Routine * File: GENPRT01.PRC * Author: Information Dimensions, Inc. (BPM) * * Description: This proc is designed as a subroutine that is called from * other TLP procs to allow custom printing of reports. * The proc uses the ROUTE/FILE command to route a file to the * printer of chice. Consult the BASISplus Command Procedures * manual for additional parameters. Optionally, you can use * a SPAWN command to call local procedures for printing. * * Input Parameters: * FIL The file descriptor to be sent to the printer. * ERROR_FLG is 'Y' if called from within error branch of * the calling proc. * * Called by: Any report that generates a printable file. * * Call: @/PL=TLP$PROC:GENERPTS.LIB GENPRT01 FIL=!A! ERROR_FLG='N' *------------------------------------------------------------------------------ * Revision History * * Date Rev. Revised By Description * --------- ---------- -------------------------------- * 04/08/93 BMOORE Initial version *----------------------------------------------------------------------------- * ON/EXCEPTION $RETURN START: * **** ROUTE/FILE FD=!FIL! RETURN *PROC MAROUT01 *----------------------------------------------------------------------------- * * Title: Marc Output * File: MAROUT01.PRC * Author: Information Dimensions, Inc. (HB) * * Description: Create Marc Input file records that can be run using the Marc * program * * Input Parameters: * OUTPUT - may be 'REVIEW','PRINT'. Review displays report * on screen, print outputs to file. * * FORMAT - may be set to OCLC, LC, or PC * * BLOCKSIZE - the length of each line in output file * * FIND_CAT - where part of find command for cat record * * FIND_COPY - where part of find command for copy record * * CATNO - a string of CATNO's to search on * * Valid Combinations: * OUTPUT, FORMAT, and BLOCKSIZE are required. * User may enter one of: FIND_CAT OR FIND_COPY OR CATNO * * Output File: marout01.rpt * marout01.log * * Record Types Referenced: * MARC * Buffers: @A * * Report Name: MARC OUTPUT * * Report No.: MAROUT01 * * Menu Access: CATRPT01 * * Parameter * Input Screen: MARRPT10 * * Templates: none * *------------------------------------------------------------------------------ * * Revision History: * * Date Revised By Description * -------- ---------- ----------- * 04/25/90 Berger Initial version * 04/26/90 Sandstrom Added PC format code * 05/10/90 Sandstrom Added LC format code * 05/11/90 Berger Revisions to FIND_CAT and FIND_COPY * 07/03/91 MChung Substitute tabs with 8 spaces and * spelling checks * 12/02/91 Sandstrom Changed log file open to handle * error if log file already exists. * *------------------------------------------------------------------------------ * START: ACQUIRE/PV MESSAGE 46707, C2=MSG TELL MSG,$B ON/BREAK BREAKERR ON/EXCEPTION EXCEPTION ON/SYNTAX SYNTAXERR SET/DEFAULT RESULT = N SET/PV LINE_CNT = 1 * Check for bad blocksize IF BLOCKSIZE < 80 SET/PV BLOCKSIZE = 80 ELSE_IF BLOCKSIZE > 2048 SET/PV BLOCKSIZE = 2048 END_IF * Set up for desired output method SELECT (OUTPUT) CASE 'REVIEW' SET/PV BLOCKSIZE = 80 CASE 'PRINT' OPEN/FILE marout01.rpt, FID=A, + INTENT=WRITE,ERR=OPENERR, RECORDLC=!BLOCKSIZE! SET/PV PV_FILEID = ',FID=A' END_SELECT * * Construct find command for search on CAT record * IF FIND_CAT <> NULL SET/PV PV_FINDCMD = 'FIND CAT,MARC ' //+ 'WHERE CAT.CATNO:=MARC.CATNO AND ' SET/PV FIND_CAT = $RAISE(FIND_CAT) * * Add CAT. to ambiguous fields in find command where it is not specified * SET/PV PV_ADD = $MATCH('ADD_DT',FIND_CAT) SET/PV PV_EXISTS = $MATCH('.ADD_DT',FIND_CAT) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+ FIND_CAT[PV_ADD:*] END_IF * SET/PV PV_ADD = $MATCH('CATNO',FIND_CAT) SET/PV PV_EXISTS = $MATCH('.CATNO',FIND_CAT) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+ FIND_CAT[PV_ADD:*] END_IF * SET/PV PV_ADD = $MATCH('REV_DT',FIND_CAT) SET/PV PV_EXISTS = $MATCH('.REV_DT',FIND_CAT) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+ FIND_CAT[PV_ADD:*] END_IF * SET/PV PV_ADD = $MATCH('REV_UID',FIND_CAT) SET/PV PV_EXISTS = $MATCH('.REV_UID',FIND_CAT) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_CAT = FIND_CAT[1:(PV_ADD-1)] // 'CAT.' //+ FIND_CAT[PV_ADD:*] END_IF * Append restrictive condition to find command SET/PV PV_FINDCMD = PV_FINDCMD // FIND_CAT * * Construct find command for search on COPY record * ELSE_IF FIND_COPY <> NULL SET/PV PV_FINDCMD = 'FIND COPY,MARC ' //+ 'WHERE COPY.CATNO:=MARC.CATNO AND ' SET/PV FIND_COPY = $RAISE(FIND_COPY) * * Add COPY. to ambiguous fields in find command where it is not specified * SET/PV PV_ADD = $MATCH('ADD_DT',FIND_COPY) SET/PV PV_EXISTS = $MATCH('.ADD_DT',FIND_COPY) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+ FIND_COPY[PV_ADD:*] END_IF * SET/PV PV_ADD = $MATCH('CATNO',FIND_COPY) SET/PV PV_EXISTS = $MATCH('.CATNO',FIND_COPY) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+ FIND_COPY[PV_ADD:*] END_IF * SET/PV PV_ADD = $MATCH('REV_DT',FIND_COPY) SET/PV PV_EXISTS = $MATCH('.REV_DT',FIND_COPY) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+ FIND_COPY[PV_ADD:*] END_IF * SET/PV PV_ADD = $MATCH('REV_UID',FIND_COPY) SET/PV PV_EXISTS = $MATCH('.REV_UID',FIND_COPY) IF (PV_ADD > 0) AND (PV_EXISTS = 0) SET/PV FIND_COPY = FIND_COPY[1:(PV_ADD-1)] // 'COPY.' //+ FIND_COPY[PV_ADD:*] END_IF * Append restrictive condition to find command SET/PV PV_FINDCMD = PV_FINDCMD // FIND_COPY * * Construct find command for search on selected CATNO's * ELSE_IF CATNO <> NULL SET/PV PV_FINDCMD = 'FIND MARC WHERE MARC.CATNO =' //!CATNO! * * Construct default find command for no selected search criteria * ELSE SET/PV PV_FINDCMD = 'FIND MARC' END_IF * * Add sort to the find command * SET/PV PV_FINDCMD = PV_FINDCMD // ' ORDER BY MARC.CATNO END REF=NO' * * Write find command to log file * * OPEN/FILE marout01.log,FID=B,INTENT=WRITE,CREATE=YES, + * CARRIAGE=YES, ERR=OPENERR * smls19911202 changed error branch on log file open to $continue * and added test for dmstat. OPEN/FILE marout01.log,FID=B,INTENT=WRITE,CREATE=YES, + ERR=$CONTINUE IF DMSTAT <> 0 OPEN/FILE marout01.log,FID=B,INTENT=UPDATE,ERR=OPENERR END_IF PUT/FILE ' Log File for MAROUT01',FID=B PUT/FILE ' ---------------------',FID=B PUT/FILE $S2,'FIND COMMAND',$B,'------------',FID=B SET/PV PV_FINDLEN = $LC(PV_FINDCMD) SET/PV PV_POINT = 1 WHILE (PV_POINT <= PV_FINDLEN) PUT/FILE PV_FINDCMD[PV_POINT:(PV_POINT+79)],FID=B SET/PV PV_POINT = PV_POINT + 80 END_WHILE * * Execute find, store members and set in variables * !PV_FINDCMD!,ERR=FNDERR ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM ACQUIRE/PV LASTSET, N1 = PV_SET * * Write members to log file and close file * PUT/FILE $S2,'NUMBER OF MEMBERS = ',PV_NUMMEM,FID=B CLOSE/FILE FID=B * * Check for no hits * IF (PV_NUMMEM <= 0) SHOW/MESSAGE 46705 JUMP CLEANUP END_IF * * Type output for specified formats * SELECT (FORMAT) CASE 'OCLC' * * Step through members of set, generating correct output for each. * FOR PV_MEM = 1, PV_NUMMEM GET/VIEW[!PV_SET!,!PV_MEM!]MARC@A ASSIGN/PV PV_OUTDATA = MARC_DATA@A SET/PV PV_LENGTH = $LC(PV_OUTDATA) SET/PV PV_POINT = 1 ****** Loop through printing one record at a time ****** WHILE (PV_POINT <= PV_LENGTH) IF OUTPUT = 'REVIEW' SET/PV LINE_CNT = LINE_CNT + 1 ******* Check for page break ******** IF LINE_CNT >= 20 ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT = 1 END_IF TELL PV_OUTDATA[PV_POINT:(PV_POINT+BLOCKSIZE-1)] ELSE PUT/F PV_OUTDATA[PV_POINT:(PV_POINT+BLOCKSIZE-1)] + ,FID=A END_IF SET/PV PV_POINT = PV_POINT + BLOCKSIZE END_WHILE END_FOR * CASE 'PC' * * SET/PV PV_MEM = 1 SET/PV PV_POINT_OUT = 1 GETPC: WHILE PV_MEM LE PV_NUMMEM * * Get record * GET/VIEW[!PV_SET!,!PV_MEM!]MARC@A ASSIGN/PV PV_MARCDATA = MARC_DATA@A SET/PV PV_MARCDATA = $TRIM (PV_MARCDATA) SET/PV PV_MEM = PV_MEM + 1 SET/PV PV_LENGTH = PV_MARCDATA[1:5] SET/PV PV_SEGLEN = PV_LENGTH SET/PV PV_POINT_IN = 1 * * Loop to build and write buffer * BLDPC: * * Record will begin and end in this block.... IF (PV_SEGLEN EQ PV_LENGTH) AND + PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1) THEN SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT+PV_SEGLEN-1]=+ PV_MARCDATA[1:PV_LENGTH] SET/PV PV_POINT_OUT = PV_POINT_OUT + PV_SEGLEN SET/PV PV_SEGLEN = 0 IF PV_POINT_OUT GT BLOCKSIZE THEN SET/PV PV_POINT_OUT = 1 JUMP OUTPC END_IF JUMP GETPC END_IF * Record will begin but not end in this block.... IF (PV_SEGLEN EQ PV_LENGTH) AND + PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1) THEN SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = + PV_MARCDATA[1:BLOCKSIZE-PV_POINT_OUT+1] SET/PV PV_SEGLEN = PV_SEGLEN - (BLOCKSIZE-PV_POINT_OUT+1) SET/PV PV_POINT_IN = PV_POINT_IN+BLOCKSIZE-PV_POINT_OUT+1 SET/PV PV_POINT_OUT = 1 JUMP OUTPC END_IF * Record will end but not begin in this block.... IF (PV_SEGLEN NE PV_LENGTH) AND + PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1) THEN SET/PV PV_BUFFER[PV_POINT_OUT:*] = + PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+PV_SEGLEN-1] SET/PV PV_POINT_OUT = PV_SEGLEN + 1 IF PV_POINT_OUT GT BLOCKSIZE THEN SET/PV PV_POINT_OUT = 1 SET/PV PV_SEGLEN = 0 JUMP OUTPC END_IF JUMP GETPC END_IF * Record will not begin or end in this block.... IF (PV_SEGLEN NE PV_LENGTH) AND + PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1) THEN SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = + PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+BLOCKSIZE-1] SET/PV PV_SEGLEN = PV_SEGLEN - BLOCKSIZE SET/PV PV_POINT_IN = PV_POINT_IN + BLOCKSIZE JUMP OUTPC END_IF OUTPC: IF OUTPUT = 'REVIEW' SET/PV LINE_CNT = LINE_CNT + 1 ******* Check for page break ******** IF LINE_CNT >= 20 ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT = 1 END_IF TELL PV_BUFFER[1:BLOCKSIZE] ELSE PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A END_IF * IF PV_SEGLEN EQ 0 THEN JUMP GETPC ELSE JUMP BLDPC END_IF END_WHILE * "Put" last line IF OUTPUT = 'REVIEW' TELL PV_BUFFER[1:BLOCKSIZE] ELSE PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A END_IF * * CASE 'LC' * SET/PV PV_MEM = 1 SET/PV PV_POINT_OUT = 1 GETLC: WHILE PV_MEM LE PV_NUMMEM * * Get record * GET/VIEW[!PV_SET!,!PV_MEM!]MARC@A ASSIGN/PV PV_MARCDATA = MARC_DATA@A SET/PV PV_MARCDATA = $TRIM (PV_MARCDATA) SET/PV PV_MEM = PV_MEM + 1 SET/PV PV_LENGTH = PV_MARCDATA[1:5] SET/PV PV_SEGLEN = PV_LENGTH SET/PV PV_POINT_IN = 1 * * Loop to build and write buffer * BLDLC: * * Record will begin and end in this block....0 IF (PV_SEGLEN EQ PV_LENGTH) AND + PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN * Set segment control word SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '0' SET/PV PV_SCW_I = PV_SEGLEN + 5 SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4) SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = + PV_SCW_S[1:4] * Add record segment SET/PV PV_POINT_OUT = PV_POINT_OUT + 5 SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT+PV_SEGLEN-1]=+ PV_MARCDATA[1:PV_LENGTH] SET/PV PV_POINT_OUT = PV_POINT_OUT + PV_SEGLEN SET/PV PV_SEGLEN = 0 IF PV_POINT_OUT GE (BLOCKSIZE-5) THEN SET/PV PV_POINT_OUT = 1 JUMP OUTLC END_IF JUMP GETLC END_IF * Record will begin but not end in this block....1 IF (PV_SEGLEN EQ PV_LENGTH) AND + PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN * Set segment control word SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '1' SET/PV PV_SCW_I = BLOCKSIZE - PV_POINT_OUT + 1 SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4) SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = + PV_SCW_S[1:4] * Add record segment SET/PV PV_POINT_OUT = PV_POINT_OUT + 5 SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = + PV_MARCDATA[1:BLOCKSIZE-PV_POINT_OUT+1] SET/PV PV_SEGLEN = PV_SEGLEN - (BLOCKSIZE-PV_POINT_OUT+1) SET/PV PV_POINT_IN = PV_POINT_IN+BLOCKSIZE-PV_POINT_OUT+1 SET/PV PV_POINT_OUT = 1 JUMP OUTLC END_IF * Record will end but not begin in this block....3 IF (PV_SEGLEN NE PV_LENGTH) AND + PV_SEGLEN LE (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN * Set segment control word SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '3' SET/PV PV_SCW_I = PV_SEGLEN + 5 SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4) SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = + PV_SCW_S[1:4] * Add record segment SET/PV PV_POINT_OUT = PV_POINT_OUT + 5 SET/PV PV_BUFFER[PV_POINT_OUT:*] = + PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+PV_SEGLEN-1] SET/PV PV_POINT_OUT = PV_SEGLEN + 1 + 5 IF PV_POINT_OUT GE (BLOCKSIZE-5) THEN SET/PV PV_POINT_OUT = 1 SET/PV PV_SEGLEN = 0 JUMP OUTLC END_IF JUMP GETLC END_IF * Record will not begin or end in this block....2 IF (PV_SEGLEN NE PV_LENGTH) AND + PV_SEGLEN GT (BLOCKSIZE - PV_POINT_OUT + 1 - 5) THEN * Set segment control word SET/PV PV_BUFFER[PV_POINT_OUT:PV_POINT_OUT] = '2' SET/PV PV_SCW_I = BLOCKSIZE SET/PV PV_SCW_S[1:4] = $PADZ(PV_SCW_I,4) SET/PV PV_BUFFER[PV_POINT_OUT+1:PV_POINT_OUT+4] = + PV_SCW_S[1:4] * Add record segment SET/PV PV_POINT_OUT = PV_POINT_OUT + 5 SET/PV PV_BUFFER[PV_POINT_OUT:BLOCKSIZE] = + PV_MARCDATA[PV_POINT_IN:PV_POINT_IN+BLOCKSIZE-6] SET/PV PV_SEGLEN = PV_SEGLEN - (BLOCKSIZE - 5) SET/PV PV_POINT_IN = PV_POINT_IN + (BLOCKSIZE - 5) SET/PV PV_POINT_OUT = 1 JUMP OUTLC END_IF OUTLC: IF OUTPUT = 'REVIEW' SET/PV LINE_CNT = LINE_CNT + 1 ******* Check for page break ******** IF LINE_CNT >= 20 ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT = 1 END_IF TELL PV_BUFFER[1:BLOCKSIZE] ELSE PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A END_IF * IF PV_SEGLEN EQ 0 THEN JUMP GETLC ELSE JUMP BLDLC END_IF END_WHILE * "Put" last line IF OUTPUT = 'REVIEW' TELL PV_BUFFER[1:BLOCKSIZE] ELSE PUT/F PV_BUFFER[1:BLOCKSIZE] ,FID=A END_IF * END_SELECT * * Cleanup - close files and discard result sets. * CLEANUP: ACQUIRE/PV MESSAGE 46708, C2=MSG TELL MSG ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET IF (OUTPUT <> 'REVIEW') CLOSE/F FID = A,ERR=$CONTINUE END_IF DISCARD !PV_SET!:!PV_LASTSET! SET/DEF RESULT = Y * * DONE - successful report generation; return to caller * DONE: RETURN_TO_SCREEN * * Error - inform user and close file, if necessary. * SYNTAXERR: EXCEPTION: OPENERR: VIEWERR: SHOW/MESSAGE !DMSTAT! JUMP ERROR FNDERR: SHOW/MESSAGE 46702 JUMP ERROR BREAKERR: SHOW/MESSAGE 46700 ERROR: SHOW/MESSAGE 46703 IF (OUTPUT <> 'REVIEW') CLOSE/F FID = A,ERR=$CONTINUE CLOSE/F FID = B,ERR=$CONTINUE END_IF SET/DEF RESULT = Y ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' RETURN_TO_SCREEN *PROC MRT tell 'TLP ENU 920430 L1F P004 TLPV3.3' return *PROC NWBLST01 *----------------------------------------------------------------------------- * * Title: New Books List * File: NWBLST01.PRC * Author: Information Dimensions, Inc. (HB) * * Description: List of Titles newly received in the library * * Input Parameters: * OUTPUT - may be 'REVIEW','PRINT'. Review displays report * on screen, print outputs to file for printing. * * START_DT/END_DT - find where COPY.ADD_DT is in range * * SUBJECT - restrict to certain CAT.SUBJs * * SORT_KEY - option to sort by title or subject * * MONTH_YEAR - Inputted month and year for heading * * LOGIN_LIBR - User's login library * * Other Selection Criteria: * LIBR_KEY - Restrict to certain libraries. * * ALL - Boolean value; set true by Slang if no params entered * * Valid Combinations: * Presence or absence of SUBJECT. Subject must be present for * sort_key = 'SUBJECT'. All other parameters are required to * be inputted to the proc. * * Output File: nwblst01.rpt * * Record Types Referenced: * TEMPLATE, LIBR, COPY, CATR, SUB * Buffers: @A @B @C @D * * Report Name: New Books List * * Report No.: NWBLST01 * * Menu Access: ??? * * Parameter * Input Screen: CATRPT10 * * Templates: REPORT_HDR, UNION_CAT, COPY_NEWBOOK * *------------------------------------------------------------------------------ * * Revision History: * * Date Revised By Description * -------- ---------- ----------- * 11/16/89 Berger Initial version * 09/27/90 Berger Fix paging problem, problem with type * 01/07/91 Sandstrom 20 libs fix * 05/08/91 Sandstrom Moved file opens and template gets * to be after the find command. * 07/03/91 MChung Substitute tabs with 8 spaces and * spelling check * *------------------------------------------------------------------------------ * START: ACQUIRE/PV MESSAGE 46707, C2=MSG TELL MSG,$B ON/BREAK BREAKERR ON/EXCEPTION EXCEPTION ON/SYNTAX SYNTAXERR SET/DEFAULT RESULT = N SET/PV PV_TODAY = $YYYYMMDD SET/PV PRINTTOP = 1 SET/PV RPTNM = 'NWBLST01' SET/PV RPTTTL = 'New Books list for '// MONTH_YEAR SET/PV PGNO = 0 * *set/mode echoproc=yes * Begin construction of FIND command. * * 910107smls added 20 libs fix DELETE/GV OUTSTR DELETE/GV OUTLC DELETE/GV INSTR SET/GV INSTR = LIBR_KEY @/PL='$TLP_PROC/generpts' QTBLKS01, VFLDNM='COPY.LIBR_KEY' SET/PV PV_FINDCMD = 'FIND SUB,RCAT,COPY,LIBR ' //+ 'WHERE RCAT.CATNO:=>>SUB.CATNO ' //+ 'AND RCAT.CATNO:=>>COPY.CATNO ' //+ 'AND LIBR.LIBR_KEY:=COPY.LIBR_KEY ' //+ ' AND ((RCAT.ADD_DT = '//START_DT//':'//END_DT// + ' ) '// + 'OR (SUB.ADD_DT = '//START_DT//':'//END_DT// + ' AND DOC inc ''SER''* AND RNUM=0)) ' * * Append FIND command based on options. * * IF (SUBJECT <> '') * SET/PV PV_FINDCMD = PV_FINDCMD //+ * 'AND RCAT.SHELF INC ' // SUBJECT * END_IF * * Append FIND for sort options. * * Removed copy.libr_key from order by * SET/PV PV_FINDCMD = PV_FINDCMD //+ * ' ORDER BY !SORT_KEY! RCAT.TI, RCAT.PUBL, ' //+ * 'COPY.YEAR, COPY.ITEMID, COPY.COPY' SET/PV PV_FINDCMD = PV_FINDCMD //+ ' ORDER BY rcat.shelf' * * Execute Find and set up for report generation * !PV_FINDCMD! END REF=NO ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET IF (PV_NUMMEM <= 0) SHOW/MESSAGE 46705 JUMP CLEANUP END_IF * smls 910508 moved this to be after the FIND command. * Set up for desired output method SELECT (OUTPUT) CASE 'REVIEW' SET/PV MAXLINES = 20 SET/PV PV_FILEID = '' CASE 'PRINT' SET/PV MAXLINES = 60 spawn rm -f nwblst01.rpt OPEN/F nwblst01.rpt, FID=A, INTENT=WRITE,ERR=OPENERR put/f fid=a $t20,rptttl SET/PV PV_FILEID = ',FID=A' END_SELECT * * GET/VIEW [TEMPLATE_KEY = 'REPORT_HDR']TEMPLATE@A, ERR = VIEWERR * ASSIGN/PV HEADER = TEXT@A GET/VIEW [TEMPLATE_KEY = 'UNION_CAT']TEMPLATE@A, ERR = VIEWERR ASSIGN/PV CATINFO = TEXT@A * GET/VIEW [TEMPLATE_KEY = 'COPY_NEWBOOK']TEMPLATE@A, ERR = VIEWERR * ASSIGN/PV COPYINFO = TEXT@A * * Step through members of set, generating correct output for each. FOR PV_Q = 1, PV_NUMMEM * GET/VIEW [!PV_FOUNDSET!,!PV_Q!]LIBR@B, ERR = VIEWERR ASSIGN/PV LIBR_NAME = LIBR_NAME@B ASSIGN/PV LOC_NAME = LOC_NAME@B ASSIGN/PV CALLOC = CALL_NUM_LOC@B IF CALLOC = 'CAT' OR CALLOC = NULL THEN SET/PV CALLOC = 'RCAT' END_IF * * Generate report header, then data for each item * * IF LIBR_NAME <> PV_OLD_LIBR_NAME OR PV_Q = 1 IF PV_Q = 1 IF OUTPUT = 'REVIEW' IF PV_Q <> 1 ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT END_IF CLEAR/SCREEN SET/PV LINE_CNT = 2 * ELSE_IF PV_Q <> 1 * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! END_IF * SET/PV PGNO = 1 * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT = 1 END_IF SET/PV PV_OLD_LIBR_NAME = LIBR_NAME * * Check for new Subject (if subject is entered) * IF SUBJECT <> '' GET/VIEW [PV_FOUNDSET,PV_Q]RCAT@D,ERR=VIEWERR ASSIGN/PV PV_CURSUBJ = SUBJ@D IF PV_CURSUBJ <> PV_OLDSUBJ SET/PV PV_OLDSUBJ = PV_CURSUBJ * Check for page break SET/PV LINE_CNT = LINE_CNT + 2 IF LINE_CNT > MAXLINES IF OUTPUT = 'REVIEW' ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT = 2 ELSE * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! SET/PV PGNO = PGNO + 1 * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT =1 END_IF END_IF * TYPE $S2, RCAT.SUBJ, LABELS = N, SKIP = 0, + * SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID! END_IF END_IF * GET/VIEW [PV_FOUNDSET,PV_Q]COPY@C, ERR = VIEWERR ASSIGN/PV PV_CURCATNO = CATNO@C IF PV_CURCATNO = NULL GET/VIEW [PV_FOUNDSET,PV_Q]RCAT@D, ERR = VIEWERR ASSIGN/PV PV_CURCATNO = CATNO@D END_IF ASSIGN/PV PV_CURITEMID = ITEMID@C * If new catno, print catalog info IF (PV_CURCATNO <> PV_LSTCATNO) SET/PV LINE_CNT = LINE_CNT + 7 * Check for page break IF LINE_CNT > MAXLINES IF OUTPUT = 'REVIEW' ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT = 2 ELSE * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! SET/PV PGNO = PGNO + 1 * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT = 1 END_IF END_IF TYPE $S2, !CATINFO!, LABELS = N, SKIP = 0, + SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID! SET/PV PV_LSTCATNO = PV_CURCATNO set/pv line_cnt=line_cnt+dm_lines END_IF * Aviod duplicates from FIND command IF (PV_CURITEMID <> PV_LSTITEMID) SET/PV LINE_CNT = LINE_CNT + 1 * Check for page break IF LINE_CNT > MAXLINES IF OUTPUT = 'REVIEW' ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN SET/PV LINE_CNT = 2 ELSE * TYPE $P, MEMBERS=1, SET=!PV_FOUNDSET! !PV_FILEID! SET/PV PGNO = PGNO + 1 * TYPE !HEADER!, $S2, LABELS = N, SKIP = 0, + * SET = !PV_FOUNDSET!, MEMBERS = 1 !PV_FILEID! SET/PV LINE_CNT = 1 END_IF END_IF TYPE !COPYINFO!, LABELS = N, SKIP = 0, + SET = !PV_FOUNDSET!, MEMBERS = !PV_Q! !PV_FILEID! SET/PV PV_LSTITEMID = PV_CURITEMID set/pv line_cnt=line_cnt+dm_lines END_IF * END_FOR * * Cleanup - close files and discard result sets. * CLEANUP: ACQUIRE/PV MESSAGE 46708, C2=MSG TELL MSG ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET IF (OUTPUT <> 'REVIEW') CLOSE/F FID = A,ERR=$CONTINUE END_IF DISCARD !PV_FOUNDSET!:!PV_LASTSET! SET/DEF RESULT = Y * * DONE - successful report generation; return to caller * DONE: RETURN_TO_SCREEN * * Error - inform user and close file, if necessary. * SYNTAXERR: EXCEPTION: OPENERR: VIEWERR: SHOW/MESSAGE !DMSTAT! JUMP ERROR BREAKERR: SHOW/MESSAGE 46700 ERROR: SHOW/MESSAGE 46703 IF (OUTPUT <> 'REVIEW') CLOSE/F FID = A,ERR=$CONTINUE END_IF SET/DEF RESULT = Y ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' RETURN_TO_SCREEN *PROC QTBLKS01 *----------------------------------------------------------------------------- * * Title: Build Library Key String * File: QTBLKS01 * Author: Information Dimensions, Inc. (BB/SMLS) * * Description: This proc is called to build a string of library keys that * can be used within a find command. This routine handles the * >20 terms/field limit. * * Directions: * * Input: * Passed as a global variable: * INSTR[*] - Input character string that contains the list of * library keys with single quotes around each key. * Multiple keys are separated by commas. * Passed on call: * VFLDNM[*] - Contains the name of the view field with a source * of the library key to be used in the find command. * Output: * The following global variables are set: * OUTSTR[*] - The product of this routine, the field test. * OUTLC - The length of the field test value. * BSTAT - Return status....0=ok, -1=error. * *------------------------------------------------------------------------------ * * Revision History: * * Date Revised By Description * -------- ---------- ----------- * 12/20/90 Beaber Initial Version * 01/03/91 Sandstrom Revisions * 07/08/91 MChung Substitute tabs with 8 spaces & * spelling checks * *------------------------------------------------------------------------------ * * * Initialize variables. * SET/PV VFNSC = 1 SET/PV VFNEC = $LC(VFLDNM) SET/PV INEC = $LC(INSTR) SET/PV INSC = 1 SET/PV OUTSC = 1 SET/PV SC = 1 SET/PV SC20 = 1 SET/PV COUNT = 0 SET/GV BSTAT = 0 * * Begin building output string by adding on '(', field name, '='. * SET/GV OUTSTR[*] = '(' // VFLDNM[VFNSC:VFNEC] // '=' SET/PV OUTSC = OUTSC + VFNEC - VFNSC + 4 * * Loop through input string searching for commas. * SET/PV COMMA = $MATCH(',',INSTR[SC:INEC]) WHILE (COMMA NE 0) SET/PV COUNT = COUNT + 1 * * Continue building the string as every 20th comma is found. * IF ($MOD(COUNT,20) EQ 0) THEN * * Add on "OR Field_name=", if necessary. * IF (OUTSTR[OUTSC-2] <> '=') THEN SET/GV OUTSTR[OUTSC+1:OUTSC+VFNEC-VFNSC+7] = + ' OR ' // VFLDNM[VFNSC:VFNEC] // '=' SET/PV OUTSC = OUTSC + VFNEC - VFNSC + 7 END_IF * * Add on next 20 keys. * IF SC20 = INSC THEN SET/GV OUTSTR[OUTSC:OUTSC+SC+COMMA-SC20-2] = + INSTR[SC20:SC+COMMA-2] ELSE SET/GV OUTSTR[OUTSC:OUTSC+SC+COMMA-SC20-2] = + INSTR[SC20+1:SC+COMMA-2] END_IF * * Increment index (SC) and continue looking for commas. * SET/PV OUTSC = OUTSC + SC + COMMA - SC20 - 2 SET/PV SC20 = SC + COMMA END_IF * * Increment index (SC) and continue looking for commas. * SET/PV SC = SC + COMMA BREAK_IF (SC GT INEC) SET/PV COMMA = $MATCH(',',INSTR[SC:INEC]) END_WHILE * * Add on "OR Field_name=", if necessary. * IF (OUTSTR[OUTSC-2] <> '=') THEN SET/GV OUTSTR[OUTSC+1:OUTSC+VFNEC-VFNSC+7] = + ' OR ' // VFLDNM[VFNSC:VFNEC] // '=' SET/PV OUTSC = OUTSC + VFNEC - VFNSC + 7 END_IF * * Add on last set of characters. * SET/PV OUTEC = OUTSC + INEC - SC20 + 2 SET/GV OUTSTR[OUTSC:OUTEC] = INSTR[SC20:INEC] // ')' * SET/GV OUTLC = OUTEC RETURN *PROC SPILAB01 *----------------------------------------------------------------------------- * * Title: Spine Labels * File: SPILAB01.PRC * Author: Information Dimensions, Inc. (HB) * * Description: Spine labels for cataloged books * * Input Parameters: * OUTPUT - may be 'REVIEW','PRINT'. Review displays report * on screen, print outputs to file for printing. * * START_DT/END_DT - find where COPY.ADD_DT is in range * * CALL - restrict to certain CATR.CALLs * * ITEMID - restrict to certain COPY.ITEMIDs * * LOGIN_LIBR - User's login library * * Other Selection Criteria: * LIBR_KEY - Restrict to certain libraries. * * ALL - Boolean value; set true by Slang if no params entered * * Valid Combinations: * START AND END DT REQUIRED. CALL and ITEMID are optional. * * Output File: spilab01.rpt * * Record Types Referenced: * TEMPLATE, LIBR, SYS_PARM, COPY, CATR, SUB * Buffers: @A @C @B @E @D * * Report Name: Spine Labels * * Report No.: SPILAB01 * * Menu Access: ??? * * Parameter * Input Screen: CATRPT11 * * Templates: * *------------------------------------------------------------------------------ * * Revision History: * * Date Revised By Description * -------- ---------- ----------- * 10/16/89 Berger Initial version * 11/14/90 Berger Fixed bug in dewey form on the * line counter * 01/07/91 Sandstrom 20 libs fix * 05/08/91 Sandstrom Moved file opens and template gets to * after the find command. * 07/03/91 MChung Substitute tabs with 8 spaces and * spelling check * 04/14/92 Sandstrom Fix for TLP-1291-7. Output for * call number was not correct. * *------------------------------------------------------------------------------ * START: ACQUIRE/PV MESSAGE 46707, C2=MSG TELL MSG,$B ON/BREAK BREAKERR ON/EXCEPTION EXCEPTION ON/SYNTAX SYNTAXERR SET/DEFAULT RESULT = N SET/PV PV_TODAY = $YYYYMMDD * * Begin construction of FIND command. * * 910107smls added 20 libs fix DELETE/GV OUTSTR DELETE/GV OUTLC DELETE/GV INSTR SET/GV INSTR = LIBR_KEY @/PL='$TLP_PROC/generpts' QTBLKS01, VFLDNM='COPY.LIBR_KEY' SET/PV PV_FINDCMD = 'FIND CATR,COPY,LIBR ' //+ 'WHERE COPY.CATNO:=CATR.CATNO ' //+ 'AND LIBR.LIBR_KEY:=COPY.LIBR_KEY AND ' //+ OUTSTR[1:OUTLC]//' ' IF START_DT <> '' THEN SET/PV PV_FINDCMD = PV_FINDCMD//+ 'AND COPY.ADD_DT = '//START_DT//':'//END_DT//' ' END_IF * GET/VIEW [ID=1]SYS_PARM@B,ERR=VIEWERR ASSIGN/PV RPT_MULT_ENT = RPT_MULT_ENTITY@B ASSIGN/PV COPY_RPT_SORT = COPY_RPT_SORT@B GET/VIEW[LIBR_KEY=!LOGIN_LIBR!]LIBR@C,ERR=VIEWERR ASSIGN/PV CALLOC = CALL_NUM_LOC@C IF CALLOC = 'CAT' OR CALLOC = NULL SET/PV CALLOC = 'CATR' END_IF * * Append FIND command based on options. * IF (ITEMID <> '') SET/PV PV_FINDCMD = PV_FINDCMD //+ 'AND COPY.ITEMID = ' // ITEMID ELSE_IF (CALL <> '') SET/PV PV_FINDCMD = PV_FINDCMD //+ 'AND !CALLOC!.CALL = ' // CALL END_IF * * Build sortkey to reflect correct call no. field, depending on * SYS_PARM and LIBR flags * GET/VIEW [ID=1]SYS_PARM@B,ERR=VIEWERR ASSIGN/PV RPT_MULT_ENT = RPT_MULT_ENTITY@B ASSIGN/PV COPY_RPT_SORT = COPY_RPT_SORT@B IF (RPT_MULT_ENTITY = 'N') ASSIGN/PV CAT_LC = CAT_LC_FLG@B IF (CAT_LC = 'Y') SET/PV LCADD = '_LC_SORT' ELSE SET/PV CATRADD = '(1)' END_IF ELSE GET/VIEW[LIBR_KEY=!LOGIN_LIBR!]LIBR@C,ERR=VIEWERR ASSIGN/PV CAT_LC = CAT_LC_FLG@C ASSIGN/PV COPY_LC = COPY_LC_FLG@C IF (CALLOC = 'CATR') AND (CAT_LC = 'Y') SET/PV LCADD = '_LC_SORT' SET/PV CATRADD = '' ELSE_IF (CALLOC = 'CATR') SET/PV LCADD = '' SET/PV CATRADD = '(1)' ELSE_IF (CALLOC = 'COPY') AND (COPY_LC = 'Y') SET/PV LCADD = '_LC_SORT' SET/PV CATRADD = '' ELSE SET/PV LCADD = '' SET/PV CATRADD = '' END_IF END_IF SET/PV SORTKEY = '!CALLOC!.CALL!LCADD!' // '!CATRADD!' * SET/PV PV_FINDCMD = PV_FINDCMD //+ ' ORDER BY COPY.LIBR_KEY, !SORTKEY! ' IF (COPY_RPT_SORT <> '') SET/PV PV_FINDCMD = PV_FINDCMD // ', !COPY_RPT_SORT! ' END_IF * * Execute Find and set up for report generation * !PV_FINDCMD! END REF=NO ACQUIRE/PV MEMBERS, N1 = PV_NUMMEM ACQUIRE/PV LASTSET, N1 = PV_FOUNDSET IF (PV_NUMMEM <= 0) SHOW/MESSAGE 46705 JUMP CLEANUP END_IF * smls moved file opens and template get. * Set up for desired output method SELECT (OUTPUT) CASE 'REVIEW' SET/PV PV_FILEID = '' CASE 'PRINT' OPEN/F spilab01.rpt, FID=A, INTENT=WRITE, + CARRIAGE=YES, ERR=OPENERR SET/PV PV_FILEID = ',FID=A' END_SELECT * GET/VIEW [TEMPLATE_KEY = 'SPINE_LABEL']TEMPLATE@A, ERR = VIEWERR ASSIGN/PV PV_SPINE_LABEL = TEXT@A * Step through members of set, generating correct output for each. FOR PV_Q = 1, PV_NUMMEM * * get calloc * GET/VIEW [PV_FOUNDSET,PV_Q]LIBR@C, ERR=VIEWERR ASSIGN/PV CALLOC = CALL_NUM_LOC@C IF CALLOC = 'CAT' OR CALLOC = NULL THEN SET/PV CALLOC = 'CATR' END_IF * * Parse the Call Number to print it in the template * IF CALLOC = 'CATR' GET/VIEW [PV_FOUNDSET,PV_Q]CATR@D,ERR=VIEWERR ASSIGN/PV PV_CALL = CALL@D ELSE GET/VIEW [PV_FOUNDSET,PV_Q]COPY@E,ERR=VIEWERR * smls19920414 changed field name being assigned to PV_CALL * from ASSIGN/PV PV_CALL = COPY@E to ASSIGN/PV PV_CALL = CALL@E END_IF SET/PV LENGTH = $LC(PV_CALL) SET/PV LINENUM = 1 * Reset temp variables to give to template FOR I = 1,9 SET/PV LINE!I! = '' END_FOR * * Parse LC call numbers * * smls19920414 added reference to COPY_LC. * Old IF was: IF CAT_LC = 'Y' IF (CALLOC = 'CATR' AND CAT_LC = 'Y') + OR (CALLOC = 'COPY' AND COPY_LC = 'Y') THEN FOR PV_P = 1,LENGTH SET/PV PV_CHAR = PV_CALL[PV_P] IF PV_P <> LENGTH SET/PV PV_Z = PV_P + 1 SET/PV PV_NEXT = PV_CALL[PV_Z] ELSE SET/PV PV_NEXT = ' ' END_IF SELECT LINENUM CASE 1 * Check for letter IF $ABS(PV_CHAR) = 0 AND PV_CHAR <> '0' SET/PV LINE1 = LINE1 // PV_CHAR ELSE SET/PV LINE2 = PV_CHAR SET/PV LINENUM = 2 END_IF CASE 2 * Check for period followed by a letter IF PV_CHAR = '.' AND $ABS(PV_NEXT) = 0 AND + PV_NEXT <> '0' SET/PV LINENUM = 3 ELSE SET/PV LINE2 = LINE2 // PV_CHAR END_IF DEFAULT SET/PV LINE!LINENUM! = LINE!LINENUM! // PV_CHAR * Check for a space or next character to be a letter IF ($ABS(PV_NEXT) = 0 AND PV_NEXT <> '0') SET/PV LINENUM = LINENUM + 1 END_IF END_SELECT END_FOR * * Parse Dewey call numbers * ELSE FOR PV_P = 1,LENGTH SET/PV PV_CHAR = PV_CALL[PV_P] SELECT LINENUM CASE 1 * Break on period IF PV_CHAR = '.' SET/PV LINENUM = 2 END_IF SET/PV LINE!LINENUM! = LINE!LINENUM! // PV_CHAR DEFAULT SET/PV LINE!LINENUM! = LINE!LINENUM! // PV_CHAR * Break on spaces IF PV_CHAR = ' ' SET/PV LINENUM = LINENUM + 1 END_IF END_SELECT END_FOR END_IF * Type the Spine Label TYPE !PV_SPINE_LABEL!, SKIP=0, + SET=!PV_FOUNDSET!,MEMBERS=!PV_Q! !PV_FILEID! IF OUTPUT = 'REVIEW' ACQUIRE/PV MESSAGE 46710, C2=MSG INQUIRE/PV PV_QUIT, '!MSG!' JUMPIF PV_QUIT[1] = 'N' OR PV_QUIT[1] = 'n',QUIT CLEAR/SCREEN END_IF END_FOR * * Cleanup - close files and discard result sets. * CLEANUP: ACQUIRE/PV MESSAGE 46708, C2=MSG TELL MSG ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' QUIT: ACQUIRE/PV LASTSET, N1 = PV_LASTSET IF (OUTPUT <> 'REVIEW') CLOSE/F FID = A,ERR=$CONTINUE END_IF DISCARD !PV_FOUNDSET!:!PV_LASTSET! SET/DEF RESULT = Y * * DONE - successful report generation; return to caller * DONE: RETURN_TO_SCREEN * * Error - inform user and close file, if necessary. * SYNTAXERR: EXCEPTION: OPENERR: VIEWERR: SHOW/MESSAGE !DMSTAT! JUMP ERROR BREAKERR: SHOW/MESSAGE 46700 ERROR: SHOW/MESSAGE 46703 IF (OUTPUT <> 'REVIEW') CLOSE/F FID = A,ERR=$CONTINUE END_IF SET/DEF RESULT = Y ACQUIRE/PV MESSAGE 46709, C2=MSG INQUIRE/PV DUMMY, '!MSG!' RETURN_TO_SCREEN  ! 7 @0Kt@0Kt70 generpts.src77.src7 generpts.srcEH!% =  ,3  ,3ࡱ> =?<q bjbjt+t+ GAA] t9;;;;;;$NBB_@_99F99 8Nk9   jU &P . A!)")#$%nJv.g raPNG  IHDRM-]SgAMAIDATxݱƾq`6pႛTiҸMK {,HMOu㟟mVӮe~՗]Veq05555555iߞP)7 Bt_W_*ҹ ugI#,o@ =VrŻs_o9,p3k&d9cOyu0w)TŪpjnd9Z]:ܿBsathu}[)1Vy9iKɖ {/-a j e9"->4+.W׭Tc3{9q_Y΢V\]l>?^Zk^zL}NF?NOlF?Y) tt9U_[wcT ;jˊe9 ~|nI4p,gŘnY pL,-bڗSSSSSSLSJ]d{9i*R??y{2m6ldᙽUQH8RJ5Zs8~9s̟wꃣoq mPS,o%}5tƅ4)RaCVN>ƪRJ~V|;|f|REWvrãd`FrRh9ĩ_&__߆|mpXMz] n?m }i7#|uZ~[5YλwNPV\Ե&)P0L uM[G.I~z߱H)>w>kұw]O&y3*WR @6˩Qr'po%\s߱bo'po%@gGcZ;V777+@>K$%߱'r&9>rd9@L &Y,I$b1rd9@L &YSܟQRz;3E,TRLnEoϽG,7ƅwM>Ol^zE6O>?9ICgW>Iw/lhn]f&"Uۃ+'ɏYstեC|:OrC{0o}6/fܡ ,kQM";< j>:65˧Q?˰TYNɛArnWUOtֲ/¹Fӹ->\`=8*mu4@>x5sQi**eoLpVaM.:|]^{߯Yɶ[c5(2ٮy 4nG5-젹wM?ȗ9UPXخuoJa¬&w`ºeoհ/sXVuQ)lwy|&å&['ۮ6u.;c啕s5k-.]׺ʯO[0MeWvZעoV&+?V#d*,USEjjh-5lWcčlr*SH~% kt;S} 7 jC_&Ny]<oNuGۋK)YY=%\}k|@uYwf1~wԊ*(Hg_YNM_ Ug<ȟN̯u(k`Q03a5K+T~rV80FaG;1V蜴.s=GE5)w,pu5N3Դu&+_U{t.\=^v*4_{8,qmuĝ15к^\{-4fP9fc.E}t}{%LřMtV\:|+ 5|=o+z~[TǿO*uU)0`oM);Vo|GC KJkەŽZjRԮZ훻R٤xVhFJd=yVEGbGpG6__N"ۙ }rTuNc7}Ͷc+Uͨ]3&5UfϣNlwrV7qʋ૿-(}8ڟA2y8M0y2|o~-ܬ sx`rE7ܚ;UaǨ>B}nUxcCg#gK9\Eu5VjUh(jC6sKBy@9jd_\ŝNW}u'gfm)6jC7hEa]lxDfmumy#`Ҏ$&C LN$1R.& ̵Z".ZעZUX{w.@Ty{)ʯ~ss ҔK,`s*GԗYmS`5s,Дyx05[(Yj(_2b*UmT=:8N]}sR"O>{H);^H/Z9G:lx͉X9ik^oNPNԒ1Mg9gcIvt 6@\r|c&vtv;VMrd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@LYW/+lwIC@skO)}O+\,X&͓>/D}~9 #c/r܌ҧ~|7*~9O>?9k-*}*Ĥ_,ݼ`,'213x1mc5Jn9~r/o9r`od9@L~ IĔG63^z:777+@?65555555_8IM]=?5/tGm$Lg9mW޶d c4&5JNGi^EO;Kq|O)\6 OO IENDB`n'"Si}x2PNG  IHDRM-]SgAMA IDATxݽI.`sYkqu]cYgkO xrYGV;u>FddFOTUf REfdTuDY@nB_>NQ޾{;Ev!o^.w;35555555 !/(^ YΧ~?ϖf9kBNIxo~rNi69Qw:~?_VMe4555555`׿S_nnhg.TH4ܽ0^zontp:2l~}kћJcjjjjjjzi` -LC_d35!Os+,z5(xf[f~KgW>%!O(w{IoSl/wEu }YผPoU3h-g09ƝNe¸%/H=GR!3s⺲IMx hbԖ U>f+ʌsy3OxSꇸ5(!k)M=ͯuƭj~s]ߗ/XT{ՒrgMtMrSg93! 鞟4gLzf`jjjjjji3{,'E67!?W4ONu쥪j$O&r9\J}9g~V68p8-H=? _ xloYڐn%YOOOEZ 0Us*I؊θr:::Cx;$-y{k zgwyCWXya2afΰ*n~}n:w ^|S: ñuS5t]C-߄a9- }hQfuʯkh8PLzUwz?9};WP;Mwޢ!cލtm2rTk8Ϗ?/C]+u]jd#}]#w̺fMz`FS$4ʟ2j.Mlo2{pD6^X;`뗊md%43 E> Cӌ1݈sv2k%1E<[gZ}3tCidsBBh BMx8&OSTG'v:#g|\ћy.>(5c4P 3],zN;"霽Ym̘L9vYW<~|D6ܽ0.g{nn?LF *ӆ9UyfӘStYߜfHϦRnށ͓L mm9o_A\XIoј04}.N+Vis+VCd.ĤF^Q+h~ka;EGu/"b;;aL=Ui%¶k1~ˏX\߱j`\P'IIIiuYE~}YPe9Er:r:r:r:r:r:r:r:r:.wX}YPe9Er:Py!YCFӀmh~]!m[9U6g&Cټz涷`stl+5.֣s<2/*.ݑ;C0;8d1u]zI5˪`;5GSpōYq՛۫=VͿ!!"Ȟzݰ3ѥxu;^6_Qfn?9 f6?`dCJPV:GǽֹջT{$M]ߍtԌUz-#k>&aYԙav=G;Daz%o7゙Ѩl7uy8zH;Lj<2+Sm|`ID>xyt>ڌu.>N]ލx|iFtcqf8©kdQ~YpH #-laF ;O#Ё(߄myXR¬ݡ_jpMUfw䍗-i`[d-5c?<Ew]^פu㦾Q7T:ϷĒ?zo3NKM6f/XPg%.=;L*d6?xcUܼmkȩ W4yg[X>~fƪ6Nz<ʿSߨL.jt%Oēej㗬D ճfnpQ(}WXO\jﱊ~]Rթu:*̤^&6c}RA4:+_99.7fj2d!ӌݼIߒC9e^ݡȁ(v6?uq9Kto_v|%NY&ƒ7mfKЁcKH#-7~[.q!CIW;߁1u"[ogKXpdz {̡lnռ77!/iw?I?==|ӤEJ}zgg2̧1/}ǯNif]Kų qun1ʼho nC-BMdBxo~t BlU:]+zW޼&ڹF*D6ܽ+(khzKY6R7r2@S=VdOh8r"TwiuYSpd9@V!$$$$$$$$괺,g϶:`%d9@V!괺,gNZgk(~vN#۸M:/ZuދCv*8ϏܵE77wqQg ҶSڬJkڬ.˙GeR{jkEK5LQd8^<]lmg9G}ގN;C[?)DGCKQ:~XCm;9* ݑdZ{Bu: G. u3/լ {ɼpeRq<:}ݣGyupv`Nzg^nd.'ovOeը>SobZrV۾Ǫm u;:_)j/< 6ס2Ke:O׶::p_~* Csu@܄|>BSw?I?==|ӤEj=W>~|D6ܽ{n\VN,El{\&TiX]PU1P1YP'YP5f9nDT ,`}_NS᷿s١H"E)h/B߱ O`W\X2.r S>,d9@d9@d9@d9@V~P>,"d9@d9@d9@d9@d9@d9@d9@d9@d9@VvVD>,"d9@VV7U.xY7o4 >}w*~vnn]*_=TGWbuYy4Gv,w7{&G+ 77wͿ0ԠWrmn.wo"AdffYC¡JPJ/22jB&!op8L˟&-Ѥz(z2}~݋r-!q2]rI(~uUfBxp +zrbr:.(BIIIIIIIIiuYnwݟmuJr:.(B)ln c!ahNg^cndQ<äB/)wZw%{%T|k"O?4ͫon{ 6zѪ=va=C5ӶV||~~|~~lsۃ RtwhL)}|ƺ|כW<.61sjm77wS=. 'v/+a7Ue9·qqww6`I-lӦ1]W'y{/=w 3AV7.tK{L:V|]*pyk?vh~vJ F2W|Cq9cqek^wǗa12MR;fT,'lJnFw(,aħc3Ę|ՌKHE.u]ҌuL1]KQgc׃|Uc䝥lK83.YW::m+wCgfcfm2l]:&!r0/Hp̍EcnTayWy~_#֙'w̬nhlWroF,Ge󭀬DClBo߽ϽNAas`Cr:7w/ fJK+)}n%]++VRUZeףc\tq9@ V)`+d9@V!$$$$$$$$괺,g϶:`%d9@V!F6C?64wuCmhovPϏ\YiۘREgSD6>~h"WlU#-yej*yLOmvڥ[a'/>77.rK[rRC=ϏϏ2`*Ӟ+Ӥ3wӷy~=I_EgҾ^27d9G %SQ~ЛV*e?u5hģakTҔ-gjӎA W|^6IC3C)NXOzssZCLP{qa g.u-9]2vDҘgjQ8}YcZgf]qA XL4F&p^`R;MZ3-)d-qRc E;G+,չ)شc]F%_D&i/-o:2/#)~u(v\N)Śf%g0'43g K޺P:8";(^j|b +mhp"-J܄|>Yηx8&O)@Sѻ/hF~?ѥz/y̍T C=-Jo[5{TZ֯hClBo߽ϽNAa{9曻j{ g7|hK'6Q|c%8$Xa32V MpP'} iuYo6x@iuY@NNNNNNNNNrvlVx@iuY@NNNkrsX}YP5f9˥m\㇦ 8j7ԛ_)RH"E+H#—χBSBh 0/ڦ*xЉl{a\Pr:+:r:1XNIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIԩ?we9`IDATvmvtt ydnCv&׹HfCܥy:[ԎiݶG6jr:Nids;TB믧BM3.7MGp8L|F0.q9@ff9v|Wm'4u?.7Α+!Nr#Ci XYP}W_ ru;V@d9@6.CSvt.V&!W\S||D6ܽ-h #WinhrBQo߽غv+h+/[3PStz/vwx6ܽ{8[tuNjj -IENDB` [$@$NormalmH <A@<Default Paragraph Font /Xb$v.g raR" b$Si}x2/"t%@(   <  # A<  # AB S  ?($34($34FHBUCSD:\Data\TechlibDEC99.doc@\_@UTimes New Roman Times5SymbolI& Arial Helvetica"h A& A& A&r0FHBUCSFHBUCSOh+'0|  , 8 D P\dltssFHBUCSHBUHBU Normal.dotFHBUCSd1BUMicrosoft Word 8.0@@V9k@Ik@V9k՜.+,D՜.+,H hp  BHP World Minerals Discovery-1  Title 6> _PID_GUIDAN{CD0FE9A8-D792-11D3-BE8D-00A02437E267}  !"#%&'()*+-./012356789:;>Root Entry Fp&NkPFKNk@1Table$WordDocumentGSummaryInformation(,DocumentSummaryInformation84CompObjjObjectPoolPFKNkPFKNk  FMicrosoft Word Document MSWordDocWord.Document.89q1  ! 7 @@06N&Wt@06N&Wt70TechlibDEC99.doc777TechlibDEC99.docFH!" =  .5  .5ࡱ> >@=q bjbjt+t+ IAA] $B@  ]k    jU &P . A!)")#$%nͩA ;?TPNG  IHDRM-]SgAMAgIDATx=GҢo X65,,(h' 6t1E7;N@̙>Δ*I'{۽R]]3S?σh_f)D )~ϯ^oOQ8p~ ~'O0oF34444444L)}T/#Yλ_~_ֿZKT/^]rF«ox19E YΉ8]-ֶ5J[agG;VqӍ04444444aߞPi/铧 Jt^~ˇFYN:uOߺor>zqWr />h&al~+`.Ncc^~/hA#J[Fo>z7 yROz:pfǏ~*jXNyר4,I5VU9nvl7ЫxdSw[6^9UZP~7tYr̸w-Y( r`nQ+RIs ,Qyjژ}o,QRt3]* wdU=RIg9}bE&p蕭W&3 ,f(2~at+b[=3')ƪ>o4勡f7ʜZ ?J;Z'.pUwTN0:s>] Iii9Hɑ&Z*96rE[|%}hv_G7S!#{1,gSG3.Y.^=|{kM /y@0rV'FܧփT|fJiLax.+{ZV#<ۺ_Ь_XE^cudƲ $zMg:qM, YNxM,McؗCCCCCCvՏ)Qr4h,isK4y4׿|ǔǟ^tc _N2|=?Ubg.9B$b1rd9@L &Y,I$b1rd9@L &Y,i<\IRzt/vc˧Q\̺VTR}&T_2ҋsjn]Jټ.yU:O6}mCKVW5QXíEs{ccGSM vlF_UWzDRfY[_N߇ofF kSj.EG.Aގ`T\ !1~s,u5W͠MG?y甘MkɤM"gV+m^a?Fo깏e}az \"e _G%oݱgcQy&kxi{(TjBעkf[tL_ Sf }geca_;g1#3ը_2j̬ޥ=jéy(KSVcd^[[+o?KaR`S9ck~FoX$[C# `N ᩧ:Lw#K©Nϯ?n]d06cZCy͎:E>E56u~ki_i u;v"} iO~tF4RFqSl}ּ͚Nr{g˿VBZskJrQn<}vcߑ}RfuO섧XW~ݽR٤^~ˏшRVSu 5^=8>YY F6>y9Vp3Y;Ju}l3ي!v);ޜahY,i+*1@E3ۛ*MsY-km.3}3_ @$~9r_/puvp}[*Ջ } FPpktCM[!jxrpR>^2{7y3Ax%5z/ ׬{/~׷&ȑ{v5Ԇs~9m>`r5>n?ip\Ƿ?F @$ N r´W8[7{OZ%B+7dkiҍ7Q}tSeu.*zљ vz)/O~uq+5VUx&aA\id5VgeN4r"{TX'j|V/=QV} u{oLۆFmNym(pt̬Ѩ¾MyjR@/g<[>~QtT͔צʗv7qL+B{bX+Ska'تk)ȟ ط*_8O1uZHg V~٬n!KJngK//0%o8v8L^`E%Oj@Ã([JѪʴNEZҤ2;Ut3-|:-UC(ovzxz>R֩쓉* z)Zթ+Q^Ã2󪻕WKkgfNkT%?.xf*ɬS}#zU^I1y:jѪ׾FgR67٪}s0ا~9G+X-pmW+xwƫpNSxI2'txtw۹GIlcL`;T)Sr-f+zg\M$gu z;pӏA8r\sd93#߲jk$[*<77=O7&[ w"V>?v: suڗ(VSҸi 8dJ;3Ҩ3c" \(v/ra%w8*SúQ}2 By4wUA|3sU6Aag*/pSp^Kye ̙]ak5Ww|Vf2 \x^s>q(5ybu2Kv |Y ;I~;UND5~ 4}Xo򛻻M<{y<4 Z-pI>efz/J`=K-!Ӕyvcy*ʗLu龑?e6hTXl*$O'hRJ]dRz/?rF#RJgk崠t-*꩕{oͧO8qY͞jb7~s,_D)Y|skl />Ts1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1r泜wYp?0iWݵd]sM/^a4ZrzW/gٸ r/i<\ROJU`/gGt Mԯ2@rbڙ3yy ~9@L92 CXAY h,½=z$Z#b+ &Y4y8}CRu(7l>K)u#RJ݈/^^[|x7l>}."3r h83rRU^o \6泜3 [2) 3%T/𪇝%i|)ӕ\6\-# IENDB`n"{^ 1PNG  IHDRM-]SgAMA IDATxݽI.`sYkqu]cYgkO xrYGV;u>FddFOTUf REfdTuDY@nB_>NQ޾{;Ev!o^.w;35555555 !/(^ YΧ~?ϖf9kBNIxo~rNi69Qw:~?_VMe4555555`׿S_nnhg.TH4ܽ0^zontp:2l~}kћJcjjjjjjzi` -LC_d35!Os+,z5(xf[f~KgW>%!O(w{IoSl/wEu }YผPoU3h-g09ƝNe¸%/H=GR!3s⺲IMx hbԖ U>f+ʌsy3OxSꇸ5(!k)M=ͯuƭj~s]ߗ/XT{ՒrgMtMrSg93! 鞟4gLzf`jjjjjji3{,'E67!?W4ONu쥪j$O&r9\J}9g~V68p8-H=? _ xloYڐn%YOOOEZ 0Us*I؊θr:::Cx;$-y{k zgwyCWXya2afΰ*n~}n:w ^|S: ñuS5t]C-߄a9- }hQfuʯkh8PLzUwz?9};WP;Mwޢ!cލtm2rTk8Ϗ?/C]+u]jd#}]#w̺fMz`FS$4ʟ2j.Mlo2{pD6^X;`뗊md%43 E> Cӌ1݈sv2k%1E<[gZ}3tCidsBBh BMx8&OSTG'v:#g|\ћy.>(5c4P 3],zN;"霽Ym̘L9vYW<~|D6ܽ0.g{nn?LF *ӆ9UyfӘStYߜfHϦRnށ͓L mm9o_A\XIoј04}.N+Vis+VCd.ĤF^Q+h~ka;EGu/"b;;aL=Ui%¶k1~ˏX\߱j`\P'IIIiuYE~}YPe9Er:r:r:r:r:r:r:r:r:.wX}YPe9Er:Py!YCFӀmh~]!m[9U6g&Cټz涷`stl+5.֣s<2/*.ݑ;C0;8d1u]zI5˪`;5GSpōYq՛۫=VͿ!!"Ȟzݰ3ѥxu;^6_Qfn?9 f6?`dCJPV:GǽֹջT{$M]ߍtԌUz-#k>&aYԙav=G;Daz%o7゙Ѩl7uy8zH;Lj<2+Sm|`ID>xyt>ڌu.>N]ލx|iFtcqf8©kdQ~YpH #-laF ;O#Ё(߄myXR¬ݡ_jpMUfw䍗-i`[d-5c?<Ew]^פu㦾Q7T:ϷĒ?zo3NKM6f/XPg%.=;L*d6?xcUܼmkȩ W4yg[X>~fƪ6Nz<ʿSߨL.jt%Oēej㗬D ճfnpQ(}WXO\jﱊ~]Rթu:*̤^&6c}RA4:+_99.7fj2d!ӌݼIߒC9e^ݡȁ(v6?uq9Kto_v|%NY&ƒ7mfKЁcKH#-7~[.q!CIW;߁1u"[ogKXpdz {̡lnռ77!/iw?I?==|ӤEJ}zgg2̧1/}ǯNif]Kų qun1ʼho nC-BMdBxo~t BlU:]+zW޼&ڹF*D6ܽ+(khzKY6R7r2@S=VdOh8r"TwiuYSpd9@V!$$$$$$$$괺,g϶:`%d9@V!괺,gNZgk(~vN#۸M:/ZuދCv*8ϏܵE77wqQg ҶSڬJkڬ.˙GeR{jkEK5LQd8^<]lmg9G}ގN;C[?)DGCKQ:~XCm;9* ݑdZ{Bu: G. u3/լ {ɼpeRq<:}ݣGyupv`Nzg^nd.'ovOeը>SobZrV۾Ǫm u;:_)j/< 6ס2Ke:O׶::p_~* Csu@܄|>BSw?I?==|ӤEj=W>~|D6ܽ{n\VN,El{\&TiX]PU1P1YP'YP5f9nDT ,`}_NS᷿s١H"E)h/B߱ O`W\X2.r S>,d9@d9@d9@d9@V~P>,"d9@d9@d9@d9@d9@d9@d9@d9@d9@VvVD>,"d9@VV7U.xY7o4 >}w*~wḹ;K8=겜hXn7{_dj+ZCeLuYNi7Y}2D3!_PSgk&ʒ.H\IZaJ/RyқzvLd9v 497~{|Waq݅}w=miZHӤq)CggONdXT\v)^Ō>Ђ3҃YۑaŬ䥑P[^'p /K#{5t߼zq9W+2ss dt/ZUiq9#3c:R|gƭRs."V)fHVܖur⏭OQCӢ%]8ڇtNigq. bF3L,ċϨ`4 !||!4!~<jzzzIl4h`=L|>t|s*zjqH̯C\`=CcU:{615c\+ 겜lH>,"d9@d9@d9@d9@d9@d9@d9@d9@d9@VvVD>,"d9@v<_Z~u=??onF3LZ-_!4"r8ü0kZ +5ͧ7hB~qi[+>=??>??LQAsdq C;4&>>c]+ˆa^QfEaʾ P󸜶KΩ=KMj ِpn&v0( DˮǦorZy4m9lڥ+_ v#ig)؊fwi`$s^~4lT:.{#Nlk9}0R1 fWf?=^j<Ůw~LQʳDz!+B?n<(O!#GzvK>M:\갵+tq8&u6uzpjǪ1t%]Ǭ+6cLdR%3s|K3۶׹evyE;onB_>,~<jzzzI\[4FIfm}%Z8q<ϧ fV7R+}9^ #vZ(#/:!χBل޾{{9z9t"o^spVwg=.7_aV8}bˮG Nr.)S Vr:.(BIIIIIIIIiuYnwݟmuJr:.(B)ln c!mhN%gnWfmf !1}/!& !}7?r:!-r8cS(D6ܽpPtͅohLS<g9b32}pj仏:.YM3Fr:.(BIIIIIIIIiuYnwݟmuJr:.(BIIiY~p+Q ,`4 >}Tہz+E)RHQ}E>idsBBh BMx8&OS۴?cB_>:7w/j`\P5cr\}YP5f9r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:r:g9>~x,خ4mNAß72IDATm:il>~4^]ظ`q9q9v5r=V@ |_P'ߗ)ln B_UTtz涷I?==o2u2.,?~~3ƸN92`%d9@cIn9zr:-6"T໏+A6N~ ,S>~h ڎӥ 0^܄|>BS5`/曻7M!qdq9cSSSSSSS M;rYN([wNBSvmekpNB4tFX !~`NIp8Pl1_IENDB` [$@$NormalmH <A@<Default Paragraph Font /Xb$ͩA ;?T" b${^ 1"&@(  <  # A<  # AB S  ?($34($34FHBUCS*D:\Temp\AutoRecovery save of Document3.asdFHBUCSD:\Data\TechlibDEC99-JAN00.doc@0Jp@UTimes New Roman Times5SymbolI& Arial Helvetica"hA& A&A&r0FHBUCSFHBUCSOh+'0|  , 8 D P\dltssFHBUCSHBUHBU Normal.dotFHBUCSd1BUMicrosoft Word 8.0@2~@RĦk@Yk@V9k՜.+,D՜.+,H hp  BHP World Minerals Discovery-1  Title 6> _PID_GUIDAN{CD0FE9A9-D792-11D3-BE8D-00A02437E267}  !"#$&'()*+,./012346789:;<?Root Entry F`\k#]kA1Table%WordDocumentISummaryInformation(-DocumentSummaryInformation85CompObjjObjectPool#]k#]k  FMicrosoft Word Document MSWordDocWord.Document.89q ! 7 @@00'Wt@00'Wt70TechlibDEC99-JAN00.doc777TechlibDEC99-JAN00.docGH!0' =  18  18ࡱ> =?<q bjbjt+t+ 7GAA] egggggg$VJB@eeFee 9Pte   jU &P . A!)")#$%nJv.g raPNG  IHDRM-]SgAMAIDATxݱƾq`6pႛTiҸMK {,HMOu㟟mVӮe~՗]Veq05555555iߞP)7 Bt_W_*ҹ ugI#,o@ =VrŻs_o9,p3k&d9cOyu0w)TŪpjnd9Z]:ܿBsathu}[)1Vy9iKɖ {/-a j e9"->4+.W׭Tc3{9q_Y΢V\]l>?^Zk^zL}NF?NOlF?Y) tt9U_[wcT ;jˊe9 ~|nI4p,gŘnY pL,-bڗSSSSSSLSJ]d{9i*R??y{2m6ldᙽUQH8RJ5Zs8~9s̟wꃣoq mPS,o%}5tƅ4)RaCVN>ƪRJ~V|;|f|REWvrãd`FrRh9ĩ_&__߆|mpXMz] n?m }i7#|uZ~[5YλwNPV\Ե&)P0L uM[G.I~z߱H)>w>kұw]O&y3*WR @6˩Qr'po%\s߱bo'po%@gGcZ;V777+@>K$%߱'r&9>rd9@L &Y,I$b1rd9@L &YSܟQRz;3E,TRLnEoϽG,7ƅwM>Ol^zE6O>?9ICgW>Iw/lhn]f&"Uۃ+'ɏYstեC|:OrC{0o}6/fܡ ,kQM";< j>:65˧Q?˰TYNɛArnWUOtֲ/¹Fӹ->\`=8*mu4@>x5sQi**eoLpVaM.:|]^{߯Yɶ[c5(2ٮy 4nG5-젹wM?ȗ9UPXخuoJa¬&w`ºeoհ/sXVuQ)lwy|&å&['ۮ6u.;c啕s5k-.]׺ʯO[0MeWvZעoV&+?V#d*,USEjjh-5lWcčlr*SH~% kt;S} 7 jC_&Ny]<oNuGۋK)YY=%\}k|@uYwf1~wԊ*(Hg_YNM_ Ug<ȟN̯u(k`Q03a5K+T~rV80FaG;1V蜴.s=GE5)w,pu5N3Դu&+_U{t.\=^v*4_{8,qmuĝ15к^\{-4fP9fc.E}t}{%LřMtV\:|+ 5|=o+z~[TǿO*uU)0`oM);Vo|GC KJkەŽZjRԮZ훻R٤xVhFJd=yVEGbGpG6__N"ۙ }rTuNc7}Ͷc+Uͨ]3&5UfϣNlwrV7qʋ૿-(}8ڟA2y8M0y2|o~-ܬ sx`rE7ܚ;UaǨ>B}nUxcCg#gK9\Eu5VjUh(jC6sKBy@9jd_\ŝNW}u'gfm)6jC7hEa]lxDfmumy#`Ҏ$&C LN$1R.& ̵Z".ZעZUX{w.@Ty{)ʯ~ss ҔK,`s*GԗYmS`5s,Дyx05[(Yj(_2b*UmT=:8N]}sR"O>{H);^H/Z9G:lx͉X9ik^oNPNԒ1Mg9gcIvt 6@\r|c&vtv;VMrd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@LYW/+lwIC@skO)}O+\,X&͓>/D}~9 #c/r܌ҧ~|7*~9O>?9k-*}*Ĥ_,ݼ`,'213x1mc5Jn9~r/o9r`od9@L~ IĔG63^z:777+@?65555555_8IM]=?5/tGm$Lg9mW޶d c4&5JNGi^EO;Kq|O)\6 OO IENDB`n!ԬkpPoG37PNG  IHDRM-]SgAMA IDATx?/ӦÓ. 8rIOܬYX.s;X'׉ Lټðli'N&.~ }j:)IuZC#HGWGU)DtRp?~x׿r`IWw_{4?1z̓f9?>[KTخ& 9_'?~,].f9g4]osߪִn9lOlg9M醦mB|\NS `#_/,'r뿿L?i#_Fw]1555555}i` -MPd˧35!Os+?;` *Un7+V'ջvwEu>,ߏՓq9FߪJ=м[} *F4 -34ϜA3Sr?/›?KYNV"3 ʺ1T1|A{0|+ YvfT=RIrDwLniLoLaX,gY9Ò4f+؎ُ^3i]&˙zz> h Ҕo4UrJݐrfoOEj]z{sz ݅ޕijh/lzId9 sk8rS; +rE{|S,\>G^R!3s⺲YMx hb-|W Lse3Wx.S닸5)NRzo춪 u}^ZcLSV,.s@r-*@fӽ/{/ >G|[DZ_!vn4,},mttC*-\؊޸rz::Cx:& {gF2~.RF{_LW*9߫RcKϏck轫SށRұV ͘͠k&yi*kG Ty]c 6ǁ1=V\vCit=nR  nUo{!ޯRwf|_%[[rEWj9rIlUdt0rjv~zDK1.g1=V%b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@LBY懵#nX{ss}:e-77wu{ڪk~wlz34>?Thۢfm[csULw"o= [yF>/l:@oSnw_4EyOw,*TXnIrȋ?u(ˁMz~~8U;'KS:( +R[4&-'ͭb߮ h' c<˹+`!2cbF/W ި6X4a?ccpp:iݽg0Uy%¶k1~ۗpq9  &I$b1.yo@^\>,iuY@ &Y,I$b1rd9@L e9nw+Q bZ]P,)ln .cH)М5a=^h ů 6$vKZe~i"77oo 6wѪ_vcͣ --~];-ݑ{c0;81w] k/+v>h؛6_(6fǽ ;.7W{Թ!"=zaoΣKu+eUhzCsm,Lpl۠'~$)JJHx:OiƬu .I_Ww#!Ag5cbU){^Ě<g&fXeY8Ewî[Y ݌+fG#gA!e0lh &lOt:nGq߸|]K_Ww}~*4\UToq8¹kb~ TlaA {DWM؆!%-o/^XeGUXV'eK-3/kF\WϬ5cݸoԲ-덕?`3K.6eXXg[ztwU4˲m~Yt VwUu˶1>dͻv?gfo7[[c5zS:@\9ēenOYיg ݚTtS֟8Xu ;{JUkܫ0j,{]/5TcU֪ o⠱)_ipnc(c 8͛T,iuY@ &Y,I$b1rd9@L e9nw+Q bZ]P,iuY~?kNQG6݂7h{/&YCvqknnsvzU Ef-^W^fuY,m<*{mUS]. E"[l;9ۇ3gzhlrέVXu~r*8C;`w)%F"֞Pus^‘:zҗ0`r|,\Y`\LaNAorhzۣj|upv`zgYndlBNl*d9@L 5f9nDT bZcp}^NSs٣H"E)W4!ZXW`W^XqĴ{\T bZcp:Y,I$bZ]?NrB e9Urd9@L &Y,I$b1rVvVD>,iuY@ e9~pUy+'z~~|~~<\A#ln?o ]꾏;]ףKuas(J.˹ގ`hI#]B zE+vhݡIe]cvq_w&"kOαka5+kt<v'ˋLԳd>O!+-ܝslJ1دzӯUxm!N@t{'ݰ-W/4ymԳnĂǺG jӃYn#O=iWPG6cl]Ь~KHנ|4_#׭.7\n\eѹmt\zW_QdZ՚GrrGo?O _"kU=ep ۲t\NQcS*epѽ•+}}ܻj즪C9*ѯkoLs.Kz3T@ܤ>:RSͷY?==zìE6ToUO?zo* c8̯c\`=CcU:{6]z3\k Wz겜kf e9Urd9@L &Y,I$b1rVvVD>,iuY@ <+!t9Wt_x]Ϗ㛛Efuέ"s׈+,PQ]l>~xD6߼,ER m0W(J>hY^ݬ vf_+T8WEv Cؔ%ն77wcGñ=NzYv鋔JX|M,'}Gܽ]h۝`Y-lӦ)\W/y;TQo׃V7.|ǗptzEvW[;֌򑴷lESR1]BĹǪ{i~ּ6?߽T?+G7ݗ1cz. R,o٘\_܌yXLA|>v=C$=V .!y)Xg嗢.ƮDǪ1|S8 .OYW>:o+w >f>mv/{%[I)}tȳop8̪իf-RTƇ)7RͪмBm+)OR٤}7o RJ[p7E6_}+ c%TMc,^hykV+6WX+ &} Ĵ,ǥR bZ]P,I$b1rd9@L &Y,iuYnw_luJTrVT!b1r֘\u 5f9#n tt!UtJ"E)R8Eܤ>:RSͷY?==z6>P>O^dĴ{\T bZcp:Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L &Y,I$b1rd9@L ,QlW6Ӥlo'sR_:/8>~xҼ~7br-jnGՌF6"y9@L>/)ln RJ_~#(UIDATUP3~vY?==o21Ĵ0ϸ˶`,/l;1.i8G,{zɍ XYө7`Ud9@L>/k#b=V@L <|)h;:OOO/V&!o޾X3Ћlf |6ټ~v`\NtC޸~zߪW lY; YN׭i:%ݩ^馧5?/[J|uN?e!] jIENDB` [$@$NormalmH <A@<Default Paragraph Font ?b$v.g raR" b$N;"KU 8."b$ԬkpPoG37!t%@(   <  # A<  # AB S  ?($34($34FHBUCSD:\Data\TechlibNOV99.doc@$0@GTimes New Roman5Symbol3& Arial"hA&[Br0FHBUCSFHBUCSOh+'0h  $ 0 <HPX`ssFHBUCSHBUHBU Normal.dotFHBUCSd2BUMicrosoft Word 8.0@F#@]k@QPt՜.+,D՜.+,H hp  BHP World Minerals Discovery-1  Title 6> _PID_GUIDAN{CD0FE9AA-D792-11D3-BE8D-00A02437E267}  !"#%&'()*+-./012356789:;>Root Entry FokPt@1Table$WordDocument7GSummaryInformation(,DocumentSummaryInformation84CompObjjObjectPoolPtPt  FMicrosoft Word Document MSWordDocWord.Document.89q ! 7 @@0N)Wt@0N)Wt70TechlibNOV99.doc777TechlibNOV99.docHH!#