From owner-sqr-users@list.iex.net Thu Oct 1 00:13:29 1998 Date: Thu, 1 Oct 1998 00:00:00 -0500 From: Nathan Treadway Subject: Monthly sqr-users Hints Posting sqr-users Mailing List Hints and Guidelines Nathan Treadway, Ray Ontko & Co. (nathant@ontko.com) $Revision: 1.0 $ $Date: 1998-09-30 20:55:21-04 $ This document gathers in one location information about the sqr-users mail list. Directions for common list-server commands are given, as are guidelines for list usage. ______________________________________________________________________ Table of Contents 1. Introduction 1.1 sqr-users Mailing List 1.2 sqr-users Hints and Guidelines Document 2. Basic List Server Commands 2.1 Subscribing to the List 2.2 Unsubscribing from the List 2.3 Digests 2.4 Problems 3. Posting to the sqr-users List 3.1 Posting a Message 3.2 Replying to a Message 4. Job Announcements ______________________________________________________________________ 1. Introduction 1.1. sqr-users Mailing List The sqr-users mailing list was created to enable discussion related to the SQR database language (and to other products from SQRIBE Technologies). The mailing list is provided as a service of Ray Ontko & Co. . A searchable archive of past postings to the mailing list is available from the SQR Users Group web site . 1.2. sqr-users Hints and Guidelines Document This document gives various hints and guidelines about the sqr-users mailing list. It will be posted approximately monthly to the mailing list so that new users can see it (and existing users can find it easily). An HTML version of the document is always available at http://www.sqrug.com/~sqrusers/sqr-users-hints.html. If you have comments or suggestions about this document, please contact me directly at the address listed in the title section. This document is (C)Copyright 1998 by Nathan Treadway. It may be freely copied and distributed provided it is not modified in any way and it retains the original copyright notice. 2. Basic List Server Commands Here are a few basic list server commands. Subscriptions and unsubscriptions can normally be processed automatically by sending the proper command as the only line in the body (not the subject line) of an e-mail message sent to "listserv@usa.net". 2.1. Subscribing to the List To subscribe to the mailing list, the command is subscribe sqr-users Your Name Note that you do not need to provide your e-mail address as it is taken from your message's header. You will be e-mailed a confirmation number, which you must then send back to the list server software before the command goes into effect. 2.2. Unsubscribing from the List To unsubscribe, the command is simply unsubscribe sqr-users Once again, you will need to confirm your command before it goes into effect. 2.3. Digests Once you are subscribed, you can request to get your messages in digest form (one large message containing all of the posts made each day) by sending the command set sqr-users digests If you use digests you should not just "reply" to the digest mailing. Instead, be sure your message's subject header matches the subject in the original posting to which you are replying, and that you don't include a quoted copy of the entire digest in your post. Use "nodigests" instead of "digests" to restore normal distribution. 2.4. Problems If the above commands do not work, please contact the list manager at "sqr-users-request@usa.net". (Do not send a message to the list itself -- no one there can help you with your problem!) Please include a copy of the error message you received from the list server. 3. Posting to the sqr-users List In order to post to the mailing list, you must be subscribed to it (see directions above). 3.1. Posting a Message Once you are subscribed, you can post to the list by sending a message to "sqr-users@usa.net". Be sure your subject heading describes your specific problem or question (i.e. don't just use "SQR Question"). In the body of your message, include the following information: o SQRIBE product and version number o Operating system and version number o Database name and version number o Application name (i.e. PeopleSoft) and a version number, if any Also, include a short code sample whenever possible. It's much easier for other people to understand what you are trying to do when they can see the actual code. (At the same time, be careful not to post confidential code, since the posting will be placed in a public web archive.) Note that your question should relate to a SQRIBE product in some way. Don't ask questions about PeopleSoft, for example, unless you are having SQR-related issues. (To find out your version of SQR, you can run the following program: begin-program show $sqr-ver end-program This will produce a line that looks something like this: SQR/3.0.15/Intel/SCO Unix R3.2 V5.0/Oracle 7.2.2.3/Sep 25 1996 Include the full line of output in your message. Note that the oper- ating system version number listed here is the one under which this copy of SQR was compiled, so you'll still need to include your own information.) 3.2. Replying to a Message Messages sent out on the list have a Reply-To header pointing to the list. This means that you should be able to simply use your mail reader's "reply" function to send a reply to the list. Generally, all answers to questions sent out on the list should be public replies, so that other subscribers can benefit. In those case where a private reply is appropriate, be sure to over-ride the default Reply-To address. If your message is not actually a reply to the earlier message, please do not use the "reply" function. Instead, address a new e-mail message to the list as described in the previous section. (This is because the list archives will incorrectly show the new message in the original thread if you use "reply".) You should quote enough lines from the original message that later readers can understand your answer even if they missed the orginal question. At the same time, you should remove any unnecessary lines from the quote in order to make your message shorter and easier to understand. In particular, in order to prevent mail loops, the list server will not accept messages that contain From:, Sender:, etc. lines pointing back to the sqr-users list, even if these lines are quoted (i.e. with ">" characters). Be sure to delete these from your reply message before sending it. 4. Job Announcements SQR-related job announcements are currently allowed on the list, subject to the following restrictions: o The subject line must begin with the words "JOB ANNOUNCEMENT:". o The message should be very short (fewer than 20 lines), giving brief details of the job and a way for those interested to get more information directly (i.e. web page or phone number). o The message should specifically remind people interested in the job to respond directly to the message author (and not to use their mailer's "reply" function, since that would send the reply out on the list). o Post job announcements as infrequently as possible. From owner-sqr-users@list.iex.net Thu Oct 1 08:04:20 1998 Date: Thu, 1 Oct 1998 08:51:04 -0400 From: GINO SANTERRE Subject: How to print a report in a window When we launch a report(SQR) in the menu of People soft. We can chose the destination of the output(file, printer, window). Do anyone have problems with the window destination? I think this option create a file named %OUTPUTDEST% on my disk but i never see my report in a window like Crystal Report do. Thanks Gino Santerre Le Groupe Quebectel From owner-sqr-users@list.iex.net Thu Oct 1 09:28:54 1998 Date: Thu, 1 Oct 1998 10:03:37 -0500 From: Stuart Wood Subject: Re: How to print a report in a window Append -ZIV to your command line in your process definition and run the report to FILE. ______________________________ Reply Separator _________________________________ Subject: How to print a report in a window Author: at internet Date: 10/1/98 8:51 AM When we launch a report(SQR) in the menu of People soft. We can chose the destination of the output(file, printer, window). Do anyone have problems with the window destination? I think this option create a file named %OUTPUTDEST% on my disk but i never see my report in a window like Crystal Report do. Thanks Gino Santerre Le Groupe Quebectel From owner-sqr-users@list.iex.net Thu Oct 1 09:30:21 1998 Date: Thu, 1 Oct 1998 09:10:15 -0500 From: "Korbel Gordon E." Subject: Page 1 of xx Hi all, Platform: Sybase SQR Version: 3.0.18.1.1 I'm working with Peoplesoft and SQR, and I need some help! The Peoplesoft provided invoice contains a page # field -- The users here have requested that I modify that so it reads, per invoice, Page 1 of xx. Is there some trick of which I am unaware, or is this probably going to be as difficult as I think it will be? Thanks in advance! -Gordon Korbel From owner-sqr-users@list.iex.net Thu Oct 1 09:33:21 1998 Date: Thu, 1 Oct 1998 09:13:05 CDT From: "C. Willis III" Subject: Re: SQR Tools - www.tcssoft.com sorry, guys; obviously I am broken too for sending the message to the group rather than the person I meant to send it to. clark ----Original Message Follows---- your site is broken. how can i get a demo copy? clark ----Original Message Follows---- We are marketing the following tools for SQR System Analysts and Programmers, which will drametically increase the productivity: ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Thu Oct 1 09:43:52 1998 Date: Thu, 1 Oct 1998 07:26:57 PDT From: mahesh bhor Subject: Re: Page 1 of xx If you are going to print only one invoice per report you can try the example given alongwith "page-number" in the SQR Manual . It makes use of a new command last-page which I think is introduced from ver 3.0 onwards . Hope this helps . Mahesh ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Thu Oct 1 10:05:18 1998 Date: Thu, 1 Oct 1998 09:51:42 -0500 From: Ray Ontko Subject: Re: lotus notes interface Howdy, Thank you all for your response to my Lotus Notes question. I also got a private reply which the author agreed to let me repost here: > Ray, > > 1. There is an ODBC driver for Lotus Notes available at the Lotus Web > Site http://www.lotus.com. We do not use it at this time. It is free. I > would think that you could use SQR to join Oracle and Notes via separate > queries > > 2. What we are doing is using a product called Replic-Action from > http://www.casahl.com that sychronizes Data between Notes and Oracle using > ODBC. This product allows us full two-way synchronization of data but is > pretty pricey. (10K). > > 3. Within Lotus Notes you can embed ODBC to bring Oracle into Notes but I > have not worked with that at all. > > 4. Other interesting and cheaper solutions may be using Lotus Approach > with both Oracle and Notes. > > Hope this helps. > > -Ben Burkland > BBurklan@erim-int.com > > >From: Ray Ontko[SMTP:rayo@ONTKO.COM] > >Sent: September 30, 1998 5:10 AM > >To: Multiple recipients of list SQR-USERS > >Subject: lotus notes > > > >Howdy, > > > >Is anyone out there using SQR as a reporting tool for > >a Lotus Notes database? If so, how do you do it? > >Can SQR (with ODBC) be used directly against a Lotus > >Notes database? Does Lotus have an export function that > >we could use to readily load the data into an Oracle > >database? > > > >Ray > >---------------------------------------------------------------------- > >Ray Ontko | Ray Ontko & Co | "Ask me about SQR as a DW tool" > >rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Thu Oct 1 10:10:54 1998 Date: Thu, 1 Oct 1998 10:29:09 -0400 From: John Walker Subject: Re: Page 1 of xx I use the following; print 'Page ' (4,63) page-number (4) print ' of ' (4) last-page (4) I hope this helps. "Korbel Gordon E." on 10/01/98 10:10:15 AM Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: John A. Walker/CEI/FirstEnergy) Subject: Page 1 of xx Hi all, Platform: Sybase SQR Version: 3.0.18.1.1 I'm working with Peoplesoft and SQR, and I need some help! The Peoplesoft provided invoice contains a page # field -- The users here have requested that I modify that so it reads, per invoice, Page 1 of xx. Is there some trick of which I am unaware, or is this probably going to be as difficult as I think it will be? Thanks in advance! -Gordon Korbel From owner-sqr-users@list.iex.net Thu Oct 1 10:16:36 1998 Date: Thu, 1 Oct 1998 09:56:43 -0500 From: Ray Ontko Subject: Re: lotus notes Howdy, Thank you all for your response to my Lotus Notes question. I also got a private reply which the author agreed to let me repost here: > Ray, > > 1. There is an ODBC driver for Lotus Notes available at the Lotus Web > Site http://www.lotus.com. We do not use it at this time. It is free. I > would think that you could use SQR to join Oracle and Notes via separate > queries > > 2. What we are doing is using a product called Replic-Action from > http://www.casahl.com that sychronizes Data between Notes and Oracle using > ODBC. This product allows us full two-way synchronization of data but is > pretty pricey. (10K). > > 3. Within Lotus Notes you can embed ODBC to bring Oracle into Notes but I > have not worked with that at all. > > 4. Other interesting and cheaper solutions may be using Lotus Approach > with both Oracle and Notes. > > Hope this helps. > > -Ben Burkland > BBurklan@erim-int.com > > >Howdy, > > > >Is anyone out there using SQR as a reporting tool for > >a Lotus Notes database? If so, how do you do it? > >Can SQR (with ODBC) be used directly against a Lotus > >Notes database? Does Lotus have an export function that > >we could use to readily load the data into an Oracle > >database? > > > >Ray Ray ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Thu Oct 1 10:39:29 1998 Date: Thu, 1 Oct 1998 11:26:11 -0400 From: td Subject: Re: Page 1 of x To obtain X of Y pages in advance.... It all depends on the particular application your running. I had a similar requirement recently. I rewrote the A/R Statement/Build process from scratch. At the START of each statement I know the ENDING balance, final aging listing, Number of customers for each Correspondence Customer, etc, AND total pages (x of y) for Each customer. The delivered process basically produces a list without any logic so a rewrite was necessary. You may need to produce and populate a header table so you can calculate the invoice lines and predetermine the number of pages that will be produced. Hope this helps. -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice tdelia@erols.com From owner-sqr-users@list.iex.net Thu Oct 1 10:44:38 1998 Date: Thu, 1 Oct 1998 11:08:14 -0400 From: td Subject: SQR Tools - SQR Analyzer/Application Engine Analyzer This is my first post to this group... I noticed an interest in SQR Tools... I'm considering posting some I've developed on my website as ShareWare. The source is "leaking" out anyway (as far as Japan) so I may as well post them. Here are some sample tools... ALL written in SQR so there are no additional system requirements. I have plenty more other than those listed below. A - SQR Analyzer (written in SQR). Performs the following... - Include File Expander (Prompts for files not to include such as datetime.sqc, datemath.sqc, number.sqc, etc. - Most of the time you don't want these!). - Lists each Routine and called Routines. - Produces Process Flowchart. * Report Listing adds nice touch to SQR process documentation! B - PeopleSoft Application Engine Analyzer. Ever try to analyze what's happening in Application Engine Process (Payment Predictor, AR Update, etc.). Sections are scattered without link to next section. PeopleSoft suggests looking at the Trace file but that only shows you the output under a "given" set of circumstances. My process maps A/E from start (MAIN) to finish. Performs the following... - Lists the A/E Cache Record. - Lists Sections/Called Sections and Attributes. - Produces process Flowchart. C - Array Processing Tools. - Need to Sort an Array - Here's how to do it properly without sloppy, redundant coding - streamlined approach used (as always). - Need to lookup data in large array - 1000's of entries and starting from 1 to x bogging down your process? Code a Binary Search from scratch (Not Load-Lookup) - Here's how to do it! D - COBOL Analyzer. Of course! Tons more... WinBatch Utilities that Print .LIS files, Ensure PeopleSoft Trace settings are turned OFF on the workstation at Startup, Access Windows Registry Database for any number of reasons (for instance, clear out your Netscape URL history automatically)! I just need to know if posting is worthwhile! I'm very busy these days! -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice tdelia@erols.com From owner-sqr-users@list.iex.net Thu Oct 1 10:46:27 1998 Date: Thu, 1 Oct 1998 10:31:33 -0500 From: "Korbel Gordon E." Subject: Re: Page 1 of xx This won't work for me because each invoice in the report starts on page '1' -- that is, in a ten page report, I might have four distinct invoices all of which need page 1 of xx on the first page of that particular invoice. I suspect there is no easy way... Thanks for the help! -Gordon Korbel > -----Original Message----- > print 'Page ' (4,63) > page-number (4) > print ' of ' (4) > last-page (4) > > I hope this helps. > --------- > Hi all, > Platform: Sybase > SQR Version: 3.0.18.1.1 > I'm working with Peoplesoft and SQR, and I need some help! > The Peoplesoft provided invoice contains a page # field -- The users here > have requested that I modify that so it reads, per invoice, Page 1 of xx. > Is there some trick of which I am unaware, or is this probably going to be > as difficult as I think it will be? > Thanks in advance! > -Gordon Korbel From owner-sqr-users@list.iex.net Thu Oct 1 11:01:10 1998 Date: Thu, 1 Oct 1998 11:50:53 -0400 From: td Subject: SQR Tools - SQR Analyzer/Application Engine Analyzer This is my SECOND post to this group... (this didn't post the 1st time)! I noticed an interest in SQR Tools... I'm considering posting some I've developed on my website as ShareWare. The source is "leaking" out anyway (as far as Japan) so I may as well post them. Here are some sample tools... ALL written in SQR so there are no additional system requirements. I have plenty more other than those listed below. A - SQR Analyzer (written in SQR). Performs the following... - Include File Expander (Prompts for files not to include such as datetime.sqc, datemath.sqc, number.sqc, etc. - Most of the time you don't want these!). - Lists each Routine and called Routines. - Produces Process Flowchart. * Report Listing adds nice touch to SQR process documentation! B - PeopleSoft Application Engine Analyzer. Ever try to analyze what's happening in Application Engine Process (Payment Predictor, AR Update, etc.). Sections are scattered without link to next section. PeopleSoft suggests looking at the Trace file but that only shows you the output under a "given" set of circumstances. My process maps A/E from start (MAIN) to finish. Performs the following... - Lists the A/E Cache Record. - Lists Sections/Called Sections and Attributes. - Produces process Flowchart. C - Array Processing Tools. - Need to Sort an Array - Here's how to do it properly without sloppy, redundant coding - streamlined approach used (as always). - Need to lookup data in large array - 1000's of entries and starting from 1 to x bogging down your process? Code a Binary Search from scratch (Not Load-Lookup) - Here's how to do it! D - COBOL Analyzer. Of course! Tons more... WinBatch Utilities that Print .LIS files, Ensure PeopleSoft Trace settings are turned OFF on the workstation at Startup, Access Windows Registry Database for any number of reasons (for instance, clear out your Netscape URL history automatically)! How about Mainframe 370 Assembler Utilities running on a PC! I've done extensive development in that area - well, maybe there's not much of a demand for those! :) Not many people need ASM370 Object Code to Source Translaters these days! I just need to know if posting is worthwhile! I'm very busy these days! -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice tdelia@erols.com From owner-sqr-users@list.iex.net Thu Oct 1 11:19:30 1998 Date: Thu, 1 Oct 1998 11:05:35 -0400 From: Jim Hardesty Subject: Re: Page 1 of xx -Reply Wow, good idea. But no, I don't think you are missing the easy answer because I do not think there is one. SQR reports are page based. A page is not physically written until it reaches the line limit or because of a new-page command. Until that point, you can go up or down in the page and write where ever you want on the page. But once the page is written, it is written to the .lis file and as far as I know it is not possible to go back a page in the report file. There is no old-page command. One obvious way to do it is put some constant value in place of the total number of pages, like '&&&&&&' and then replace that value in the .lis file at the end when you know the final number of pages. Is there some way within the sqr itself to "close" the .lis file so you could then perform an "open" on it and treat it like a flat file and make the replacements? Or would you have to write a seperate program or script that would be executed after the sqr was complete to replace the value in the .lis file? jim From owner-sqr-users@list.iex.net Thu Oct 1 11:24:03 1998 Date: Thu, 1 Oct 1998 11:04:47 CDT From: "C. Willis III" Subject: Re: SQR Tools - SQR Analyzer/Application Engine Analyzer I'd certainly appreciate it!! clark ----Original Message Follows---- This is my SECOND post to this group... (this didn't post the 1st time)! I noticed an interest in SQR Tools... I'm considering posting some I've developed on my website as ShareWare. The source is "leaking" out anyway (as far as Japan) so I may as well post them. Here are some sample tools... ALL written in SQR so there are no additional system requirements. I have plenty more other than those listed below. I just need to know if posting is worthwhile! I'm very busy these days! -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice tdelia@erols.com ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Thu Oct 1 11:25:17 1998 Date: Thu, 1 Oct 1998 11:59:00 -0400 From: Art DiRamio Subject: Re: Page 1 of xx Gordon - We throw the following 2 lines into our reports to get that very format: Page-Number ( ,114) 'Page: ' Last-Page ( ) ' of ' The output generated is: Page 14 of 27 -- Art > -----Original Message----- > From: Korbel Gordon E. [SMTP:GEKORBEL@NORSTAN.COM] > Sent: Thursday, October 01, 1998 10:10 AM > To: Multiple recipients of list SQR-USERS > Subject: Page 1 of xx > > Hi all, > > Platform: Sybase > SQR Version: 3.0.18.1.1 > > I'm working with Peoplesoft and SQR, and I need some help! > > The Peoplesoft provided invoice contains a page # field -- The users here > have requested that I modify that so it reads, per invoice, Page 1 of xx. > > Is there some trick of which I am unaware, or is this probably going to be > as difficult as I think it will be? > > Thanks in advance! > > -Gordon Korbel From owner-sqr-users@list.iex.net Thu Oct 1 12:58:47 1998 Date: Thu, 1 Oct 1998 10:51:42 -0700 From: Suzanne MacLaughlin Subject: Re: Page 1 of xx There is a relatively easy way to accomplish the page numbering. My client has the same request to have multiple reports in one .lis with each one having 1 of xx (for each invoice). I was able to accomplish this by creating an array create-array name=array size=500 field=lastpg:number and using it for substitution in the original .lis file. The header will contain print 'Page No.' (,+2) print #page-count (,) edit 999 let $lastpage = ' of @@' || to_char(#array_pos) print $lastpage (,+1) which will be the position within the array. The array will have the value that is to be replaced. When the report is complete, the report is closed and the following will replace the array position with the actual number of thru pages. move $sqr-report to $save_report new-report 'junk.lis' open $save_report as 1 for-reading record=190:vary let $output = $save_report || '.new' open $output as 2 for-writing record=190:vary while 1 read 1 into $string:190 if #end-file break end-if if instr($string,'@@',1) unstring $string by '@@' into $page $marker if $marker <> $oldmarker let $lastpage = to_char(array.lastpg(to_number($marker))) move $marker to $oldmarker end-if let $page = $page || $lastpage write 2 from $page else write 2 from $string end-if end-while close 1 close 2 let $cmd = 'rm ' || $save_report Call system using $cmd #status Suzanne MacLaughlin COAD Solutions ---"Korbel Gordon E." wrote: > > This won't work for me because each invoice in the report starts on page '1' > -- that is, in a ten page report, I might have four distinct invoices all of > which need page 1 of xx on the first page of that particular invoice. > > I suspect there is no easy way... > > Thanks for the help! > > -Gordon Korbel > > > -----Original Message----- > > print 'Page ' (4,63) > > page-number (4) > > print ' of ' (4) > > last-page (4) > > > > I hope this helps. > > > --------- > > Hi all, > > Platform: Sybase > > SQR Version: 3.0.18.1.1 > > I'm working with Peoplesoft and SQR, and I need some help! > > The Peoplesoft provided invoice contains a page # field -- The users here > > have requested that I modify that so it reads, per invoice, Page 1 of xx. > > Is there some trick of which I am unaware, or is this probably going to be > > as difficult as I think it will be? > > Thanks in advance! > > -Gordon Korbel > _________________________________________________________ DO YOU YAHOO!? Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Thu Oct 1 12:59:24 1998 Date: Thu, 1 Oct 1998 11:41:34 -0500 From: Nathan Treadway Subject: Incorrect error from sqr-users listserver It seems that the list server for the user-users list is incorrectly sending error messages when people post to the list. The messages say that the posting is rejected because an identical message was already posted. If you received this error message, please do not re-post; your message was actually sent out sucessfully before the error message was generated. Instead, please forward the error message directly to me (nathant@ontko.com) so I can try to find out why this is happening. Thanks. Nathan Treadway sqr-users list manager ---------------------------------------------------------------------------- Nathan Treadway | Ray Ontko & Co. | Software consulting services nathant@ontko.com | Richmond, IN | http://www.ontko.com/ From owner-sqr-users@list.iex.net Thu Oct 1 13:11:32 1998 Date: Thu, 1 Oct 1998 10:53:43 -0700 From: Suzanne MacLaughlin Subject: Page 1 of xx There is a relatively easy way to accomplish the page numbering. My client has the same request to have multiple reports in one .lis with each one having 1 of xx (for each invoice). I was able to accomplish this by creating an array create-array name=array size=500 field=lastpg:number and using it for substitution in the original .lis file. The header will contain print 'Page No.' (,+2) print #page-count (,) edit 999 let $lastpage = ' of @@' || to_char(#array_pos) print $lastpage (,+1) which will be the position within the array. The array will have the value that is to be replaced. When the report is complete, the report is closed and the following will replace the array position with the actual number of thru pages. move $sqr-report to $save_report new-report 'junk.lis' open $save_report as 1 for-reading record=190:vary let $output = $save_report || '.new' open $output as 2 for-writing record=190:vary while 1 read 1 into $string:190 if #end-file break end-if if instr($string,'@@',1) unstring $string by '@@' into $page $marker if $marker <> $oldmarker let $lastpage = to_char(array.lastpg(to_number($marker))) move $marker to $oldmarker end-if let $page = $page || $lastpage write 2 from $page else write 2 from $string end-if end-while close 1 close 2 let $cmd = 'rm ' || $save_report Call system using $cmd #status Suzanne MacLaughlin COAD Solutions _________________________________________________________ DO YOU YAHOO!? Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Thu Oct 1 13:25:46 1998 Date: Thu, 1 Oct 1998 15:10:33 -0300 From: Develop Informatica - Suporte Subject: I got the message error 4747 Hi there I have a report that run in version 2.5 of SQR. I got the message "out of memory" when running SQRT in version 3.0 for the same report. I got the message "The SQT file is corrupted and cannot be processed. SQR abort loading the runtime file." when running SQRT in version 4.3. Any suggestions? Thanks in Advance, Paulo Cesar Prado ----------------------------------------------- Suporte Tecnico - Develop Informatica Rua dos Andradas, 1001/901 Centro Porto Alegre - RS - Brasil CEP 90020-007 Tel/Fax: +55 51 211 2300 http://www.develop.com.br mailto:desenv@develop.com.br - Desenvolvimento mailto:adm@develop.com.br - Administrativo mailto:info@develop.com.br - Comercial mailto:suporte@develop.com.br - Suporte ----------------------------------------------- From owner-sqr-users@list.iex.net Thu Oct 1 13:42:51 1998 Date: Thu, 1 Oct 1998 13:22:54 -0500 From: "Korbel Gordon E." Subject: Re: Page 1 of xx Thanks for the very complete solution!!! -Gordon > -----Original Message----- > > > There is a relatively easy way to accomplish the page numbering. My > client has the same request to have multiple reports in one .lis with > each one having 1 of xx (for each invoice). > > I was able to accomplish this by creating an array > > create-array name=array size=500 > field=lastpg:number > > and using it for substitution in the original .lis file. The header > will contain > > print 'Page No.' (,+2) > print #page-count (,) edit 999 > let $lastpage = ' of @@' || to_char(#array_pos) > print $lastpage (,+1) > > which will be the position within the array. The array will have the > value that is to be replaced. When the report is complete, the report > is closed and the following will replace the array position with the > actual number of thru pages. > > move $sqr-report to $save_report > new-report 'junk.lis' > open $save_report as 1 for-reading record=190:vary > let $output = $save_report || '.new' > open $output as 2 for-writing record=190:vary > while 1 > read 1 into $string:190 > if #end-file > break > end-if > if instr($string,'@@',1) > unstring $string by '@@' into $page $marker > if $marker <> $oldmarker > let $lastpage = to_char(array.lastpg(to_number($marker))) > move $marker to $oldmarker > end-if > let $page = $page || $lastpage > write 2 from $page > else > write 2 from $string > end-if > end-while > close 1 > close 2 > let $cmd = 'rm ' || $save_report > Call system using $cmd #status > > Suzanne MacLaughlin > COAD Solutions > > > > ---"Korbel Gordon E." wrote: > > > > This won't work for me because each invoice in the report starts on > page '1' > > -- that is, in a ten page report, I might have four distinct > invoices all of > > which need page 1 of xx on the first page of that particular invoice. > > > > I suspect there is no easy way... > > > > Thanks for the help! > > > > -Gordon Korbel > > > > > -----Original Message----- > > > print 'Page ' (4,63) > > > page-number (4) > > > print ' of ' (4) > > > last-page (4) > > > > > > I hope this helps. > > > > > --------- > > > Hi all, > > > Platform: Sybase > > > SQR Version: 3.0.18.1.1 > > > I'm working with Peoplesoft and SQR, and I need some help! > > > The Peoplesoft provided invoice contains a page # field -- The > users here > > > have requested that I modify that so it reads, per invoice, Page 1 > of xx. > > > Is there some trick of which I am unaware, or is this probably > going to be > > > as difficult as I think it will be? > > > Thanks in advance! > > > -Gordon Korbel > > > > _________________________________________________________ > DO YOU YAHOO!? > Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Thu Oct 1 13:55:00 1998 Date: Thu, 1 Oct 1998 14:40:19 -0400 From: "Wanko, Christopher G, CFCTRCFFIN" Subject: Re: I got the message error 4747 > I have a report that run in version 2.5 of SQR. > I got the message "out of memory" when running SQRT in > version 3.0 for the > same report. I got the message "The > SQT file is corrupted and cannot be processed. SQR abort > loading the runtime file." when running SQRT in version 4.3. Recompile the SQR in the environment you wish to run it. SQRs must be recompiled between version releases (v2 recompile to work on v3, v3 recompile to work on v4...) -Chris From owner-sqr-users@list.iex.net Thu Oct 1 14:40:31 1998 Date: Thu, 1 Oct 1998 16:18:07 -0300 From: Develop Informatica - Suporte Subject: Re: I got the message error 4747 Yes, I did it. I recompiled the report in releases 3 and 4. At 02:40 PM 10/1/98 -0400, you wrote: >> I have a report that run in version 2.5 of SQR. >> I got the message "out of memory" when running SQRT in >> version 3.0 for the >> same report. I got the message "The >> SQT file is corrupted and cannot be processed. SQR abort >> loading the runtime file." when running SQRT in version 4.3. > >Recompile the SQR in the environment you wish to run it. SQRs must be >recompiled between version releases (v2 recompile to work on v3, v3 >recompile to work on v4...) > >-Chris > > ----------------------------------------------- Suporte Tecnico - Develop Informatica Rua dos Andradas, 1001/901 Centro Porto Alegre - RS - Brasil CEP 90020-007 Tel/Fax: +55 51 211 2300 http://www.develop.com.br mailto:desenv@develop.com.br - Desenvolvimento mailto:adm@develop.com.br - Administrativo mailto:info@develop.com.br - Comercial mailto:suporte@develop.com.br - Suporte ----------------------------------------------- From owner-sqr-users@list.iex.net Thu Oct 1 14:54:42 1998 Date: Thu, 1 Oct 1998 16:33:34 -0300 From: Develop Informatica - Suporte Subject: Re: I got the message error 4747 Yes, I did it. I recompiled the report in releases 3 and 4. At 02:40 PM 10/1/98 -0400, you wrote: >> I have a report that run in version 2.5 of SQR. >> I got the message "out of memory" when running SQRT in >> version 3.0 for the >> same report. I got the message "The >> SQT file is corrupted and cannot be processed. SQR abort >> loading the runtime file." when running SQRT in version 4.3. > >Recompile the SQR in the environment you wish to run it. SQRs must be >recompiled between version releases (v2 recompile to work on v3, v3 >recompile to work on v4...) > >-Chris > > ----------------------------------------------- Suporte Tecnico - Develop Informatica Rua dos Andradas, 1001/901 Centro Porto Alegre - RS - Brasil CEP 90020-007 Tel/Fax: +55 51 211 2300 http://www.develop.com.br mailto:desenv@develop.com.br - Desenvolvimento mailto:adm@develop.com.br - Administrativo mailto:info@develop.com.br - Comercial mailto:suporte@develop.com.br - Suporte ----------------------------------------------- From owner-sqr-users@list.iex.net Thu Oct 1 15:02:51 1998 Date: Thu, 1 Oct 1998 15:48:02 -0400 From: Randy Learn Subject: Commit in DB2/MVS Any help would be greatly appreciated. I am using DB2 version 4 and SQR version 4 on windows NT and MVS mainframe. I have an sqr program that issues a commit after x number of records are processed. When I run it on the NT/Client it runs ok, when I run it on the MVS server it abends after the commit is executed. The commit is actually working, but it seems to blow up on a select after the commit. The program runs ok on MVS with the 'commit' commented out. This is a conversion program that will load a large volume of data and needs to do a commit periodically. Has anyone else run into this??? DSN ENDED DUE TO ERROR+ SYSTEM ABEND CODE 04E REASON CODE 00E7000C PSW 077C100087713180 ASIDS: HOME 1LSCX041 **** ERROR **** ABEND occurred in line 1020 of SQ043(SQ048) ,offset 000390 Program terminated by operating system. ABEND code = S04E A non-C or system routine was running at the time of ABEND From owner-sqr-users@list.iex.net Thu Oct 1 15:30:23 1998 Date: Thu, 1 Oct 1998 16:07:03 -0400 From: "McCoy, Ken D (INPO)" Subject: Re: Commit in DB2/MVS A commit in DB2 will automatically close your open cursor so when you do another fetch of the cursor it will blow up HTH Ken > -----Original Message----- > From: Randy Learn [SMTP:rlearn@UAKRON.EDU] > Sent: Thursday, October 01, 1998 3:48 PM > To: Multiple recipients of list SQR-USERS > Subject: Commit in DB2/MVS > > Any help would be greatly appreciated. > > I am using DB2 version 4 and SQR version 4 on windows NT and MVS > mainframe. > I have an sqr program that issues a commit after x number of records > are > processed. > When I run it on the NT/Client it runs ok, when I run it on the MVS > server it abends after the commit is executed. The commit is actually > working, but it seems to blow up on a select after the commit. The > program runs ok on MVS with the 'commit' commented out. This is a > conversion program that will load a large volume of data and needs to > do > a commit periodically. > > Has anyone else run into this??? > > > DSN ENDED DUE TO ERROR+ > SYSTEM ABEND CODE 04E REASON CODE 00E7000C PSW 077C100087713180 > ASIDS: HOME > 1LSCX041 **** ERROR **** > ABEND occurred in line 1020 of SQ043(SQ048) ,offset > 000390 > > Program terminated by operating system. ABEND code = S04E > A non-C or system routine was running at the time of ABEND From owner-sqr-users@list.iex.net Thu Oct 1 15:55:44 1998 Date: Thu, 1 Oct 1998 13:44:02 PDT From: Parijat Sahai Subject: Re: Commit in DB2/MVS Why don't you post the code in question? Maybe issuing a COMMIT between FETCHes is causing the problem (loss of Cursor handle perhaps - don't know if it makes sense in MVS). Parijat. > >I am using DB2 version 4 and SQR version 4 on windows NT and MVS >mainframe. >I have an sqr program that issues a commit after x number of records are >processed. >When I run it on the NT/Client it runs ok, when I run it on the MVS >server it abends after the commit is executed. The commit is actually >working, but it seems to blow up on a select after the commit. The >program runs ok on MVS with the 'commit' commented out. This is a >conversion program that will load a large volume of data and needs to do >a commit periodically. > >Has anyone else run into this??? > > >DSN ENDED DUE TO ERROR+ > SYSTEM ABEND CODE 04E REASON CODE 00E7000C PSW 077C100087713180 >ASIDS: HOME >1LSCX041 **** ERROR **** > ABEND occurred in line 1020 of SQ043(SQ048) ,offset 000390 > > Program terminated by operating system. ABEND code = S04E > A non-C or system routine was running at the time of ABEND > ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Thu Oct 1 15:59:13 1998 Date: Thu, 1 Oct 1998 14:47:11 -0600 From: Robert Goshko Subject: Re: Commit in DB2/MVS Randy, If you have any cursors open (BEGIN-SELECT, BEGIN-SQL), and you COMMIT, DB@ will close ALL open cursors. So if your in the middle of a select loop like so: BEGIN-SELECT row1 row2 ADD 1 TO #RowCount IF ( #RowCount > 100 ) COMMIT MOVE 0 TO #RowCount END-IF FROM table WHERE row3 =x END-SELECT Soon as you commit, the database no longer has a cursor pointing to where you are, so when you go to process another row, the database won't know what you want and blow your SQR. If you need to COMMIT in the middle of a select loop, you have to save the keys as to where you are (and select date in the order of the keys), get out of the select loop, commit, and then restart your select loop with the row greater than your saved keys (a real pain). ......Rob _________________________________________________ Robert Goshko Owner Axis Developments System Consulting Services Sherwood Park, Alberta, Canada http://www.axis-dev.com/ -----Original Message----- From: Discussion of SQR, SQRIBE Technologies's database reporting language [mailto:SQR-USERS@list.iex.net]On Behalf Of Randy Learn Sent: Thursday, October 01, 1998 1:48 PM To: Multiple recipients of list SQR-USERS Subject: Commit in DB2/MVS Any help would be greatly appreciated. I am using DB2 version 4 and SQR version 4 on windows NT and MVS mainframe. I have an sqr program that issues a commit after x number of records are processed. When I run it on the NT/Client it runs ok, when I run it on the MVS server it abends after the commit is executed. The commit is actually working, but it seems to blow up on a select after the commit. The program runs ok on MVS with the 'commit' commented out. This is a conversion program that will load a large volume of data and needs to do a commit periodically. Has anyone else run into this??? DSN ENDED DUE TO ERROR+ SYSTEM ABEND CODE 04E REASON CODE 00E7000C PSW 077C100087713180 ASIDS: HOME 1LSCX041 **** ERROR **** ABEND occurred in line 1020 of SQ043(SQ048) ,offset 000390 Program terminated by operating system. ABEND code = S04E A non-C or system routine was running at the time of ABEND From owner-sqr-users@list.iex.net Thu Oct 1 16:30:59 1998 Date: Thu, 1 Oct 1998 17:25:16 -0400 From: td Subject: Commit Problem not only in DB2 In regard to the COMMIT problem in DB2 where the SELECT cursor is closed when the COMMIT is executed is not limited to DB2. I'm developing a large-scale Oracle process but due to system limitations (like an available work-station, userids, network access, etc) I was forced to begin developing a prototype in SQLBase. I encountered the same problem - Once the Commit is executed any subsequent fetches return an error. Since I was testing a low volume of data (and don't use SQLBase that much) I had the luxury of simply changing my commit count and moving along. Just thought some of the group could use this info for future reference. -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice From owner-sqr-users@list.iex.net Thu Oct 1 16:34:07 1998 Date: Thu, 1 Oct 1998 17:25:58 -0500 From: David Anderson Subject: UNIX and Log Files I'm trying to recover the LOG of an SQR execution in UNIX. Specifically, when my SQR executes it SHOWs information which is captured by the LOG file (at least in Windows). I cannot find/locate the LOG for an SQR execution from the UNIX command prompt. If the SQR errors during execution, which of course rarely happens, a LOG is created containing the error messages. Help would be GREATLY appreciated... Dave From owner-sqr-users@list.iex.net Thu Oct 1 17:01:13 1998 Date: Thu, 1 Oct 1998 16:48:43 -0500 From: "Schaetzly, Kent" Subject: Re: Commit in DB2/MVS Try the 'with hold' option of declare cursor. DECLARE cursor-name CURSOR WITH HOLD FOR select ... I believe that DB2 will retain cursor positions across comit points when you specify this. Kent Schaetzly The Millennium Project phone: 506-5170 > -----Original Message----- > From: Randy Learn [SMTP:rlearn@UAKRON.EDU] > Sent: Thursday, October 01, 1998 3:48 PM > To: Multiple recipients of list SQR-USERS > Subject: Commit in DB2/MVS > > Any help would be greatly appreciated. > > I am using DB2 version 4 and SQR version 4 on windows NT and MVS > mainframe. > I have an sqr program that issues a commit after x number of records are > processed. > When I run it on the NT/Client it runs ok, when I run it on the MVS > server it abends after the commit is executed. The commit is actually > working, but it seems to blow up on a select after the commit. The > program runs ok on MVS with the 'commit' commented out. This is a > conversion program that will load a large volume of data and needs to do > a commit periodically. > > Has anyone else run into this??? > > > DSN ENDED DUE TO ERROR+ > SYSTEM ABEND CODE 04E REASON CODE 00E7000C PSW 077C100087713180 > ASIDS: HOME > 1LSCX041 **** ERROR **** > ABEND occurred in line 1020 of SQ043(SQ048) ,offset 000390 > > Program terminated by operating system. ABEND code = S04E > A non-C or system routine was running at the time of ABEND From owner-sqr-users@list.iex.net Thu Oct 1 17:05:41 1998 Date: Thu, 1 Oct 1998 14:22:16 -0700 From: John Sayre Subject: Re: Commit in DB2/MVS John Sayre@GAPINC 10/01/98 02:22 PM We do commits inside loops with DB2 regularly. If we don't save the values where we are (let $oldempl=&emplid for example) the cursor is closed and restarts at the top, processing the same rows it just did. Forever. There is a DB2 option 'With Hold' that you issue when you declare the cursors which keeps you at the same row when the cursor is reopened. Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: John Sayre/SB/GAPINC) Subject: Commit in DB2/MVS Any help would be greatly appreciated. I am using DB2 version 4 and SQR version 4 on windows NT and MVS mainframe. I have an sqr program that issues a commit after x number of records are processed. When I run it on the NT/Client it runs ok, when I run it on the MVS server it abends after the commit is executed. The commit is actually working, but it seems to blow up on a select after the commit. The program runs ok on MVS with the 'commit' commented out. This is a conversion program that will load a large volume of data and needs to do a commit periodically. Has anyone else run into this??? DSN ENDED DUE TO ERROR+ SYSTEM ABEND CODE 04E REASON CODE 00E7000C PSW 077C100087713180 ASIDS: HOME 1LSCX041 **** ERROR **** ABEND occurred in line 1020 of SQ043(SQ048) ,offset 000390 Program terminated by operating system. ABEND code = S04E A non-C or system routine was running at the time of ABEND From owner-sqr-users@list.iex.net Thu Oct 1 17:07:18 1998 Date: Thu, 1 Oct 1998 18:01:48 -0400 From: td Subject: Re: UNIX and Log Files Dave, Log files are controlled by the -o flag. If you can see the flag setting look there. In Unix it's usually /tmp or /temp. If the flag isn't set then the sqr.log is written in the current directory, i.e. where your SQR program resides. This is the typical configuration at least. -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice David Anderson wrote: > > I'm trying to recover the LOG of an SQR execution in UNIX. Specifically, > when my SQR executes it SHOWs information which is captured by the > LOG file (at least in Windows). I cannot find/locate the LOG for an SQR > execution from the UNIX command prompt. If the SQR errors during > execution, which of course rarely happens, a LOG is created containing > the error messages. > > Help would be GREATLY appreciated... > Dave From owner-sqr-users@list.iex.net Thu Oct 1 19:25:05 1998 Date: Thu, 1 Oct 1998 18:04:02 -0500 From: Wes Williams Subject: Security violation attempting to access -Reply Are you accessing standard Maximo supplied tables ? Or have you created = some custom apps...tables? Wes Williams Sundstrand Aerospace 815.226.6196 wwilliams@snds.com From owner-sqr-users@list.iex.net Thu Oct 1 19:34:57 1998 Date: Thu, 1 Oct 1998 20:26:21 -0400 From: Tony DeLia Subject: SQR Tools Web-site coming soon... Hello... Due to the positive responses I've received today I will post some very useful SQR Utilities on my web site. I will most likely have it completed before the end of this month - I have some deadlines I need to focus on at the moment. Anyone interested can e-mail me and I'll provide the info when it will be ready (Anyone who e-mailed today will be notified). Here's some of the possibilities... All original work... - SQR Analyzer - Application Engine Analyzer - PS Tree Reporting (even detects children seperated from parents) - PS Tree Loader (Just used for AR Corporate Customer Conversion with Customer# Ranges included) - Dynamic Record Extract - (Can load output into Excel/Access/etc) and supports nested SubRecord Definitions - Array Processing Techniques - Sorting/Binary Search - PS/Oracle Database Audit - COBOL Analyzer - WinBatch Utilities... - I'll maintain a section on Useful (but rarely seen) SQR Techniques... - more, more... You may be wondering why I'm offering this? I've been at many client-sites and as a courtesy I leave my tools and instructions on how to use them (as well as help the SQR programmers directly). My work is "leaking" out anyway so I'd like to at least build my reputation and maybe get some credit for my work! And it doesn't hurt helping someone along the way! :0) -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Thu Oct 1 20:46:28 1998 Date: Thu, 1 Oct 1998 21:39:04 -0400 From: "Medeiros, Suzette G." Subject: Re: SQR Tools Web-site coming soon... I would really appreciate any SQR's functions and/or routines you have. Thanking You In Advance, > ---------- > From: Tony DeLia[SMTP:tdelia@EROLS.COM] > Sent: Thursday, October 01, 1998 7:26 PM > To: Multiple recipients of list SQR-USERS > Subject: SQR Tools Web-site coming soon... > > Hello... > > Due to the positive responses I've received today I will post some very > useful SQR Utilities on my web site. I will most likely have it > completed before the end of this month - I have some deadlines I need to > focus on at the moment. Anyone interested can e-mail me and I'll provide > the info when it will be ready (Anyone who e-mailed today will be > notified). Here's some of the possibilities... All original work... > > - SQR Analyzer > - Application Engine Analyzer > - PS Tree Reporting (even detects children seperated from parents) > - PS Tree Loader (Just used for AR Corporate Customer Conversion with > Customer# Ranges included) > - Dynamic Record Extract - (Can load output into Excel/Access/etc) > and supports nested SubRecord Definitions > - Array Processing Techniques - Sorting/Binary Search > - PS/Oracle Database Audit > - COBOL Analyzer > - WinBatch Utilities... > - I'll maintain a section on Useful (but rarely seen) SQR Techniques... > - more, more... > > You may be wondering why I'm offering this? I've been at many > client-sites and as a courtesy I leave my tools and instructions on how > to use them (as well as help the SQR programmers directly). My work is > "leaking" out anyway so I'd like to at least build my reputation and > maybe get some credit for my work! And it doesn't hurt helping someone > along the way! :0) > > > -- > Tony DeLia > AnswerThink Consulting Group > PeopleSoft Solutions Practice - Delphi Partners > tdelia@erols.com > From owner-sqr-users@list.iex.net Thu Oct 1 20:49:49 1998 Date: Thu, 1 Oct 1998 21:42:07 -0400 From: "Medeiros, Suzette G." Subject: Re: UNIX and Log Files David, In our environment the log files reside in $PS_HOME/log/database instance, an example can be $PS_HOME/log/FOD. I hope this helps. > ---------- > From: David Anderson[SMTP:DANDERS1@SMTPGW.IS.HFH.EDU] > Sent: Thursday, October 01, 1998 5:25 PM > To: Multiple recipients of list SQR-USERS > Subject: UNIX and Log Files > > I'm trying to recover the LOG of an SQR execution in UNIX. Specifically, > when my SQR executes it SHOWs information which is captured by the > LOG file (at least in Windows). I cannot find/locate the LOG for an SQR > execution from the UNIX command prompt. If the SQR errors during > execution, which of course rarely happens, a LOG is created containing > the error messages. > > Help would be GREATLY appreciated... > Dave > From owner-sqr-users@list.iex.net Thu Oct 1 21:36:15 1998 Date: Thu, 1 Oct 1998 21:25:14 -0500 From: Don Mellen Subject: Re: Page 1 of xx On Thu, 1 Oct 1998, Korbel Gordon E. wrote: > Thanks for the very complete solution!!! > > -Gordon Another solution is to print two reports. Use "use-report" for the second of your report definitions and print your first PO/WO/Inv etc, then store the current page variable to a variable you use in the header for the "of" part. Then "use-report" the report you defined first and reset the current page variable to 1 and reprint the same thing, then loop and it will "use-report" the second defined one and print the next Inv/PO/WO etc. It allows the "of" printing without having to know where your output is going. Of course, I believe both of these solutions have already been suggested in the past and can be found in the archives at www.sqrug.com. ----------------------------------------------------------------------- Donald Mellen | Ray Ontko & Co. - Richmond, IN - http://www.ontko.com/ donm@ontko.com | "In the beginning, there was nothing, which exploded" From owner-sqr-users@list.iex.net Fri Oct 2 00:30:57 1998 Date: Fri, 2 Oct 1998 15:10:45 +1100 From: NGUYEN Ken Subject: Re: SQR Tools Web-site coming soon... Hi Tony, Please include me in your mailout. Please use the following email address ken.n.nguyen@au.pwcglobal.com as I may not be at this cleint site at the end of this month. Cheers Ken Nguyen. Tony DeLia: >Hello... > >Due to the positive responses I've received today I will post some very >useful SQR Utilities on my web site. I will most likely have it >completed before the end of this month - I have some deadlines I need to >focus on at the moment. Anyone interested can e-mail me and I'll provide >the info when it will be ready (Anyone who e-mailed today will be >notified). Here's some of the possibilities... All original work... > >- SQR Analyzer >- Application Engine Analyzer >- PS Tree Reporting (even detects children seperated from parents) >- PS Tree Loader (Just used for AR Corporate Customer Conversion with > Customer# Ranges included) >- Dynamic Record Extract - (Can load output into Excel/Access/etc) > and supports nested SubRecord Definitions >- Array Processing Techniques - Sorting/Binary Search >- PS/Oracle Database Audit >- COBOL Analyzer >- WinBatch Utilities... >- I'll maintain a section on Useful (but rarely seen) SQR Techniques... >- more, more... > >You may be wondering why I'm offering this? I've been at many >client-sites and as a courtesy I leave my tools and instructions on how >to use them (as well as help the SQR programmers directly). My work is >"leaking" out anyway so I'd like to at least build my reputation and >maybe get some credit for my work! And it doesn't hurt helping someone >along the way! :0) > > >-- >Tony DeLia >AnswerThink Consulting Group >PeopleSoft Solutions Practice - Delphi Partners >tdelia@erols.com > From owner-sqr-users@list.iex.net Fri Oct 2 07:32:06 1998 Date: Fri, 2 Oct 1998 08:20:14 -0400 From: Saibaba Subject: Re: SQR Tools Web-site coming soon... Hi Tony, I am very much interested in looking your valuable work and interested to share your knowledge and experience. Any help in this regard is highly appreciated. Thank you in advance. Sai. -----Original Message----- From: Tony DeLia To: Multiple recipients of list SQR-USERS Date: October 1, 1998 8:44 PM Subject: SQR Tools Web-site coming soon... >Hello... > >Due to the positive responses I've received today I will post some very >useful SQR Utilities on my web site. I will most likely have it >completed before the end of this month - I have some deadlines I need to >focus on at the moment. Anyone interested can e-mail me and I'll provide >the info when it will be ready (Anyone who e-mailed today will be >notified). Here's some of the possibilities... All original work... > >- SQR Analyzer >- Application Engine Analyzer >- PS Tree Reporting (even detects children seperated from parents) >- PS Tree Loader (Just used for AR Corporate Customer Conversion with > Customer# Ranges included) >- Dynamic Record Extract - (Can load output into Excel/Access/etc) > and supports nested SubRecord Definitions >- Array Processing Techniques - Sorting/Binary Search >- PS/Oracle Database Audit >- COBOL Analyzer >- WinBatch Utilities... >- I'll maintain a section on Useful (but rarely seen) SQR Techniques... >- more, more... > >You may be wondering why I'm offering this? I've been at many >client-sites and as a courtesy I leave my tools and instructions on how >to use them (as well as help the SQR programmers directly). My work is >"leaking" out anyway so I'd like to at least build my reputation and >maybe get some credit for my work! And it doesn't hurt helping someone >along the way! :0) > > >-- >Tony DeLia >AnswerThink Consulting Group >PeopleSoft Solutions Practice - Delphi Partners >tdelia@erols.com From owner-sqr-users@list.iex.net Fri Oct 2 07:34:01 1998 Date: Fri, 2 Oct 1998 08:23:57 -0400 From: Saibaba Subject: Re: SQR Tools Web-site coming soon... Please include me in your mail list and my e-mail Id is: bsaibaba@algoma.com and saibalan1@hotmail.com Thanks in advance. Sai. -----Original Message----- From: Tony DeLia To: Multiple recipients of list SQR-USERS Date: October 1, 1998 8:44 PM Subject: SQR Tools Web-site coming soon... >Hello... > >Due to the positive responses I've received today I will post some very >useful SQR Utilities on my web site. I will most likely have it >completed before the end of this month - I have some deadlines I need to >focus on at the moment. Anyone interested can e-mail me and I'll provide >the info when it will be ready (Anyone who e-mailed today will be >notified). Here's some of the possibilities... All original work... > >- SQR Analyzer >- Application Engine Analyzer >- PS Tree Reporting (even detects children seperated from parents) >- PS Tree Loader (Just used for AR Corporate Customer Conversion with > Customer# Ranges included) >- Dynamic Record Extract - (Can load output into Excel/Access/etc) > and supports nested SubRecord Definitions >- Array Processing Techniques - Sorting/Binary Search >- PS/Oracle Database Audit >- COBOL Analyzer >- WinBatch Utilities... >- I'll maintain a section on Useful (but rarely seen) SQR Techniques... >- more, more... > >You may be wondering why I'm offering this? I've been at many >client-sites and as a courtesy I leave my tools and instructions on how >to use them (as well as help the SQR programmers directly). My work is >"leaking" out anyway so I'd like to at least build my reputation and >maybe get some credit for my work! And it doesn't hurt helping someone >along the way! :0) > > >-- >Tony DeLia >AnswerThink Consulting Group >PeopleSoft Solutions Practice - Delphi Partners >tdelia@erols.com From owner-sqr-users@list.iex.net Fri Oct 2 07:44:53 1998 Date: Fri, 2 Oct 1998 08:35:35 -0500 From: Darwin Anderson Subject: Sort on calculated field Sybase 11.0.2.1 SQR 3.0.13.2 How can I sort in descending order on a field that is created by a calculation during processing? I have existing fields for regular hours and overtime hours from which I calclulate the percent of OT to Regular. When the report is printed, I want the highest percentage to be on the first line. I suspect that I need to use a bind variable in some way. TIA Darwin dander03@avis.com 516-222-3064 From owner-sqr-users@list.iex.net Fri Oct 2 07:58:25 1998 Date: Fri, 2 Oct 1998 08:50:53 -0500 From: David Anderson Subject: Re: UNIX and Log Files -Reply I have tried using the -O but to no avail. Specifically, the system reutrns an error indicating the -O is an illegal command. Further research seems to indicate the -O is for Windows only, at least with release 3 of SQR. Thanks for your suggestion, but still looking for the answer... Dave >>> td Oct 1 5:01pm >>> Dave, Log files are controlled by the -o flag. If you can see the flag setting look there. In Unix it's usually /tmp or /temp. If the flag isn't set then the sqr.log is written in the current directory, i.e. where your SQR program resides. This is the typical configuration at least. -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice David Anderson wrote: > > I'm trying to recover the LOG of an SQR execution in UNIX. Specifically, > when my SQR executes it SHOWs information which is captured by the > LOG file (at least in Windows). I cannot find/locate the LOG for an SQR > execution from the UNIX command prompt. If the SQR errors during > execution, which of course rarely happens, a LOG is created containing > the error messages. > > Help would be GREATLY appreciated... > Dave From owner-sqr-users@list.iex.net Fri Oct 2 08:04:59 1998 Date: Fri, 2 Oct 1998 08:55:33 -0400 From: Charu Srinivas Subject: Re: UNIX and Log Files Dave- When you are running the sqr on the Unix prompt just use the redirect sign(>>) to redirect the output to the desired file in the desired directory. You can use : sqr filename.sqr login/password -f directory name >> directoryname/filename Hope this helps. Charu DANDERS1@SMTPGW.IS.HFH.EDU on 10/01/98 06:25:58 PM Please respond to SQR-USERS@USA.NET To: SQR-USERS@list.iex.net cc: (bcc: C. Srinivas/dsisys/US) Subject: UNIX and Log Files I'm trying to recover the LOG of an SQR execution in UNIX. Specifically, when my SQR executes it SHOWs information which is captured by the LOG file (at least in Windows). I cannot find/locate the LOG for an SQR execution from the UNIX command prompt. If the SQR errors during execution, which of course rarely happens, a LOG is created containing the error messages. Help would be GREATLY appreciated... Dave From owner-sqr-users@list.iex.net Fri Oct 2 08:08:37 1998 Date: Fri, 2 Oct 1998 08:59:08 -0400 From: Charu Srinivas Subject: Re: Unix and log files Dave- When you are running the sqr on the Unix prompt just use the redirect sign(>>) to redirect the output to the desired file in the desired directory. You can use : sqr filename.sqr login/password -f directory name >> directoryname/filename Hope this helps. Charu From owner-sqr-users@list.iex.net Fri Oct 2 08:10:34 1998 Date: Fri, 2 Oct 1998 06:54:43 -0500 From: Gopal Nandakumar Subject: Re: SQR TOOLS WEB-SITE IS WORKING NOW www.tcssoft.com Hi All, Thank you for those who responded to my previous email. Already some of you might have received our free demo software. The purpose of this email is to let you all to know that our the demo software could be requested through our web side www.tcssoft.com. Following SQR Tools are available: 1. SQR Expander: * Expands SQRs and produces Expanded & Compiler listing files 2. SQR Shrink * Shrinks the Expanded file saving the changes made in the Expanded file into individual files 3. SQR Interactive Debugger * We believe ours is the first real Interactive Debugger for SQR Lets the user to stop execution temporarily at any logical break point, view and modify any Global or Local variable, view the source code as they are executed, stop the execution at any logical break point after executing a user defined routine, creates a Trace file which has all the necessary information to debug the SQR quickly and efficiently. 4. SQR Multi Cross Reference * Creates Multi Cross Reference information both through reports and on-line. The Multi Cross Reference information is very valuable to both System Analysts and Programmers to get the job done quickly, efficiently with cosiderably less cost. It also keeps track of execution information of every SQR added to the system like start date & time, end date & time, completion code, platform and database used. Our SQR tools are neither script files nor simple procedures that could be input into other SQRs. Out SQR tools are full blown commercial software that will increase productivity considerably. They are written in SQR. To get more information visit our web side www.tcssoft.com Thanks. Gopal TCS INC. (210) 491 0046 (USA) From owner-sqr-users@list.iex.net Fri Oct 2 08:22:45 1998 Date: Fri, 2 Oct 1998 09:09:47 -0400 From: Charu Srinivas Subject: Re: UNIX and Log Files -Reply Dave- When you are running the sqr on the Unix prompt just use the redirect sign(>>) to redirect the output to the desired file in the desired directory. You can use : sqr filename.sqr login/password -f directory name >> directoryname/filename Hope this helps. Charu DANDERS1@SMTPGW.IS.HFH.EDU on 10/02/98 09:50:53 AM Please respond to SQR-USERS@USA.NET To: SQR-USERS@list.iex.net cc: (bcc: C. Srinivas/dsisys/US) Subject: Re: UNIX and Log Files -Reply I have tried using the -O but to no avail. Specifically, the system reutrns an error indicating the -O is an illegal command. Further research seems to indicate the -O is for Windows only, at least with release 3 of SQR. Thanks for your suggestion, but still looking for the answer... Dave >>> td Oct 1 5:01pm >>> Dave, Log files are controlled by the -o flag. If you can see the flag setting look there. In Unix it's usually /tmp or /temp. If the flag isn't set then the sqr.log is written in the current directory, i.e. where your SQR program resides. This is the typical configuration at least. -Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice David Anderson wrote: > > I'm trying to recover the LOG of an SQR execution in UNIX. Specifically, > when my SQR executes it SHOWs information which is captured by the > LOG file (at least in Windows). I cannot find/locate the LOG for an SQR > execution from the UNIX command prompt. If the SQR errors during > execution, which of course rarely happens, a LOG is created containing > the error messages. > > Help would be GREATLY appreciated... > Dave From owner-sqr-users@list.iex.net Fri Oct 2 09:25:11 1998 Date: Fri, 2 Oct 1998 10:05:03 -0400 From: GINO SANTERRE Subject: Re[2]: How to print a report in a window --0__=kGiS0JlmolebtSVJGRFu2PKIED3N472nErWqpePcAt26HDdFEdZGrsxJ Content-type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-transfer-encoding: quoted-printable Pour : GINO SANTERRE/QUEBEC-TEL/CA cc : Objet : Re[2]: How to print a report in a window Your solution work great to send the report on screen. Everybody h= ere are very interested by this new feature. Only one problem still not resolve. It's the fact than we can send the report directly to the printer(with the option Printer). SQRW try to open the printer like it = was a file and an error message appear. Do you know a solution to append the parameter -ZIV only when the destination is file or window and skip it when we choose printer? Thanks a lot for your help. Gino Santerre Le Groupe Qu=E9bectel = --0__=kGiS0JlmolebtSVJGRFu2PKIED3N472nErWqpePcAt26HDdFEdZGrsxJ Content-type: text/plain; charset=us-ascii Content-Disposition: inline You want to append the -ZIV to your SQR Flags, not the Command Line. ______________________________ Reply Separator _________________________________ Subject: Re: How to print a report in a window Author: "GINO SANTERRE" at internet Date: 10/1/98 11:58 AM I try your solution but i got this message: --0__=kGiS0JlmolebtSVJGRFu2PKIED3N472nErWqpePcAt26HDdFEdZGrsxJ-- From owner-sqr-users@list.iex.net Fri Oct 2 09:32:50 1998 Date: Fri, 2 Oct 1998 10:13:37 -0400 From: "Singh, Rajvirendra ( NYSDS )" Subject: Re: SQR Tools Web-site coming soon... Please also include me in any mailings: rvsingh@hotmail.com Thanks!!! * Rajvirendra Singh -----Original Message----- From: Korbel Gordon E. [SMTP:GEKORBEL@NORSTAN.COM] Sent: Friday, October 02, 1998 9:02 AM To: Multiple recipients of list SQR-USERS Subject: Re: SQR Tools Web-site coming soon... Please also include me in any mailings: gkorbel@winternet.com Thanks!!! -Gordon > -----Original Message----- > > Hello... > > Due to the positive responses I've received today I will post some very > useful SQR Utilities on my web site. I will most likely have it > completed before the end of this month - I have some deadlines I need to > focus on at the moment. Anyone interested can e-mail me and I'll provide > the info when it will be ready (Anyone who e-mailed today will be > notified). Here's some of the possibilities... All original work... > > - SQR Analyzer > - Application Engine Analyzer > - PS Tree Reporting (even detects children seperated from parents) > - PS Tree Loader (Just used for AR Corporate Customer Conversion with > Customer# Ranges included) > - Dynamic Record Extract - (Can load output into Excel/Access/etc) > and supports nested SubRecord Definitions > - Array Processing Techniques - Sorting/Binary Search > - PS/Oracle Database Audit > - COBOL Analyzer > - WinBatch Utilities... > - I'll maintain a section on Useful (but rarely seen) SQR Techniques... > - more, more... > > You may be wondering why I'm offering this? I've been at many > client-sites and as a courtesy I leave my tools and instructions on how > to use them (as well as help the SQR programmers directly). My work is > "leaking" out anyway so I'd like to at least build my reputation and > maybe get some credit for my work! And it doesn't hurt helping someone > along the way! :0) > > > -- > Tony DeLia > AnswerThink Consulting Group > PeopleSoft Solutions Practice - Delphi Partners > tdelia@erols.com From owner-sqr-users@list.iex.net Fri Oct 2 09:48:00 1998 Date: Fri, 2 Oct 1998 09:33:49 -0500 From: "Doris K.Brinson" Subject: Sort on calculated field -Reply I have to admit not knowing much about "bind" variables, but a work around that you can use is to write the information you need (including the calculated field) into a temporary file. Then you can select the data in any order you want from that file. It's not the most efficient solution, but it should work for you. Doris. >>> Darwin Anderson 10/02/98 08:35am >>> Sybase 11.0.2.1 SQR 3.0.13.2 How can I sort in descending order on a field that is created by a calculation during processing? I have existing fields for regular hours and overtime hours from which I calclulate the percent of OT to Regular. When the report is printed, I want the highest percentage to be on the first line. I suspect that I need to use a bind variable in some way. TIA Darwin dander03@avis.com 516-222-3064 From owner-sqr-users@list.iex.net Fri Oct 2 09:53:56 1998 Date: Fri, 2 Oct 1998 09:29:40 -0500 From: David Anderson Subject: Re: Unix and log files -Reply The -F flag/argument is not at issue. I am having difficulty retrieving the LOG file formed during successful execution of the SQR. My programming has a number of SHOW commands that should populate the LOG file. However, upon successful completion of the SQR I have an LIS but no LOG. If the program encounters a syntax/programming error an LOG file is created containing the SQR error messages (ie, &varname not defined). Still looking for the right answer... Dave >>> Charu Srinivas Oct 2 7:59am >>> Dave- When you are running the sqr on the Unix prompt just use the redirect sign(>>) to redirect the output to the desired file in the desired directory. You can use : sqr filename.sqr login/password -f directory name >> directoryname/filename Hope this helps. Charu From owner-sqr-users@list.iex.net Fri Oct 2 09:55:11 1998 Date: Fri, 2 Oct 1998 10:39:32 -0400 From: Charu Srinivas Subject: Re: Unix and log files -Reply Dave- The -f will only produce the .lis file but the >> (redirect) sign will create the .log file and send it to the directory you want. Again the syntax will be sqr filename.sqr >> directoryname/filename.log Charu DANDERS1@SMTPGW.IS.HFH.EDU on 10/02/98 10:29:40 AM Please respond to SQR-USERS@USA.NET To: SQR-USERS@list.iex.net cc: (bcc: C. Srinivas/dsisys/US) Subject: Re: Unix and log files -Reply The -F flag/argument is not at issue. I am having difficulty retrieving the LOG file formed during successful execution of the SQR. My programming has a number of SHOW commands that should populate the LOG file. However, upon successful completion of the SQR I have an LIS but no LOG. If the program encounters a syntax/programming error an LOG file is created containing the SQR error messages (ie, &varname not defined). Still looking for the right answer... Dave >>> Charu Srinivas Oct 2 7:59am >>> Dave- When you are running the sqr on the Unix prompt just use the redirect sign(>>) to redirect the output to the desired file in the desired directory. You can use : sqr filename.sqr login/password -f directory name >> directoryname/filename Hope this helps. Charu From owner-sqr-users@list.iex.net Fri Oct 2 09:57:42 1998 Date: Fri, 2 Oct 1998 07:06:20 -0700 From: "Kodali, Venkat" Subject: Re: SQR Tools Web-site coming soon... Please include me in your mail list , my e-mail id is venkatkodali@allianfs.com Venkat Kodali 847 405 8914 -----Original Message----- From: Tony DeLia [SMTP:tdelia@EROLS.COM] Sent: Thursday, October 01, 1998 7:26 PM To: Multiple recipients of list SQR-USERS Subject: SQR Tools Web-site coming soon... Hello... Due to the positive responses I've received today I will post some very useful SQR Utilities on my web site. I will most likely have it completed before the end of this month - I have some deadlines I need to focus on at the moment. Anyone interested can e-mail me and I'll provide the info when it will be ready (Anyone who e-mailed today will be notified). Here's some of the possibilities... All original work... - SQR Analyzer - Application Engine Analyzer - PS Tree Reporting (even detects children seperated from parents) - PS Tree Loader (Just used for AR Corporate Customer Conversion with Customer# Ranges included) - Dynamic Record Extract - (Can load output into Excel/Access/etc) and supports nested SubRecord Definitions - Array Processing Techniques - Sorting/Binary Search - PS/Oracle Database Audit - COBOL Analyzer - WinBatch Utilities... - I'll maintain a section on Useful (but rarely seen) SQR Techniques... - more, more... You may be wondering why I'm offering this? I've been at many client-sites and as a courtesy I leave my tools and instructions on how to use them (as well as help the SQR programmers directly). My work is "leaking" out anyway so I'd like to at least build my reputation and maybe get some credit for my work! And it doesn't hurt helping someone along the way! :0) -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Fri Oct 2 10:03:38 1998 Date: Fri, 2 Oct 1998 10:53:21 -0400 From: Charu Srinivas Subject: Re: Unix and log files The -f will only produce the .lis file but the >> (redirect) sign will create the .log file and send it to the directory you want. You have to type the following at the Unix prompt sqr filename.sqr >> directoryname/filename.log Charu DANDERS1@SMTPGW.IS.HFH.EDU on 10/02/98 10:29:40 AM Please respond to SQR-USERS@USA.NET To: SQR-USERS@list.iex.net cc: (bcc: C. Srinivas/dsisys/US) Subject: Re: Unix and log files -Reply The -F flag/argument is not at issue. I am having difficulty retrieving the LOG file formed during successful execution of the SQR. My programming has a number of SHOW commands that should populate the LOG file. However, upon successful completion of the SQR I have an LIS but no LOG. If the program encounters a syntax/programming error an LOG file is created containing the SQR error messages (ie, &varname not defined). Still looking for the right answer... Dave >>> Charu Srinivas Oct 2 7:59am >>> Dave- When you are running the sqr on the Unix prompt just use the redirect sign(>>) to redirect the output to the desired file in the desired directory. You can use : sqr filename.sqr login/password -f directory name >> directoryname/filename Hope this helps. Charu From owner-sqr-users@list.iex.net Fri Oct 2 10:04:27 1998 Date: Fri, 2 Oct 1998 10:55:07 -0400 From: Charu Srinivas Subject: Re: SQR Tools Web-site coming soon... Please include me in your mailing list. My email address is: csrinivas@dsisys.com Thanks!! Charu From owner-sqr-users@list.iex.net Fri Oct 2 10:47:13 1998 Date: Fri, 2 Oct 1998 10:21:23 -0500 From: Richard_Tomancik Subject: Re: Sort on calculated field Oracle 7.3.3.2 SQRW 3.0.18.1.1 If you select it , you can do an 'order by' on it. See the following: REG_HRS OT_HRS (OT_HRS/REG_HRS) --------- --------- ---------------- 10 10 1 -10 -10 1 -20 -10 .5 20 10 .5 20 10 .5 -20 -10 .5 40 0 0 80 0 0 54.67 0 0 9 rows selected. SQL> l 1 select reg_hrs, ot_hrs, (ot_hrs / reg_hrs) 2 from ps_pay_earnings 3 where reg_hrs <> 0 4* order by (ot_hrs / reg_hrs) desc Richard Tomancik richard_tomancik@tiginsurance.com Darwin Anderson on 10/02/98 08:35:35 AM Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: Richard Tomancik/Consultant/Dallas/TIG) Subject: Sort on calculated field Sybase 11.0.2.1 SQR 3.0.13.2 How can I sort in descending order on a field that is created by a calculation during processing? I have existing fields for regular hours and overtime hours from which I calclulate the percent of OT to Regular. When the report is printed, I want the highest percentage to be on the first line. I suspect that I need to use a bind variable in some way. TIA Darwin dander03@avis.com 516-222-3064 From owner-sqr-users@list.iex.net Fri Oct 2 10:49:05 1998 Date: Fri, 2 Oct 1998 10:32:19 -0500 From: "Isaacs, Timothy J. CER" Subject: Re: Security violation attempting to access -Reply Yes, they are accessing a new table they created. Timothy Isaacs USACERL UL-I CMMS Team 800 USACERL (800 872-2375) P.O. Box 9005 217 373-4468 direct Champaign, IL 61826 217 373-3490 fax http://www.cecer.army.mil "If you think your life is bad, try being a Cub fan" TJI > -----Original Message----- > From: Wes Williams [SMTP:wwilliams@MAIL.RKD.SNDS.COM] > Sent: Thursday, October 01, 1998 6:04 PM > To: Multiple recipients of list SQR-USERS > Subject: Security violation attempting to access -Reply > > Are you accessing standard Maximo supplied tables ? Or have you > created some custom apps...tables? > Wes Williams > Sundstrand Aerospace > 815.226.6196 > wwilliams@snds.com From owner-sqr-users@list.iex.net Fri Oct 2 10:50:33 1998 Date: Fri, 2 Oct 1998 09:49:44 -0500 From: David Anderson Subject: UNIX and LOG Files I have opened the script used to execute an SQR. There was not a -O flag set in the line SQRFLAGS so I added one. The old code was: SQRFLAGS="-f$HOME/output/$filename.lis -i$PS_USQR/;$PS_SQR/ -e$HOME/output/$filename.log" The revised code became: SQRFLAGS="-f$HOME/output/$filename.lis -i$PS_USQR/;$PS_SQR/ -e$HOME/output/$filename.log -o$HOME/output/$filename.log" When I tried executing the script I encountered: Unknown flag on command line: -o/home/gacker1/output/garncnv.log Hope this additional information is helpful... Dave From owner-sqr-users@list.iex.net Fri Oct 2 10:56:22 1998 Date: Fri, 2 Oct 1998 09:18:30 -0600 From: Renee Klund Subject: Re: SQR Tools Web-site coming soon... I would be interested=21 Thanx, Ren=E9e Klund (rklund=40waterpik.com) = = = = = = = = =20 From owner-sqr-users@list.iex.net Fri Oct 2 11:21:55 1998 Date: Fri, 2 Oct 1998 10:25:05 -0500 From: Mike Fulce Subject: "Me Too" syndrome I'm sure that most of you are aware that when you respond to a message delivered by this listserver, that everyone in the list also receives the message. Mr DeLia's postings to offer a website with useful information are certainly appropriate and appreciated. However, I would like to suggest that all of the personal "Me Too" responses be sent directly to Mr. Delia's e-mail address: tdelia@EROLS.COM instead of this listserver. That way, Mr. Delia gets your message but the rest of the list members don't have to see it and we can keep the content of this listserver specific to subjects about SQR. I know I'll probably get flamed for this, but if you do, please respond directly to my e-mail address m.fulce@usm.edu instead of replying to the list. Thanks ______________________________________________________________________________ Mike Fulce Database Administrator I OTR-Admin. Resources University of Southern Mississippi m.fulce@usm.edu Voice:(601) 266-6102 Fax:(601) 266-6881 207 Forrest County Hall Box 5171, Hattiesburg, MS 309406 From owner-sqr-users@list.iex.net Fri Oct 2 11:30:19 1998 Date: Fri, 2 Oct 1998 08:02:20 -0500 From: "Korbel Gordon E." Subject: Re: SQR Tools Web-site coming soon... Please also include me in any mailings: gkorbel@winternet.com Thanks!!! -Gordon > -----Original Message----- > > Hello... > > Due to the positive responses I've received today I will post some very > useful SQR Utilities on my web site. I will most likely have it > completed before the end of this month - I have some deadlines I need to > focus on at the moment. Anyone interested can e-mail me and I'll provide > the info when it will be ready (Anyone who e-mailed today will be > notified). Here's some of the possibilities... All original work... > > - SQR Analyzer > - Application Engine Analyzer > - PS Tree Reporting (even detects children seperated from parents) > - PS Tree Loader (Just used for AR Corporate Customer Conversion with > Customer# Ranges included) > - Dynamic Record Extract - (Can load output into Excel/Access/etc) > and supports nested SubRecord Definitions > - Array Processing Techniques - Sorting/Binary Search > - PS/Oracle Database Audit > - COBOL Analyzer > - WinBatch Utilities... > - I'll maintain a section on Useful (but rarely seen) SQR Techniques... > - more, more... > > You may be wondering why I'm offering this? I've been at many > client-sites and as a courtesy I leave my tools and instructions on how > to use them (as well as help the SQR programmers directly). My work is > "leaking" out anyway so I'd like to at least build my reputation and > maybe get some credit for my work! And it doesn't hurt helping someone > along the way! :0) > > > -- > Tony DeLia > AnswerThink Consulting Group > PeopleSoft Solutions Practice - Delphi Partners > tdelia@erols.com From owner-sqr-users@list.iex.net Fri Oct 2 11:34:31 1998 Date: Fri, 2 Oct 1998 11:03:16 -0400 From: Charu Srinivas Subject: Re: Unix and log files This is my third reply. The first two were rejected for posting. The -f will only produce the .lis file but the >> (redirect) sign will create the .log file and send it to the directory you want. You have to type the following at the Unix prompt sqr filename.sqr >> directoryname/filename.log Charu DANDERS1@SMTPGW.IS.HFH.EDU on 10/02/98 10:29:40 AM Please respond to SQR-USERS@USA.NET To: SQR-USERS@list.iex.net cc: (bcc: C. Srinivas/dsisys/US) Subject: Re: Unix and log files -Reply The -F flag/argument is not at issue. I am having difficulty retrieving the LOG file formed during successful execution of the SQR. My programming has a number of SHOW commands that should populate the LOG file. However, upon successful completion of the SQR I have an LIS but no LOG. If the program encounters a syntax/programming error an LOG file is created containing the SQR error messages (ie, &varname not defined). Still looking for the right answer... Dave >>> Charu Srinivas Oct 2 7:59am >>> Dave- When you are running the sqr on the Unix prompt just use the redirect sign(>>) to redirect the output to the desired file in the desired directory. You can use : sqr filename.sqr login/password -f directory name >> directoryname/filename Hope this helps. Charu From owner-sqr-users@list.iex.net Fri Oct 2 11:38:35 1998 Date: Fri, 2 Oct 1998 10:36:31 EDT From: Ken Look Subject: Re: Sort on calculated field Darwin, you need to order by field position of calculation desc. If your calculated field is in position 3 of your select statement, then your order by would look like this: Order by 3 desc Ken Look Look Consulting 773-267-5089 From owner-sqr-users@list.iex.net Fri Oct 2 11:53:12 1998 Date: Fri, 2 Oct 1998 12:22:47 EDT From: John Paulson Subject: Re: SQR Tools Web-site coming soon... Tony, Please include me in your mail list!!! Thanks! John email - paulsonj@aol.com From owner-sqr-users@list.iex.net Fri Oct 2 12:14:40 1998 Date: Fri, 2 Oct 1998 13:09:16 -0400 From: Tony DeLia Subject: Sample SQR Code - Sorting Arrays Hello... Since there seems to be some interest in my SQR Tools Site I thought I'd post a small sample. Here is some "snippets" of an Array Sorting Algorithm. I've also included my Assembler Version (Snippets) because I've included comments and a brief narrative of the sorting process within the program. Also, maybe there are some old timers out there learning SQR! The SQR Example sorts an array with a primary key (ARRkey), a secondary key (ARRsec) and has the data stored in ARRrec (I used 1 field for illustrative purposes). SORTptr is the main pointer- SCANptr is the pointer for comparison. Hope nobody minds me posting to the site. -Tony DeLia !********************************************************************** !* * !* MODULE: SORT EXAMPLE. * !* AUTHOR: TONY DELIA. * !* DATE: 10/02/1998. * !* SYSTEM: TD SQR UTILITY SERIES. * !* DESC: SORTING ARRAYS. * !* * !********************************************************************** .. .. do Define-Array do Load-Array do Sort-Array .. .. !********************************************************************** !* Define Array * !********************************************************************** begin-procedure Define-Array create-array name=ARRdat size=2000 field=ARRrec:char - field=ARRkey:char - field=ARRsec:char let #ARRmax = 2000 let #ARRctr = 0 end-procedure !********************************************************************** !* Load Array * !********************************************************************** begin-procedure Load-Array let #ARRctr = 0 while 1 = 1 read #mmc-i-no into $rec:200 if #end-file = 1 break end-if . . put $rec $skey $ssec into ARRdat (#ARRctr) ARRrec ARRkey ARRsec let #ARRctr = #ARRctr + 1 end-while end-procedure !********************************************************************** !* Sort Array * !********************************************************************** begin-procedure Sort-Array let #ARRmax = #ARRctr let #SORTptr = 0 while #SORTptr < #ARRmax let #SCANptr = #SORTptr + 1 get $SORTrec $SORTkey $SORTsec - from ARRdat (#SORTptr) ARRrec ARRkey ARRsec while #SCANptr < #ARRmax get $SCANrec $SCANkey $SCANsec - from ARRdat (#SCANptr) ARRrec ARRkey ARRsec if ($SORTkey > $SCANkey) or ($SORTkey = $SCANkey and $SORTsec > $SCANsec) put $SORTrec $SORTkey $SORTsec - into ARRdat (#SCANptr) ARRrec ARRkey ARRsec put $SCANrec $SCANkey $SCANsec - into ARRdat (#SORTptr) ARRrec ARRkey ARRsec let $SORTrec = $SCANrec let $SORTkey = $SCANkey let $SORTsec = $SCANsec end-if let #SCANptr = #SCANptr + 1 end-while let #SORTptr = #SORTptr + 1 end-while end-procedure !********************************************************************** Here's the Assembler Version (see comments for description of the above process). TITLE 'TDSRT - ASSEMBLER SORT TABLE // TONY DELIA' *********************************************************************** * * * MODULE: TDSRT. * * AUTHOR: TONY DELIA. * * DATE: 06/28/90. * * DESC: SORT TABLE OF ELEMENTS. * * * *********************************************************************** . . *********************************************************************** * SORT TABLE * *********************************************************************** DC F'0' RETURN ADDRESS SAVE AREA SORT EQU * ST 6,*-4 SAVE RETURN ADDRESS * LH 5,SCTR LOAD ENTRY COUNT CH 5,=H'1' ONLY 1 ENTRY ??? BE SORTX YES - EXIT SORT ROUTINE * BCTR 5,0 DECREMENT ENTRY COUNT BY 1 MH 5,=Y(SLEN) MULTIPLY BY ENTRY LENGTH LA 5,STABLE(5) POINT TO LAST ENTRY ST 5,SLAST SAVE LAST ENTRY ADDRESS * LA 4,STABLE INIT LO PTR - 1ST ENTRY LA 5,SLEN(,4) INIT HI PTR - 2ND ENTRY SORTIT EQU * CLC 0(SLEN,4),0(5) IS LO ENTRY > HI ENTRY ?? BNH BUMPHI NO - BUMP HI PTR XC 0(SLEN,4),0(5) YES - ISOLATE UNIQUE BITS XC 0(SLEN,5),0(4) REPLACE LO WITH HI ENTRY XC 0(SLEN,4),0(5) REPLACE HI WITH LO ENTRY BUMPHI EQU * LA 5,SLEN(,5) BUMP HI POINTER C 5,SLAST HI POINTER PAST LIMIT ?? BNH SORTIT NO - COMPARE AGAIN BUMPLO EQU * LA 4,SLEN(,4) YES - BUMP LO POINTER LA 5,SLEN(,4) RESET HI PTR = LO + 1 C 4,SLAST LO POINTER PAST LIMIT ?? BL SORTIT NO - KEEP SORTING SORTX EQU * L 6,SORT-4 RESTORE LINK REGISTER BR 6 BRANCH ON LINK REGISTER *********************************************************************** * * * BUBBLE SORT LOGIC: (LOW VALUES RISE LIKE BUBBLES TO TOP). * * * * INITIALLY, LO PTR (4) POINTS TO ENTRY 1 AND HI PTR (5) AT 2. * * LO PTR WILL REMAIN THE SAME UNTIL HI PTR REACHES THE END OF * * TABLE. EACH TIME HI PTR MOVES ALONG A COMPARE IS MADE WITH * * LO PTR AND ELEMENTS MAY BE SWAPPED. THIS FORCES THE LOWEST * * VALUE TO THE BEGINNING OF THE TABLE. THEN LO PTR IS BUMPED * * TO THE NEXT ENTRY AND HI PTR IS RESET TO LO PTR + 1 ENTRY. * * PROCESS IS THEN REPEATED FORCING THE NEXT LO VALUE TO 2ND * * TABLE POSITION. THIS WILL REPEAT ITSELF UNTIL LO PTR HAS * * REACHED THE LAST TABLE POSITION. NOTE THAT EACH TIME LO PTR * * IS BUMPED, THE PRECEDING ELEMENTS ARE IN SORTED ORDER AND * * ARE NO LONGER INCLUDED IN THE SORT PROCESS (TABLE SHRINKS). * * * *********************************************************************** EJECT *********************************************************************** * TABLE * *********************************************************************** SLEN EQU 2 TABLE ENTRY LENGTH SLAST DC F'0' LAST ENTRY ADDRESS SCTR DC H'0' NUMBER OF TABLE ENTRIES STABLE DC 100CL2' ' 2-DIGIT TABLE STABLEX DC X'FF' END-OF-TABLE MARKER *********************************************************************** END TDSRT -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Fri Oct 2 15:53:19 1998 Date: Fri, 2 Oct 1998 15:32:23 -0500 From: Mike Fulce Subject: PeopleSoft SQR Development Question Maybe this is more for DBA's (specifically ORACLE) than developers. (However, I'm not looking for philosophy, just practicality) I'd just like to hear how some of your shops manage the SQR development environment with PeopleSoft, ie: Do you allow developer's to run SQR's outside of PeopleSoft as user sysadm? If not, then how do you handle table reference coding in SQR's? Do you create synonymns for all of the PS tables or do you force the developers to code the schema name? What privileges do you give your developer's in the development database? Full or limited? If limited, please specify. Do you allow custom SQR's to build/drop temporary tables dynamically or do they use truncate on existing tables that the DBA created. I would like to have a loose development environment by giving SQR developers privileges to be able to connect to the development database outside of PeopleSoft to do queries or to run SQR's directly and to be able to do some DDL. However, since we are new to PeopleSoft and Oracle/SQR, our developer's are inexperienced. So I really don't want them connecting with the privileges of user sysadm outside of PeopleSoft. I'd appreciate any responses. ______________________________________________________________________________ Mike Fulce __ Oracle Database Administrator I OTR-Admin. Resources ___/ /__ University of Southern Mississippi m.fulce@usm.edu /__ ___/ Voice:(601) 266-6102 Fax:(601) 266-6881 207 Forrest County Hall / / Box 5171, Hattiesburg, MS 39406 / / http://ocean.otr.usm.edu/~rmfulce ^^ From owner-sqr-users@list.iex.net Fri Oct 2 17:48:50 1998 Date: Fri, 2 Oct 1998 17:00:03 -0400 From: "Hope, Sandra" Subject: Re: PeopleSoft SQR Development Question Sandra Hope DynCorp hopes@dyncorp.com Office: (703) 715-4428 RESYSTEMIZATION PeopleSoft > ---------- > From: Mike Fulce[SMTP:m.fulce@USM.EDU] > Reply To: SQR-USERS@USA.NET > Sent: Friday, October 02, 1998 4:32 PM > To: Multiple recipients of list SQR-USERS > Subject: PeopleSoft SQR Development Question > > Maybe this is more for DBA's (specifically ORACLE) than developers. > (However, I'm not looking for philosophy, just practicality) I'm a developer not a DBA! > I'd just like to hear how some of your shops manage the SQR development > environment with PeopleSoft, ie: > > Do you allow developer's to run SQR's outside of PeopleSoft as user > sysadm? Typically, developers are (should be) allowed to run SQR's outside of PS since this allows more flexibility. > If not, then how do you handle table reference coding in SQR's? Do you > create synonymns for all of the PS tables or do you force the developers > to > code the schema name? > > What privileges do you give your developer's in the development database? > Full or limited? If limited, please specify. Some companies allow full access and sometimes get into trouble if the developers aren't sure of what they are doing; other companies provide minimal to all and then piece-meal additional access to others as-needed. > Do you allow custom SQR's to build/drop temporary tables dynamically or do > they use truncate on existing tables that the DBA created. If build/drops occur on a regular basis, the database will become fragmented and cumbersome. Truncate allows data to be dropped but tablespace to remain. > I would like to have a loose development environment by giving SQR > developers privileges to be able to connect to the development database > outside of PeopleSoft to do queries or to run SQR's directly and to be > able > to do some DDL. However, since we are new to PeopleSoft and Oracle/SQR, > our developer's are inexperienced. So I really don't want them connecting > with the privileges of user sysadm outside of PeopleSoft. > If your developers are inexperienced, limit their access; they can unknowingly create problems. You can limit access to specific tables (not sure if this applies to commands like 'delete'). > I'd appreciate any responses. > __________________________________________________________________________ > ____ > Mike Fulce __ Oracle Database Administrator I > OTR-Admin. Resources ___/ /__ University of Southern Mississippi > m.fulce@usm.edu /__ ___/ Voice:(601) 266-6102 Fax:(601) 266-6881 > 207 Forrest County Hall / / Box 5171, Hattiesburg, MS 39406 > / / http://ocean.otr.usm.edu/~rmfulce > ^^ > From owner-sqr-users@list.iex.net Fri Oct 2 21:29:56 1998 Date: Fri, 2 Oct 1998 15:56:58 -0700 From: Michael Lee Subject: Re: PeopleSoft SQR Development Question Mike, These are very good questions. However, the PS-Users mailing list may be a better place to discuss this (You can subscribe at http://www.ps-users.com). I say that because lately, this list has been flooded with lots of mail. Anyways, everyone pretty much has a different methodology when it comes to DB access by developers. So, I must announce that this is just my opinion. In general, the developers should have loose access when it comes to DB security, Tools access, etc. Having a version control/source control system also helps out in the development environment. If you have a tight, monitored development area, you will be pushing more responsibility to your PeopleSoft Security Admin as well as the DBA(s). In my opinion, when the development area is NOT a "loose" environment, then the project tends to go very slow because you will have to funnel your requests through to the proper people. Your system integration/user acceptance TEST database should be a locked environment. And, your production environment should of course be locked. You may want your tech lead and your PeopleSoft security administrator to have tools/SQR (outside of PS)/sysadm access. All other developers should have full access to the development area. The demo database is usually open to all. I would suggest refreshing this every 2 weeks or every month. Make sure that when you have a minor upgrade, to refresh the database, then perform the upgrade, and then back up the database again... i.e. when going from 6.00 to 6.01, refresh the DB with 6.00, then upgrade to 6.01, then backup the 6.01 database. PeopleSoft doesn't ship a demo DB for minor upgrade releases, and you want to have a clean DB when upgrading the demo database. If you have any other questions, feel free to contact me at my client site (M-Th): 312.653.5026. Michael K. Lee mlee@agconsult.com Consultant AG Consulting, an ADP Company http://www.agconsult.com Mike Fulce on 10/02/98 01:32:23 PM Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: Michael Lee/Application Group) Subject: PeopleSoft SQR Development Question Maybe this is more for DBA's (specifically ORACLE) than developers. (However, I'm not looking for philosophy, just practicality) I'd just like to hear how some of your shops manage the SQR development environment with PeopleSoft, ie: Do you allow developer's to run SQR's outside of PeopleSoft as user sysadm? If not, then how do you handle table reference coding in SQR's? Do you create synonymns for all of the PS tables or do you force the developers to code the schema name? What privileges do you give your developer's in the development database? Full or limited? If limited, please specify. Do you allow custom SQR's to build/drop temporary tables dynamically or do they use truncate on existing tables that the DBA created. I would like to have a loose development environment by giving SQR developers privileges to be able to connect to the development database outside of PeopleSoft to do queries or to run SQR's directly and to be able to do some DDL. However, since we are new to PeopleSoft and Oracle/SQR, our developer's are inexperienced. So I really don't want them connecting with the privileges of user sysadm outside of PeopleSoft. I'd appreciate any responses. ___________________________________________________________________________ ___ Mike Fulce __ Oracle Database Administrator I OTR-Admin. Resources ___/ /__ University of Southern Mississippi m.fulce@usm.edu /__ ___/ Voice:(601) 266-6102 Fax:(601) 266-6881 207 Forrest County Hall / / Box 5171, Hattiesburg, MS 39406 / / http://ocean.otr.usm.edu/~rmfulce ^^ From owner-sqr-users@list.iex.net Sat Oct 3 02:51:13 1998 Date: Sat, 3 Oct 1998 00:21:05 -0700 From: Albert Howard Subject: If I may be so bold.. I'd like to add two suggestions to our gracious host's tips for using this mailing list, if I may: 1. Several people have posted multiple replys thinking that their messages didn't make it. This is because either they didn't see their own post, or saw the several rejections that result from all the dead addresses on the posting. Two commands sent to the list server will guarantee you will know your message posted: SET SQR-USERS REP and SET SQR-USERS ACK The first one tells the list server to send your postings back to you. The second one tells the list server to acknowledge your posting. Send these commands to listserv@usa.net. And remember, the stuff you get that says "rejected" etc..is not usually your message rejecting from the list..its the postmaster at one of the receiving mailboxes of ONE poster on the list. 2. If you are going to turn on an Autoresponder that says "I am out of the office" for vacation, you might want to unsubscribe to the list while you are gone so you don't send 100 of those autoresponses out per day. Hope you find this helpful... From owner-sqr-users@list.iex.net Sun Oct 4 09:34:55 1998 Date: Sun, 4 Oct 1998 10:09:06 EDT From: Venugopala R vatti Subject: Re: SQR Tools Web-site coming soon... In a message dated 98-10-01 20:23:41 EDT, you write: << tdelia@EROLS.COM >> I am interested in your tools. please include me in you mailing list. Email : Vgpreddy@yahoo.com or venuv999@aol.com From owner-sqr-users@list.iex.net Mon Oct 5 08:59:50 1998 Date: Mon, 5 Oct 1998 09:27:48 -0400 From: Jim Hardesty Subject: PeopleSoft SQR Development Question -Reply Mike, I'm sure you will get many responses advocating strong control of the databases. And there are many good reasons to have strong control. But let me give another side. We are a small PeopleSoft HRMS shop that has been live with PeopleSoft for almost 3 years and we have been through 3 release upgrades. We have only two PeopleSoft developers and PeopleSoft shares one DBA with Oracle Financials, a completely custom Sales pay system and a completely custom A/R system. That is one DBA with about 15-20 databases on 4 machines. So you can imagine how thinly our DBA resource is stretched. Both of the PeopleSoft developers know the sysadm password in all of the test and production databases. The developers build, drop and alter tables and indexes in both test and production. The developers run sqr, sql, etc as sysadm. Obviously, sqr has the access and ability to dynamically create and drop tables. But we don't do it. Only because PeopleSoft doesn't. We tend to model our SQR after PoepleSoft's and they always use an existing temporary table. One thing I would change would be to truncate the table at the end of the sqr instead of leaving a bunch of temporary data in a table. Maybe it doesn't matter, but it seems messy. The reason we allow developers to have the sysadm password is pure practicality. The DBA simply doesn't have the time or expertise to add any value to the process. We can show the DBA our alter scripts and he will hem and haw and whine about the inefficiency. But when it comes right down to it, the things he wants to change are the very things that PeopleSoft does on purpose. The DBA has a tendency to do much more harm than good when he looks at the PeopleSoft scripts. Are there risks? Of course. The developers can make mistakes. Production tables can be dropped. Does it happen? Yes. We once accidently dropped the production security tables. That's a bad thing, things got pretty exciting that day. But guess what, DBAs make mistakes too. I can guarantee that if I gave a script to the DBA that dropped the production security tables, and told him to run it, he would. Because he doesn't understand our tables and he would have no clue. Where is the control and what value is added? And that is what tends to happen when you control access. The people who are responsible for the changes don't have the access to make them. The people with the access don't have the same intimate understanding of what they are changing and aren't responsible for the changes. You end up with expertise and responsibility in one group, access and control in another. What value is added if I stand over someone's shoulder and tell them "ok, go to sqlplus and run psalter.sql" simply because they have access and I don't? Honestly, we should probably have more control, primarily in production. But if we did, less work would get done and more mistakes would be made. The changes need to be made. The big question you have to answer is who is best able to make the changes, not whose job description should give them control of the ability to make changes. On the question of synonyms: You've hit the nail on the head. How do developers access the tables if they aren't sysadm? You can't force them to code the schema name. You might have different schema names in different databases. Also, sqr should be written platform independent, let alone schema independent. You could create public synonyms for all of the tables. But then the developers need access to the tables, so you grant access to the tables. What kind of access? Well, they need read. Ooops, they need update. Ooops, they need delete. On which tables? PS_%. Ooops, they need some system PS% (no underscore). Ooops, they need more. Shoot. They need everything, or just about. So you create scripts that grant this access and create these synonyms. And these scripts need to be run every time tables are altered. And you probably created a role with this access and granted the role to the developers. So, when all is said and done, the developers can now select, update and delete from every table owned by sysadm. That is a lot of work, virtually for nothing. Ok, so they developers can't create or drop tables. Big deal. Once someone can write "truncate ps_job;" then you should probably trust them a little. Note: all of this only makes sense in a small shop with limited, trusted resources. You wouldn't be able to do this if you had 20 developers and 3 DBA's. I'm not sure what you'd do, but it would take more resources to control than we have total. Just my two cents, I hope everyone isn't adding my name to the list of resume's to be thrown away immediately upon receipt... jim >>> Mike Fulce 10/02/98 04:32pm >>> Maybe this is more for DBA's (specifically ORACLE) than developers. (However, I'm not looking for philosophy, just practicality) I'd just like to hear how some of your shops manage the SQR development environment with PeopleSoft, ie: Do you allow developer's to run SQR's outside of PeopleSoft as user sysadm? If not, then how do you handle table reference coding in SQR's? Do you create synonymns for all of the PS tables or do you force the developers to code the schema name? What privileges do you give your developer's in the development database? Full or limited? If limited, please specify. Do you allow custom SQR's to build/drop temporary tables dynamically or do they use truncate on existing tables that the DBA created. I would like to have a loose development environment by giving SQR developers privileges to be able to connect to the development database outside of PeopleSoft to do queries or to run SQR's directly and to be able to do some DDL. However, since we are new to PeopleSoft and Oracle/SQR, our developer's are inexperienced. So I really don't want them connecting with the privileges of user sysadm outside of PeopleSoft. I'd appreciate any responses. ______________________________________________________________________________ Mike Fulce __ Oracle Database Administrator I OTR-Admin. Resources ___/ /__ University of Southern Mississippi m.fulce@usm.edu /__ ___/ Voice:(601) 266-6102 Fax:(601) 266-6881 207 Forrest County Hall / / Box 5171, Hattiesburg, MS 39406 / / http://ocean.otr.usm.edu/~rmfulce ^^ From owner-sqr-users@list.iex.net Mon Oct 5 10:19:44 1998 Date: Mon, 5 Oct 1998 11:11:25 -0400 From: *Sehat Rosny Subject: Recursive function in SQRW Hello Have any one of you ever implement recursive procedure in SQRW ? Or is it possible to do recursive in SQRW? (the global variable of SQRW made recursive hard to implement) thank you in advance. any comment is welcome bye Sehat Rosny PeopleSoft and SQRW Developer From owner-sqr-users@list.iex.net Mon Oct 5 10:20:58 1998 Date: Mon, 5 Oct 1998 10:58:29 -0400 From: Cynthia Jones Subject: Job Announcement - PeopleSoft Contracts (Atlanta, San Diego, Chicago) I have a client with the following IMMEDIATE contract needs: 1) = PeopleSoft Financials Technical SQR Programmer. Locale: San Diego. = Requires: SQR, 2+ yrs. exp. w/PeopleSoft (v7), Billing, Costing and/or = Pricing exp. 2) PeopleSoft HRMS Technical Consultant. Locale: Chicago. = Requires: 2+ yrs. PeopleSoft exp., SQR, PeopleCode, PeopleTools. 3) = PeopleSoft Financials Technical Consultant. Locale: Atlanta. Requires: = SQR, PeopleCOde, PeopleTools. Interested? Contact me ASAP!!=20 Cynthia Jones Leader Institute www.peoplestaff.com 800.683.6690 x111=09 From owner-sqr-users@list.iex.net Mon Oct 5 10:49:38 1998 Date: Mon, 5 Oct 1998 11:27:20 -0400 From: Eric Dimick Eastman Subject: Re: Recursive function in SQRW Sehat, The short answer is that it can't be done. "Local" variables and parameters in SQR are not not like local variables in most languages. There is only only copy per invocation of the program, as opposed to being kept in a call stack. So recursive calls in SQR are little more than elaborate looping construct. The good news is that anything that can be done with recursive procedures can be done without them. To remove the recursion from an algorithm you basically create your own array to emulate a call stack. I have done this on a couple on occasions. E-mail me if you are interested in the gory details. Hope This helps, (or at least that you aren't too disappointed) Eric *Sehat Rosny wrote: > > Hello > > Have any one of you ever > implement recursive procedure in SQRW ? > Or is it possible to do recursive in SQRW? > (the global variable of SQRW made recursive > hard to implement) > > thank you in advance. > any comment is welcome > > bye > Sehat Rosny > PeopleSoft and SQRW Developer From owner-sqr-users@list.iex.net Mon Oct 5 11:03:30 1998 Date: Mon, 5 Oct 1998 11:40:45 -0400 From: Ranade Sameer Subject: Re: Recursive function in SQRW Hi, I never needed to implement recursive functions for any practical purposes in SQR, but it's possible to implement. I don't think global variables should cause any problems in general. Here is sample example: begin-report do test1 ! This is called recursively later. let #count=0 end-report begin-procedure test1 let #count=#count+1 if #count > 12 ! test condition to come out of SQR STOP else display 'Now in test1' display #count do test1 ! Call same procedure end-if end-procedure Above is very simple example, but it can be coded for complex tasks too. Hope it helps, -Sameer -----Original Message----- From: *Sehat Rosny [mailto:SRosny@SMTPGW.ARMS.OHIO-STATE.EDU] Sent: Monday, October 05, 1998 11:11 AM To: Multiple recipients of list SQR-USERS Subject: Recursive function in SQRW Hello Have any one of you ever implement recursive procedure in SQRW ? Or is it possible to do recursive in SQRW? (the global variable of SQRW made recursive hard to implement) thank you in advance. any comment is welcome bye Sehat Rosny PeopleSoft and SQRW Developer From owner-sqr-users@list.iex.net Mon Oct 5 13:55:41 1998 Date: Mon, 5 Oct 1998 13:31:36 -0500 From: Nathan Treadway Subject: Re: Recursive function in SQRW > Have any one of you ever > implement recursive procedure in SQRW ? > Or is it possible to do recursive in SQRW? > (the global variable of SQRW made recursive > hard to implement) Yes, it is possible, but it's definitely a pain. Go to http://www.sqrug.com/~sqrusers/search/ and search for the word "factorial" for a response to this question posted a few months ago, complete with a sample program. (Searching for "recursive" will also give you the answer, but not quite so quickly.) Nathan ---------------------------------------------------------------------------- Nathan Treadway | Ray Ontko & Co. | Software consulting services nathant@ontko.com | Richmond, IN | http://www.ontko.com/ From owner-sqr-users@list.iex.net Mon Oct 5 14:05:14 1998 Date: Mon, 5 Oct 1998 14:34:30 -0400 From: "rethier(contr-ird)" Subject: IsDate Function Hi! I am current using SQR version 4.0. Is there a IsDate() function that can validate the user input as a validate date data entry? Or have any one of you developed a subroutine that can validate a valid date data entry? and this function is independent of the database server. Thank you in advance! Rachel From owner-sqr-users@list.iex.net Mon Oct 5 14:33:03 1998 Date: Mon, 5 Oct 1998 14:13:47 CDT From: "C. Willis III" Subject: Re: IsDate Function Rachel, for validating user input as a date in sqr, see page 156 of your language reference manual; use type = date. clark Hi! I am current using SQR version 4.0. Is there a IsDate() function that can validate the user input as a validate date data entry? Or have any one of you developed a subroutine that can validate a valid date data entry? and this function is independent of the database server. Thank you in advance! Rachel ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Mon Oct 5 15:00:14 1998 Date: Mon, 5 Oct 1998 15:33:59 -0400 From: "rethier(contr-ird)" Subject: Re: IsDate Function Clark, Thanks for your response, but unfortunately I don't get the user input via terminal, I get inputs via reading from a temp parameter storing table. Rachel -----Original Message----- From: C. Willis III [mailto:ceprn@HOTMAIL.COM] Sent: Monday, October 05, 1998 3:14 PM To: Multiple recipients of list SQR-USERS Subject: Re: IsDate Function Rachel, for validating user input as a date in sqr, see page 156 of your language reference manual; use type = date. clark Hi! I am current using SQR version 4.0. Is there a IsDate() function that can validate the user input as a validate date data entry? Or have any one of you developed a subroutine that can validate a valid date data entry? and this function is independent of the database server. Thank you in advance! Rachel ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Mon Oct 5 15:17:02 1998 Date: Mon, 5 Oct 1998 14:31:01 -0500 From: Don Mellen Subject: Re: IsDate Function Alas, this will not work if you want users to be able to "enter" past that input for a predetermined default. If you use the "status=" option it will allow blanks but again not verify a good date. If you don't care about defaulting the date input, type=date works great and will display nice error messages when it is not a proper date/format and re-prompt. On Mon, 5 Oct 1998, C. Willis III wrote: > Rachel, > > for validating user input as a date in sqr, see page 156 of your > language reference manual; use type = date. > clark > > Hi! > I am current using SQR version 4.0. Is there a IsDate() function that > can validate the user input as a validate date data entry? Or have any > one of you developed a subroutine that can validate a valid date data > entry? and this function is independent of the database server. > Thank you in advance! > > Rachel > > > > ______________________________________________________ > Get Your Private, Free Email at http://www.hotmail.com > ----------------------------------------------------------------------- Donald Mellen | Ray Ontko & Co. - Richmond, IN - http://www.ontko.com/ donm@ontko.com | "In the beginning, there was nothing, which exploded" From owner-sqr-users@list.iex.net Mon Oct 5 19:36:16 1998 Date: Tue, 6 Oct 1998 08:21:06 +0800 From: Wayne Ivory Subject: Re: PeopleSoft SQR Development Question -Reply Jim, Congratulations on one of the most well-written emails I=27ve ever seen. = The fact that I happen to agree with you is by-the-by - it was well set = out, comprehensive, yet easy to read. I work for a mining company in Western Australia. We have 400 employees = and an IS department of 14 people. We are in the process of implementing = PeopleSoft HRMS and have 2 dedicated programmers and a project manager, = and share the single DBA with the rest of the department. We programmers = have the sysadm password for our 6 environments (including production) and = do all the things your programmers do (ie sqls, drop, alter). Our DBA is = very competent, but extremely busy, and like yours doesn=27t have an = intimate understanding of PeopleSoft. Yes, mistakes can happen in production, but that=27s why God invented = backups, and I think it actually strengthens your character. In fact = I=27ve devised a maxim I=27ll call Wayne=27s Law for want of a better name = (note: contains obscentity - skip next paragraph if you think you=27ll be = offended): =22Good programmers fuck up really badly once=21=22 Whether it be =22rm *=22 or =22drop=22 or any one of the other potentially = catastrophic commands at our disposal, my experience has been that once = this happens to someone it rattles them to the point that they sort of = develop a sixth sense about these things. I can think of about 10 people = (including myself) that fall into this category. Of course Jim=27s and my approach won=27t suit every site, but Mike (the = original poster) be assured it is a worthwhile consideration. If you have = competent professional people working on your project then you can afford = to trust them with this sort of responsibility. Wayne Ivory Information Services Westralian Sands Limited >>> Jim Hardesty 5/10/98 9:27:48 pm >>> Mike, I=27m sure you will get many responses advocating strong control of the = databases. And there are many good reasons to have strong control. But let me give another side. ___________________________________________________________________________= ___ Mike Fulce __ Oracle Database Administrator I OTR-Admin. Resources ___/ /__ University of Southern Mississippi m.fulce=40usm.edu /__ ___/ Voice:(601) 266-6102 Fax:(601) = 266-6881 207 Forrest County Hall / / Box 5171, Hattiesburg, MS 39406 / / http://ocean.otr.usm.edu/=7Ermfulce=20 =5E=5E From owner-sqr-users@list.iex.net Tue Oct 6 06:52:59 1998 Date: Tue, 6 Oct 1998 06:43:59 -0500 From: Gopal Nandakumar Subject: Re: Recursive function in SQRW Hello, I have used recursive procedure in SQRW which works like in any other language. The only problem I found is that when the recursive procedure is called within the procedure again and again for more than a certain number of times the program abends with a general protection failure. In other words somewhere the memory gets corrupt. So I could not use it successfully calling for more than 300 times. Thanks. Gopal TCS INC (210) 491 0046 At 01:31 PM 10/5/98 -0500, you wrote: >> Have any one of you ever >> implement recursive procedure in SQRW ? >> Or is it possible to do recursive in SQRW? >> (the global variable of SQRW made recursive >> hard to implement) > >Yes, it is possible, but it's definitely a pain. > >Go to http://www.sqrug.com/~sqrusers/search/ and search for the word >"factorial" for a response to this question posted a few months ago, >complete with a sample program. (Searching for "recursive" will also give >you the answer, but not quite so quickly.) > > > Nathan > >---------------------------------------------------------------------------- >Nathan Treadway | Ray Ontko & Co. | Software consulting services >nathant@ontko.com | Richmond, IN | http://www.ontko.com/ > From owner-sqr-users@list.iex.net Tue Oct 6 07:38:14 1998 Date: Tue, 6 Oct 1998 08:26:08 -0400 From: Randy Learn Subject: Re: Commit in DB2/MVS Thank you for the reply's on the DB2 commit issue. I was out of the office a few days, hence my slow reply. Unfortunately I can not post the code since the program is quite large. But the general flow of the program is this: 1. I read a sequential file 2. The program does a few selects to find key values. 3. The program inserts records into approximately 20 tables and updates 3 tables. 4. After x number of records are processed from the sequential file a commit is issued. The commit is not in a select loop and any where clause on the selects are using $string variables. I put a begin-sql, end-sql around the commit with an on-error statement to see if I could capture more detail information on the abend. After processing x number of records and issuing a commit the error indicated that the select after the commit was no longer prepared. Knowing that begin-sql, end-sql around the commit is incorrect I remove them. Don't know if this info helps any? Again the commit did actually commit the records. I have never used the 'With Hold' option in SQR, since it automatically handles the cursors for you. How would you specify the 'with hold' option in SQR? Randy From owner-sqr-users@list.iex.net Tue Oct 6 08:29:21 1998 Date: Tue, 6 Oct 1998 06:44:06 -0500 From: Gopal Nandakumar Subject: Re: Sample SQR Code - Sorting Arrays Hello, The sort method you used is very commonly used method and nothing new or difficult to code. The following changes have to be made in your code in order to make to work correctly: >begin-procedure Sort-Array > >let #ARRmax = #ARRctr >let #SORTptr = 0 > >while #SORTptr <= #ARRmax > > let #SCANptr = #SORTptr + 1 > > get $SORTrec $SORTkey $SORTsec - > from ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > while #SCANptr <= #ARRmax The while statements should have a condition of "<=". I do not understand the rationale in using assembler code in SQRW. One of the main selling point for SQR is its independence of Database and Platform. Once we start using assembler code then we loose the independence. If we want to use assembler code we may be better of writing programs in assember completely instead of using SQRW. It is also very hard to say which SORT routine is best to use. Almost in every interface we write in SQRW, a sort routine is used. We use the follwoing rule of thumb: 1. If the array size is 300 or less use Quick Sort routine 2. If the array size is 301 - 5000 use Bubble Sort 3. If the array size if over 5000 use Temporary Tables. Thanks. Gopal. TCS INC. (210) 491 0046 At 01:09 PM 10/2/98 -0400, you wrote: >Hello... > >Since there seems to be some interest in my SQR Tools Site I thought I'd >post a small sample. Here is some "snippets" of an Array Sorting >Algorithm. >I've also included my Assembler Version (Snippets) because I've included >comments and a brief narrative of the sorting process within the >program. >Also, maybe there are some old timers out there learning SQR! >The SQR Example sorts an array with a primary key (ARRkey), a secondary >key (ARRsec) and has the data stored in ARRrec (I used 1 field for >illustrative purposes). SORTptr is the main pointer- SCANptr is the >pointer for comparison. Hope nobody minds me posting to the site. > > > -Tony DeLia > > > >!********************************************************************** >!* * >!* MODULE: SORT EXAMPLE. * >!* AUTHOR: TONY DELIA. * >!* DATE: 10/02/1998. * >!* SYSTEM: TD SQR UTILITY SERIES. * >!* DESC: SORTING ARRAYS. * >!* * >!********************************************************************** > >.. >.. >do Define-Array >do Load-Array >do Sort-Array >.. >.. > >!********************************************************************** >!* Define Array * >!********************************************************************** > >begin-procedure Define-Array > >create-array name=ARRdat size=2000 field=ARRrec:char - > field=ARRkey:char - > field=ARRsec:char > >let #ARRmax = 2000 >let #ARRctr = 0 > >end-procedure > >!********************************************************************** >!* Load Array * >!********************************************************************** > >begin-procedure Load-Array > >let #ARRctr = 0 > >while 1 = 1 > > read #mmc-i-no into $rec:200 > > if #end-file = 1 > break > end-if > . > . > put $rec $skey $ssec into ARRdat (#ARRctr) ARRrec ARRkey ARRsec > > let #ARRctr = #ARRctr + 1 > >end-while > >end-procedure > >!********************************************************************** >!* Sort Array * >!********************************************************************** > >begin-procedure Sort-Array > >let #ARRmax = #ARRctr >let #SORTptr = 0 > >while #SORTptr < #ARRmax > > let #SCANptr = #SORTptr + 1 > > get $SORTrec $SORTkey $SORTsec - > from ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > while #SCANptr < #ARRmax > > get $SCANrec $SCANkey $SCANsec - > from ARRdat (#SCANptr) ARRrec ARRkey ARRsec > > if ($SORTkey > $SCANkey) > or ($SORTkey = $SCANkey > and $SORTsec > $SCANsec) > > put $SORTrec $SORTkey $SORTsec - > into ARRdat (#SCANptr) ARRrec ARRkey ARRsec > > put $SCANrec $SCANkey $SCANsec - > into ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > let $SORTrec = $SCANrec > let $SORTkey = $SCANkey > let $SORTsec = $SCANsec > > end-if > > let #SCANptr = #SCANptr + 1 > > end-while > > let #SORTptr = #SORTptr + 1 > >end-while > >end-procedure > >!********************************************************************** > >Here's the Assembler Version (see comments for description of the >above process). > > TITLE 'TDSRT - ASSEMBLER SORT TABLE // TONY DELIA' >*********************************************************************** >* * >* MODULE: TDSRT. * >* AUTHOR: TONY DELIA. * >* DATE: 06/28/90. * >* DESC: SORT TABLE OF ELEMENTS. * >* * >*********************************************************************** > . > . >*********************************************************************** >* SORT TABLE * >*********************************************************************** > DC F'0' RETURN ADDRESS SAVE AREA >SORT EQU * > ST 6,*-4 SAVE RETURN ADDRESS >* > LH 5,SCTR LOAD ENTRY COUNT > CH 5,=H'1' ONLY 1 ENTRY ??? > BE SORTX YES - EXIT SORT ROUTINE >* > BCTR 5,0 DECREMENT ENTRY COUNT BY 1 > MH 5,=Y(SLEN) MULTIPLY BY ENTRY LENGTH > LA 5,STABLE(5) POINT TO LAST ENTRY > ST 5,SLAST SAVE LAST ENTRY ADDRESS >* > LA 4,STABLE INIT LO PTR - 1ST ENTRY > LA 5,SLEN(,4) INIT HI PTR - 2ND ENTRY >SORTIT EQU * > CLC 0(SLEN,4),0(5) IS LO ENTRY > HI ENTRY ?? > BNH BUMPHI NO - BUMP HI PTR > XC 0(SLEN,4),0(5) YES - ISOLATE UNIQUE BITS > XC 0(SLEN,5),0(4) REPLACE LO WITH HI ENTRY > XC 0(SLEN,4),0(5) REPLACE HI WITH LO ENTRY >BUMPHI EQU * > LA 5,SLEN(,5) BUMP HI POINTER > C 5,SLAST HI POINTER PAST LIMIT ?? > BNH SORTIT NO - COMPARE AGAIN >BUMPLO EQU * > LA 4,SLEN(,4) YES - BUMP LO POINTER > LA 5,SLEN(,4) RESET HI PTR = LO + 1 > C 4,SLAST LO POINTER PAST LIMIT ?? > BL SORTIT NO - KEEP SORTING >SORTX EQU * > L 6,SORT-4 RESTORE LINK REGISTER > BR 6 BRANCH ON LINK REGISTER >*********************************************************************** >* * >* BUBBLE SORT LOGIC: (LOW VALUES RISE LIKE BUBBLES TO TOP). * >* * >* INITIALLY, LO PTR (4) POINTS TO ENTRY 1 AND HI PTR (5) AT 2. * >* LO PTR WILL REMAIN THE SAME UNTIL HI PTR REACHES THE END OF * >* TABLE. EACH TIME HI PTR MOVES ALONG A COMPARE IS MADE WITH * >* LO PTR AND ELEMENTS MAY BE SWAPPED. THIS FORCES THE LOWEST * >* VALUE TO THE BEGINNING OF THE TABLE. THEN LO PTR IS BUMPED * >* TO THE NEXT ENTRY AND HI PTR IS RESET TO LO PTR + 1 ENTRY. * >* PROCESS IS THEN REPEATED FORCING THE NEXT LO VALUE TO 2ND * >* TABLE POSITION. THIS WILL REPEAT ITSELF UNTIL LO PTR HAS * >* REACHED THE LAST TABLE POSITION. NOTE THAT EACH TIME LO PTR * >* IS BUMPED, THE PRECEDING ELEMENTS ARE IN SORTED ORDER AND * >* ARE NO LONGER INCLUDED IN THE SORT PROCESS (TABLE SHRINKS). * >* * >*********************************************************************** > EJECT >*********************************************************************** >* TABLE * >*********************************************************************** >SLEN EQU 2 TABLE ENTRY LENGTH >SLAST DC F'0' LAST ENTRY ADDRESS >SCTR DC H'0' NUMBER OF TABLE ENTRIES >STABLE DC 100CL2' ' 2-DIGIT TABLE >STABLEX DC X'FF' END-OF-TABLE MARKER >*********************************************************************** > END TDSRT > > > >-- >Tony DeLia >AnswerThink Consulting Group >PeopleSoft Solutions Practice - Delphi Partners >tdelia@erols.com > From owner-sqr-users@list.iex.net Tue Oct 6 10:06:27 1998 Date: Tue, 6 Oct 1998 10:39:44 -0400 From: "Kulshrestha, Alok" Subject: Sending E-mail from SQR... SQR Version : 3.0.18.0 Database : Oracle 7.3 Platform : Windows95 I have a requirement where I need to send e-mail notification, once my program has finished. I use Outlook as my E-mail application. Is there anyway to send e-mail from SQR when running on windows 95. Any help will be appreciated. Thanks. -alok Kulshrestha From owner-sqr-users@list.iex.net Tue Oct 6 10:56:13 1998 Date: Tue, 6 Oct 1998 07:54:22 -0600 From: Albert Howard Subject: Re: PeopleSoft SQR Development Question -Reply In an implementation environment you are shooting yourself in the foot if you do not allow developers acccess to the sysadm. SQR's will normally be run by Process Scheduler in production, so they can be developed pointing to sysadm. But this of course means that the developers need sysadm access. Without that, you will just take two or three times longer to get things done. Once you are in a production environment, you can lock down production, but developers need a development database where they have full access. Any less will cause delays. I never create/drop tables in SQR. Always define them outside the program, usually in Application Designer. You asked about the right forum. A good place for questions like this is http://www.peoplesoftfans.com. THey have a discussion group there thats pretty good. >>>> Mike Fulce 10/02/98 04:32pm >>> >Maybe this is more for DBA's (specifically ORACLE) than developers. >(However, I'm not looking for philosophy, just practicality) > >I'd just like to hear how some of your shops manage the SQR development >environment with PeopleSoft, ie: > >Do you allow developer's to run SQR's outside of PeopleSoft as user sysadm? > >If not, then how do you handle table reference coding in SQR's? Do you >create synonymns for all of the PS tables or do you force the developers to >code the schema name? > >What privileges do you give your developer's in the development database? >Full or limited? If limited, please specify. > >Do you allow custom SQR's to build/drop temporary tables dynamically or do >they use truncate on existing tables that the DBA created. > >I would like to have a loose development environment by giving SQR >developers privileges to be able to connect to the development database >outside of PeopleSoft to do queries or to run SQR's directly and to be able >to do some DDL. However, since we are new to PeopleSoft and Oracle/SQR, our >developer's are inexperienced. So I really don't want them connecting with >the privileges of user sysadm outside of PeopleSoft. > >I'd appreciate any responses. >___________________________________________________________________________ ___ >Mike Fulce __ Oracle Database Administrator I >OTR-Admin. Resources ___/ /__ University of Southern Mississippi >m.fulce@usm.edu /__ ___/ Voice:(601) 266-6102 Fax:(601) 266-6881 >207 Forrest County Hall / / Box 5171, Hattiesburg, MS 39406 > / / http://ocean.otr.usm.edu/~rmfulce > ^^ > From owner-sqr-users@list.iex.net Tue Oct 6 10:57:38 1998 Date: Tue, 6 Oct 1998 10:38:08 CDT From: "C. Willis III" Subject: Re: Sending E-mail from SQR... Alok, What we have done at the client site I am working at currently is created a table in oracle that looks like this : PAY_CYCLE PAY_CYCLE_SEQ_NUM EFFDT RKA_MAIL_FLAG EMAILID EMAIL_ADDRESS EMAIL_SUBJECT EMAIL_NOTETEXT Obviously, some of the fields would be different. We then use a Unix shell script which runs automatically every so often to select the information from the table, update the flag and send it to the user via the unix mail (sendmail) function. I know this is a little different from your requested information, but maybe it's an option you can pursue. clark ----Original Message Follows---- SQR Version : 3.0.18.0 Database : Oracle 7.3 Platform : Windows95 I have a requirement where I need to send e-mail notification, once my program has finished. I use Outlook as my E-mail application. Is there anyway to send e-mail from SQR when running on windows 95. Any help will be appreciated. Thanks. -alok Kulshrestha ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Tue Oct 6 11:13:45 1998 Date: Tue, 6 Oct 1998 11:46:45 -0400 From: Ranade Sameer Subject: Re: Sending E-mail from SQR... Hi, I don't thing you can currently send e-mail from SQR. If u were using Unix,SQR function : System('mailx', ...) could have helped. I don't thing outlook mail can be invoked that way. If you are using Psoft, you can try using Peoplecode's 'sendmail' function. -Sameer -----Original Message----- From: Kulshrestha, Alok [mailto:ALOKKULSHRESTHA@IMF.ORG] Sent: Tuesday, October 06, 1998 10:40 AM To: Multiple recipients of list SQR-USERS Subject: Sending E-mail from SQR... SQR Version : 3.0.18.0 Database : Oracle 7.3 Platform : Windows95 I have a requirement where I need to send e-mail notification, once my program has finished. I use Outlook as my E-mail application. Is there anyway to send e-mail from SQR when running on windows 95. Any help will be appreciated. Thanks. -alok Kulshrestha From owner-sqr-users@list.iex.net Tue Oct 6 12:26:40 1998 Date: Tue, 6 Oct 1998 13:04:38 -0400 From: Tony DeLia Subject: Re: Sample SQR Code - Sorting Arrays GOPAL, Thankyou for your negative response. I am new to the group and thought I'd share something with people new to SQR. For an SQR Wizard such as yourself I'm sure there is nothing new or difficult about a simple sort algorithm - but this is not GOPAL's group! It is a resource primarily for new SQR programmers. AND I included the Assembler source because it is "COMMENTED" and has a description of the process - I KNOW IBM Mainframe Assembler (370) has absolutely nothing to do with SQRW!!! I'm busy and didn't want to re-type the description - sorry! AND... I fully understand there are times to use various sort methods (Quicksort, Array Sort, Temporary Tables). This illustrates the method when an array SORT is required - I'm sure everyone already knows the other methods! And as far as your fix goes ... YOU BROKE IT BY ADDING '<=' #ARRmax. I don't set #SORTptr to #ARRmax - EVER!!! When I'm finished comparing element #ARRmax - 1 to #SCANptr (#ARRmax) I'm DONE!!! With your "FIX" all you've done is set an extra gyration in the process! Did you read the comments in the Assembler Version??? That's why I put them there! Not to be overly sensitive but an apology is in order - My code always works correctly. Look closer next time. I've had to come in to work PLENTY of times at 3:00am to fix mistakes due to programmers who "think" they know what they're doing! I APOLOGIZE TO THE GROUP BUT I FEEL I'VE BEEN ATTACKED!!! I'll stop posting if this is the response I get! Have a great day. Tony DeLia Gopal Nandakumar wrote: > > Hello, > > The sort method you used is very commonly used method and nothing new or > difficult to code. The following changes have to be made in your code in > order to make to work correctly: > > >begin-procedure Sort-Array > > > >let #ARRmax = #ARRctr > >let #SORTptr = 0 > > > >while #SORTptr <= #ARRmax > > > > let #SCANptr = #SORTptr + 1 > > > > get $SORTrec $SORTkey $SORTsec - > > from ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > > > while #SCANptr <= #ARRmax > > The while statements should have a condition of "<=". > > I do not understand the rationale in using assembler code in SQRW. One > of the main selling point for SQR is its independence of Database and > Platform. Once we start using assembler code then we loose the > independence. If we want to use assembler code we may be better of > writing programs in assember completely instead of using SQRW. > > It is also very hard to say which SORT routine is best to use. Almost > in every interface we write in SQRW, a sort routine is used. We use the > follwoing rule of thumb: > > 1. If the array size is 300 or less use Quick Sort routine > 2. If the array size is 301 - 5000 use Bubble Sort > 3. If the array size if over 5000 use Temporary Tables. > > Thanks. > > Gopal. > TCS INC. > (210) 491 0046 > > At 01:09 PM 10/2/98 -0400, you wrote: > >Hello... > > > >Since there seems to be some interest in my SQR Tools Site I thought I'd > >post a small sample. Here is some "snippets" of an Array Sorting > >Algorithm. > >I've also included my Assembler Version (Snippets) because I've included > >comments and a brief narrative of the sorting process within the > >program. > >Also, maybe there are some old timers out there learning SQR! > >The SQR Example sorts an array with a primary key (ARRkey), a secondary > >key (ARRsec) and has the data stored in ARRrec (I used 1 field for > >illustrative purposes). SORTptr is the main pointer- SCANptr is the > >pointer for comparison. Hope nobody minds me posting to the site. > > > > > > -Tony DeLia > > > > > > > >!********************************************************************** > >!* * > >!* MODULE: SORT EXAMPLE. * > >!* AUTHOR: TONY DELIA. * > >!* DATE: 10/02/1998. * > >!* SYSTEM: TD SQR UTILITY SERIES. * > >!* DESC: SORTING ARRAYS. * > >!* * > >!********************************************************************** > > > >.. > >.. > >do Define-Array > >do Load-Array > >do Sort-Array > >.. > >.. > > > >!********************************************************************** > >!* Define Array * > >!********************************************************************** > > > >begin-procedure Define-Array > > > >create-array name=ARRdat size=2000 field=ARRrec:char - > > field=ARRkey:char - > > field=ARRsec:char > > > >let #ARRmax = 2000 > >let #ARRctr = 0 > > > >end-procedure > > > >!********************************************************************** > >!* Load Array * > >!********************************************************************** > > > >begin-procedure Load-Array > > > >let #ARRctr = 0 > > > >while 1 = 1 > > > > read #mmc-i-no into $rec:200 > > > > if #end-file = 1 > > break > > end-if > > . > > . > > put $rec $skey $ssec into ARRdat (#ARRctr) ARRrec ARRkey ARRsec > > > > let #ARRctr = #ARRctr + 1 > > > >end-while > > > >end-procedure > > > >!********************************************************************** > >!* Sort Array * > >!********************************************************************** > > > >begin-procedure Sort-Array > > > >let #ARRmax = #ARRctr > >let #SORTptr = 0 > > > >while #SORTptr < #ARRmax > > > > let #SCANptr = #SORTptr + 1 > > > > get $SORTrec $SORTkey $SORTsec - > > from ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > > > while #SCANptr < #ARRmax > > > > get $SCANrec $SCANkey $SCANsec - > > from ARRdat (#SCANptr) ARRrec ARRkey ARRsec > > > > if ($SORTkey > $SCANkey) > > or ($SORTkey = $SCANkey > > and $SORTsec > $SCANsec) > > > > put $SORTrec $SORTkey $SORTsec - > > into ARRdat (#SCANptr) ARRrec ARRkey ARRsec > > > > put $SCANrec $SCANkey $SCANsec - > > into ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > > > let $SORTrec = $SCANrec > > let $SORTkey = $SCANkey > > let $SORTsec = $SCANsec > > > > end-if > > > > let #SCANptr = #SCANptr + 1 > > > > end-while > > > > let #SORTptr = #SORTptr + 1 > > > >end-while > > > >end-procedure > > > >!********************************************************************** > > > >Here's the Assembler Version (see comments for description of the > >above process). > > > > TITLE 'TDSRT - ASSEMBLER SORT TABLE // TONY DELIA' > >*********************************************************************** > >* * > >* MODULE: TDSRT. * > >* AUTHOR: TONY DELIA. * > >* DATE: 06/28/90. * > >* DESC: SORT TABLE OF ELEMENTS. * > >* * > >*********************************************************************** > > . > > . > >*********************************************************************** > >* SORT TABLE * > >*********************************************************************** > > DC F'0' RETURN ADDRESS SAVE AREA > >SORT EQU * > > ST 6,*-4 SAVE RETURN ADDRESS > >* > > LH 5,SCTR LOAD ENTRY COUNT > > CH 5,=H'1' ONLY 1 ENTRY ??? > > BE SORTX YES - EXIT SORT ROUTINE > >* > > BCTR 5,0 DECREMENT ENTRY COUNT BY 1 > > MH 5,=Y(SLEN) MULTIPLY BY ENTRY LENGTH > > LA 5,STABLE(5) POINT TO LAST ENTRY > > ST 5,SLAST SAVE LAST ENTRY ADDRESS > >* > > LA 4,STABLE INIT LO PTR - 1ST ENTRY > > LA 5,SLEN(,4) INIT HI PTR - 2ND ENTRY > >SORTIT EQU * > > CLC 0(SLEN,4),0(5) IS LO ENTRY > HI ENTRY ?? > > BNH BUMPHI NO - BUMP HI PTR > > XC 0(SLEN,4),0(5) YES - ISOLATE UNIQUE BITS > > XC 0(SLEN,5),0(4) REPLACE LO WITH HI ENTRY > > XC 0(SLEN,4),0(5) REPLACE HI WITH LO ENTRY > >BUMPHI EQU * > > LA 5,SLEN(,5) BUMP HI POINTER > > C 5,SLAST HI POINTER PAST LIMIT ?? > > BNH SORTIT NO - COMPARE AGAIN > >BUMPLO EQU * > > LA 4,SLEN(,4) YES - BUMP LO POINTER > > LA 5,SLEN(,4) RESET HI PTR = LO + 1 > > C 4,SLAST LO POINTER PAST LIMIT ?? > > BL SORTIT NO - KEEP SORTING > >SORTX EQU * > > L 6,SORT-4 RESTORE LINK REGISTER > > BR 6 BRANCH ON LINK REGISTER > >*********************************************************************** > >* * > >* BUBBLE SORT LOGIC: (LOW VALUES RISE LIKE BUBBLES TO TOP). * > >* * > >* INITIALLY, LO PTR (4) POINTS TO ENTRY 1 AND HI PTR (5) AT 2. * > >* LO PTR WILL REMAIN THE SAME UNTIL HI PTR REACHES THE END OF * > >* TABLE. EACH TIME HI PTR MOVES ALONG A COMPARE IS MADE WITH * > >* LO PTR AND ELEMENTS MAY BE SWAPPED. THIS FORCES THE LOWEST * > >* VALUE TO THE BEGINNING OF THE TABLE. THEN LO PTR IS BUMPED * > >* TO THE NEXT ENTRY AND HI PTR IS RESET TO LO PTR + 1 ENTRY. * > >* PROCESS IS THEN REPEATED FORCING THE NEXT LO VALUE TO 2ND * > >* TABLE POSITION. THIS WILL REPEAT ITSELF UNTIL LO PTR HAS * > >* REACHED THE LAST TABLE POSITION. NOTE THAT EACH TIME LO PTR * > >* IS BUMPED, THE PRECEDING ELEMENTS ARE IN SORTED ORDER AND * > >* ARE NO LONGER INCLUDED IN THE SORT PROCESS (TABLE SHRINKS). * > >* * > >*********************************************************************** > > EJECT > >*********************************************************************** > >* TABLE * > >*********************************************************************** > >SLEN EQU 2 TABLE ENTRY LENGTH > >SLAST DC F'0' LAST ENTRY ADDRESS > >SCTR DC H'0' NUMBER OF TABLE ENTRIES > >STABLE DC 100CL2' ' 2-DIGIT TABLE > >STABLEX DC X'FF' END-OF-TABLE MARKER > >*********************************************************************** > > END TDSRT > > > > > > > >-- > >Tony DeLia > >AnswerThink Consulting Group > >PeopleSoft Solutions Practice - Delphi Partners > >tdelia@erols.com > > -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Tue Oct 6 13:03:10 1998 Date: Tue, 6 Oct 1998 13:38:02 -0400 From: "Chugani, Manju (Computer Enterprises Inc at Alcoa)" Subject: PSORA Error Hi Everyone , We are getting an error when we try to start the process scheduler . The error is '00001 Module PSORA has not been initalised ' . We have Oracle 7.2.3 as our database & we are trying to start the process scheduler in Unix env. We are using PS 7.5 Thanks in advance . Manju Chugani E-Mail: Manju.Chugani@alcoa.com PHONE: (412) 553-5675 b From owner-sqr-users@list.iex.net Tue Oct 6 13:06:30 1998 Date: Tue, 6 Oct 1998 13:43:51 -0400 From: Tony DeLia Subject: ATTN - Please read RE:SQR Sample Code - Sorting Arrays My apologies once again to the group... PLEASE read my response to Gopal on Sorting Arrays. I have a great deal of pride in my work and my profession. My Sort Routine works perfectly as you'll find out in my reply. -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Tue Oct 6 13:08:38 1998 Date: Tue, 6 Oct 1998 13:43:16 -0400 From: "Setzer, Jerome (SOM400A)" Subject: Dynamic rename of multi reports at run time Hi Folks, I would like to rename two reports from one SQR pgm at run time, using the current date and a db field as the title. I don't want the standard program.lis or spf file names. The NEW_REPORT function won't work on two reports in the same pgm. Any suggestions? Thanks, Jerry Setzer Defined Contribution Systems Merrill Lynch 732-764-7729 From owner-sqr-users@list.iex.net Tue Oct 6 13:33:17 1998 Date: Tue, 6 Oct 1998 13:10:09 -0500 From: Don Mellen Subject: Re: Dynamic rename of multi reports at run time It works for me. I can declare-report for 3 different reports... begin-setup declare-report rep1 end-declare declare-report rep2 end-declare declare-report rep3 end-declare end-setup and before I print, change each of the names using new-report like ... use-report rep1 new-report 'test_fnew1.lrpt' ... print stuff ... then switch between them using ... use-report rep1 ... print stuff ... use-report rep3 ... print stuff ... use-report rep2 ... print stuff ... use-report rep3 ... print stuff ... HTH, Don Mellen On Tue, 6 Oct 1998, Setzer, Jerome (SOM400A) wrote: > Hi Folks, > I would like to rename two reports from one SQR pgm at run time, > using the current date and a db field as the title. I don't want the > standard program.lis or spf file names. The NEW_REPORT function won't work > on two reports in the same pgm. Any suggestions? > > Thanks, > Jerry Setzer > Defined Contribution Systems > Merrill Lynch > 732-764-7729 > ----------------------------------------------------------------------- Donald Mellen | Ray Ontko & Co. - Richmond, IN - http://www.ontko.com/ donm@ontko.com | "In the beginning, there was nothing, which exploded" From owner-sqr-users@list.iex.net Tue Oct 6 13:58:28 1998 Date: Tue, 6 Oct 1998 14:35:03 -0400 From: Charu Srinivas Subject: Re: PSORA Error Hi Manju!! this seems like the PS_SQLSTMT_TBL is corrupted. To remedy this you have to run the STOREPT.DMS again to populate PS_SQLSTMT_TBL. Hope this helps. Charu Manju.Chugani@ALCOA.COM on 10/06/98 01:38:02 PM Please respond to SQR-USERS@USA.NET To: SQR-USERS@list.iex.net cc: (bcc: C. Srinivas/dsisys/US) Subject: PSORA Error Hi Everyone , We are getting an error when we try to start the process scheduler . The error is '00001 Module PSORA has not been initalised ' . We have Oracle 7.2.3 as our database & we are trying to start the process scheduler in Unix env. We are using PS 7.5 Thanks in advance . Manju Chugani E-Mail: Manju.Chugani@alcoa.com PHONE: (412) 553-5675 b From owner-sqr-users@list.iex.net Tue Oct 6 13:59:33 1998 Date: Tue, 6 Oct 1998 13:36:48 -0500 From: Kenny Melton Subject: Re: Sample SQR Code - Sorting Arrays Tony, I originally started to send this reply only to you because I want to help keep this list as it was intended - for the sharing of knowledge - and not turn it into a "who is better at what" contest. But, after much thought, I decided to share this with the whole group because I wanted other people to know that if they decide to share their experience and knowledge with the rest of us it would be well received. Even on the odd chance that their information may be wrong. In any case, don't let him get you down - it is obvious that he didn't understand your reasons for posting the Assembler code and I do understand your indignation. I really do appreciate your postings and sincerely hope that you decide to continue them. I think the rub here is that you are sharing your solutions to the rest of us free of charge whereas some people are in the business of making money off of their solutions - you threaten their "business". If you do decide to discontinue your postings to this list due to receiving pot-shots from the high and mighty gurus (yes, I am sure they are extremely more knowledgeable than me), then let me at least say "Thank You" for your effort and your willingness to help others. I hope that the list master will see this posting as it is intended and that others will not be deterred from sharing because of this situation. Sincerely, Kenny Melton Tandy Information Services kmelto1@tandy.com -----Original Message----- From: Tony DeLia [mailto:tdelia@EROLS.COM] Sent: Friday, October 02, 1998 12:09 PM To: Multiple recipients of list SQR-USERS Subject: Sample SQR Code - Sorting Arrays Hello... Since there seems to be some interest in my SQR Tools Site I thought I'd post a small sample. Here is some "snippets" of an Array Sorting Algorithm. I've also included my Assembler Version (Snippets) because I've included comments and a brief narrative of the sorting process within the program. Also, maybe there are some old timers out there learning SQR! The SQR Example sorts an array with a primary key (ARRkey), a secondary key (ARRsec) and has the data stored in ARRrec (I used 1 field for illustrative purposes). SORTptr is the main pointer- SCANptr is the pointer for comparison. Hope nobody minds me posting to the site. -Tony DeLia !********************************************************************** !* * !* MODULE: SORT EXAMPLE. * !* AUTHOR: TONY DELIA. * !* DATE: 10/02/1998. * !* SYSTEM: TD SQR UTILITY SERIES. * !* DESC: SORTING ARRAYS. * !* * !********************************************************************** ... ... do Define-Array do Load-Array do Sort-Array ... ... !********************************************************************** !* Define Array * !********************************************************************** begin-procedure Define-Array create-array name=ARRdat size=2000 field=ARRrec:char - field=ARRkey:char - field=ARRsec:char let #ARRmax = 2000 let #ARRctr = 0 end-procedure !********************************************************************** !* Load Array * !********************************************************************** begin-procedure Load-Array let #ARRctr = 0 while 1 = 1 read #mmc-i-no into $rec:200 if #end-file = 1 break end-if . . put $rec $skey $ssec into ARRdat (#ARRctr) ARRrec ARRkey ARRsec let #ARRctr = #ARRctr + 1 end-while end-procedure !********************************************************************** !* Sort Array * !********************************************************************** begin-procedure Sort-Array let #ARRmax = #ARRctr let #SORTptr = 0 while #SORTptr < #ARRmax let #SCANptr = #SORTptr + 1 get $SORTrec $SORTkey $SORTsec - from ARRdat (#SORTptr) ARRrec ARRkey ARRsec while #SCANptr < #ARRmax get $SCANrec $SCANkey $SCANsec - from ARRdat (#SCANptr) ARRrec ARRkey ARRsec if ($SORTkey > $SCANkey) or ($SORTkey = $SCANkey and $SORTsec > $SCANsec) put $SORTrec $SORTkey $SORTsec - into ARRdat (#SCANptr) ARRrec ARRkey ARRsec put $SCANrec $SCANkey $SCANsec - into ARRdat (#SORTptr) ARRrec ARRkey ARRsec let $SORTrec = $SCANrec let $SORTkey = $SCANkey let $SORTsec = $SCANsec end-if let #SCANptr = #SCANptr + 1 end-while let #SORTptr = #SORTptr + 1 end-while end-procedure !********************************************************************** Here's the Assembler Version (see comments for description of the above process). TITLE 'TDSRT - ASSEMBLER SORT TABLE // TONY DELIA' *********************************************************************** * * * MODULE: TDSRT. * * AUTHOR: TONY DELIA. * * DATE: 06/28/90. * * DESC: SORT TABLE OF ELEMENTS. * * * *********************************************************************** . . *********************************************************************** * SORT TABLE * *********************************************************************** DC F'0' RETURN ADDRESS SAVE AREA SORT EQU * ST 6,*-4 SAVE RETURN ADDRESS * LH 5,SCTR LOAD ENTRY COUNT CH 5,=H'1' ONLY 1 ENTRY ??? BE SORTX YES - EXIT SORT ROUTINE * BCTR 5,0 DECREMENT ENTRY COUNT BY 1 MH 5,=Y(SLEN) MULTIPLY BY ENTRY LENGTH LA 5,STABLE(5) POINT TO LAST ENTRY ST 5,SLAST SAVE LAST ENTRY ADDRESS * LA 4,STABLE INIT LO PTR - 1ST ENTRY LA 5,SLEN(,4) INIT HI PTR - 2ND ENTRY SORTIT EQU * CLC 0(SLEN,4),0(5) IS LO ENTRY > HI ENTRY ?? BNH BUMPHI NO - BUMP HI PTR XC 0(SLEN,4),0(5) YES - ISOLATE UNIQUE BITS XC 0(SLEN,5),0(4) REPLACE LO WITH HI ENTRY XC 0(SLEN,4),0(5) REPLACE HI WITH LO ENTRY BUMPHI EQU * LA 5,SLEN(,5) BUMP HI POINTER C 5,SLAST HI POINTER PAST LIMIT ?? BNH SORTIT NO - COMPARE AGAIN BUMPLO EQU * LA 4,SLEN(,4) YES - BUMP LO POINTER LA 5,SLEN(,4) RESET HI PTR = LO + 1 C 4,SLAST LO POINTER PAST LIMIT ?? BL SORTIT NO - KEEP SORTING SORTX EQU * L 6,SORT-4 RESTORE LINK REGISTER BR 6 BRANCH ON LINK REGISTER *********************************************************************** * * * BUBBLE SORT LOGIC: (LOW VALUES RISE LIKE BUBBLES TO TOP). * * * * INITIALLY, LO PTR (4) POINTS TO ENTRY 1 AND HI PTR (5) AT 2. * * LO PTR WILL REMAIN THE SAME UNTIL HI PTR REACHES THE END OF * * TABLE. EACH TIME HI PTR MOVES ALONG A COMPARE IS MADE WITH * * LO PTR AND ELEMENTS MAY BE SWAPPED. THIS FORCES THE LOWEST * * VALUE TO THE BEGINNING OF THE TABLE. THEN LO PTR IS BUMPED * * TO THE NEXT ENTRY AND HI PTR IS RESET TO LO PTR + 1 ENTRY. * * PROCESS IS THEN REPEATED FORCING THE NEXT LO VALUE TO 2ND * * TABLE POSITION. THIS WILL REPEAT ITSELF UNTIL LO PTR HAS * * REACHED THE LAST TABLE POSITION. NOTE THAT EACH TIME LO PTR * * IS BUMPED, THE PRECEDING ELEMENTS ARE IN SORTED ORDER AND * * ARE NO LONGER INCLUDED IN THE SORT PROCESS (TABLE SHRINKS). * * * *********************************************************************** EJECT *********************************************************************** * TABLE * *********************************************************************** SLEN EQU 2 TABLE ENTRY LENGTH SLAST DC F'0' LAST ENTRY ADDRESS SCTR DC H'0' NUMBER OF TABLE ENTRIES STABLE DC 100CL2' ' 2-DIGIT TABLE STABLEX DC X'FF' END-OF-TABLE MARKER *********************************************************************** END TDSRT -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Tue Oct 6 14:23:40 1998 Date: Tue, 6 Oct 1998 14:00:24 -0500 From: "Doris K. Brinson" Subject: Question on a dynamic where statement Is there a way using SQR to use a variable as the where statement in a select command. I am trying to write a label program that will allow the user to enter either an emplid, department or location. Depending on what the user entered, I want to select the appropriate data. I can easily set a variable to say let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES $whereclause But where I run the above type code, I get an SQL error. I know the easy way would be to write different selects for each of the allowed criteria, but I think there has to be a better way. Doris From owner-sqr-users@list.iex.net Tue Oct 6 14:28:47 1998 Date: Tue, 6 Oct 1998 15:08:21 -0400 From: Ngo Bao Chau Subject: Re: Question on a dynamic where statement ------ =_NextPart_000_01BDF13B.2B644D00 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit HI Doris You should do that way let $whereclause = 'WHERE DEPTID = ' || $entered_dept select (lots of fields) from ps_employees [$whereclause] Try this Merci Ngo Baochau baochaun@mail.transcontinental.ca tel: 335 - 1466/4943 http:\\www.transcontinental.ca -----Original Message----- From: Doris K. Brinson [SMTP:DBrinson@COMMHOSPINDY.ORG] Sent: Tuesday, October 06, 1998 3:00 PM To: Multiple recipients of list SQR-USERS Subject: Question on a dynamic where statement Is there a way using SQR to use a variable as the where statement in a select command. I am trying to write a label program that will allow the user to enter either an emplid, department or location. Depending on what the user entered, I want to select the appropriate data. I can easily set a variable to say let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES $whereclause But where I run the above type code, I get an SQL error. I know the easy way would be to write different selects for each of the allowed criteria, but I think there has to be a better way. Doris ------ =_NextPart_000_01BDF13B.2B644D00 Content-Type: application/ms-tnef Content-Transfer-Encoding: base64 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 PQABAAAABQAAAFJFOiAAAAAAAwANNP03AAAY5A== ------ =_NextPart_000_01BDF13B.2B644D00-- From owner-sqr-users@list.iex.net Tue Oct 6 14:36:04 1998 Date: Tue, 6 Oct 1998 15:21:41 -0400 From: Tony DeLia Subject: ATTENTION - Thankyou and please read Reply to Sorting Arrays I appreciate the e-mails I received in regard to my reply to Gopal. I'll continue posting useful and correct sample to the group! PLEASE read my response to Gopal on Sorting Arrays. I have a great deal of pride in my work and my profession. My Sort Routine works perfectly as you'll find out in my reply. P.S. I'm in the process of modifying SQR Tools so they may be used by all SQR Uses not just PeopleSoft. In other words, I'm removing any Included PeopleSoft SQC's and replacing them with generic routines. More to come... -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Tue Oct 6 14:46:04 1998 Date: Tue, 6 Oct 1998 12:17:00 -0400 From: Richard Mitchell Subject: Re[2]: Sample SQR Code - Sorting Arrays --UNS_gsauns2_2966391813 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Tony, In response to your post below: 1) We are all busy - that's why they pay us. If you want to flame a member, please post privately. We read this list because we need help or want to share ideas . 2) I for 1 am guilty of flaming innocent people as well. It is we who owe them the apology. It is they who feel attacked. I will give you the benefit of the doubt (as I hope others on this list have done for me) and let this pass as one *very* bad day. 3) As I have said to others on the list, I believe that the flow of 'utilities' is a great thing. I always intend to write them but never get around to it. For my 2 cents, please share what you will. I hope you have a better day, Rick ______________________________ Reply Separator _________________________________ Subject: Re: Sample SQR Code - Sorting Arrays Author: "tony delia" at internet Date: 10/6/98 1:04 PM GOPAL, Thankyou for your negative response. I am new to the group and thought I'd share something with people new to SQR. For an SQR Wizard such as yourself I'm sure there is nothing new or difficult about a simple sort algorithm - but this is not GOPAL's group! It is a resource primarily for new SQR programmers. AND I included the Assembler source because it is "COMMENTED" and has a description of the process - I KNOW IBM Mainframe Assembler (370) has absolutely nothing to do with SQRW!!! I'm busy and didn't want to re-type the description - sorry! AND... I fully understand there are times to use various sort methods (Quicksort, Array Sort, Temporary Tables). This illustrates the method when an array SORT is required - I'm sure everyone already knows the other methods! And as far as your fix goes ... YOU BROKE IT BY ADDING '<=' #ARRmax. I don't set #SORTptr to #ARRmax - EVER!!! When I'm finished comparing element #ARRmax - 1 to #SCANptr (#ARRmax) I'm DONE!!! With your "FIX" all you've done is set an extra gyration in the process! Did you read the comments in the Assembler Version??? That's why I put them there! Not to be overly sensitive but an apology is in order - My code always works correctly. Look closer next time. I've had to come in to work PLENTY of times at 3:00am to fix mistakes due to programmers who "think" they know what they're doing! I APOLOGIZE TO THE GROUP BUT I FEEL I'VE BEEN ATTACKED!!! I'll stop posting if this is the response I get! Have a great day. Tony DeLia Gopal Nandakumar wrote: > > Hello, > > The sort method you used is very commonly used method and nothing new or > difficult to code. The following changes have to be made in your code in > order to make to work correctly: > > >begin-procedure Sort-Array > > > >let #ARRmax = #ARRctr > >let #SORTptr = 0 > > > >while #SORTptr <= #ARRmax > > > > let #SCANptr = #SORTptr + 1 > > > > get $SORTrec $SORTkey $SORTsec - > > from ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > > > while #SCANptr <= #ARRmax > > The while statements should have a condition of "<=". > > I do not understand the rationale in using assembler code in SQRW. One > of the main selling point for SQR is its independence of Database and > Platform. Once we start using assembler code then we loose the > independence. If we want to use assembler code we may be better of > writing programs in assember completely instead of using SQRW. > > It is also very hard to say which SORT routine is best to use. Almo st > in every interface we write in SQRW, a sort routine is used. We use the > follwoing rule of thumb: > > 1. If the array size is 300 or less use Quick Sort routine > 2. If the array size is 301 - 5000 use Bubble Sort > 3. If the array size if over 5000 use Temporary Tables. > > Thanks. > > Gopal. > TCS INC. > (210) 491 0046 > > At 01:09 PM 10/2/98 -0400, you wrote: > >Hello... > > > >Since there seems to be some interest in my SQR Tools Site I thought I'd > >post a small sample. Here is some "snippets" of an Array Sorting > >Algorithm. > >I've also included my Assembler Version (Snippets) because I've included > >comments and a brief narrative of the sorting process within the > >program. > >Also, maybe there are some old timers out there learning SQR! > >The SQR Example sorts an array with a primary key (ARRkey), a secondary > >key (ARRsec) and has the data stored in ARRrec (I used 1 field for > >illustrative purposes). SORTptr is the main pointer- SCANptr is the > >pointer for comparison. Hope nobody minds me posting to the site. > > > > > > -Tony DeLia > > > > > > > >!********************************************************************** > >!* * > >!* MODULE: SORT EXAMPLE. * > >!* AUTHOR: TONY DELIA. * > >!* DATE: 10/02/1998. * > >!* SYSTEM: TD SQR UTILITY SERIES. * > >!* DESC: SORTING ARRAYS. * > >!* * > >!********************************************************************** > > > >.. > >.. > >do Define-Array > >do Load-Array > >do Sort-Array > >.. > >.. > > > >!********************************************************************** > >!* Define Array * > >!********************************************************************** > > > >begin-procedure Define-Array > > > >create-array name=ARRdat size=2000 field=ARRrec:char - > > field=ARRkey:char - > > field=ARRsec:char > > > >let #ARRmax = 2000 > >let #ARRctr = 0 > > > >end-procedure > > > >!********************************************************************** > >!* Load Array * > >!********************************************************************** > > > >begin-procedure Load-Array > > > >let #ARRctr = 0 > > > >while 1 = 1 > > > > read #mmc-i-no into $rec:200 > > > > if #end-file = 1 > > break > > end-if > > . > > . > > put $rec $skey $ssec into ARRdat (#ARRctr) ARRrec ARRkey ARRsec > > > > let #ARRctr = #ARRctr + 1 > > > >end-while > > > >end-procedure > > > >!********************************************************************** > >!* Sort Array * > >!********************************************************************** > > > >begin-procedure Sort-Array > > > >let #ARRmax = #ARRctr > >let #SORTptr = 0 > > > >while #SORTptr < #ARRmax > > > > let #SCANptr = #SORTptr + 1 > > > > get $SORTrec $SORTkey $SORTsec - > > from ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > > > while #SCANptr < #ARRmax > > > > get $SCANrec $SCANkey $SCANsec - > > from ARRdat (#SCANptr) ARRrec ARRkey ARRsec > > > > if ($SORTkey > $SCANkey) > > or ($SORTkey = $SCANkey > > and $SORTsec > $SCANsec) > > > > put $SORTrec $SORTkey $SORTsec - > > into ARRdat (#SCANptr) ARRrec ARRkey ARRsec > > > > put $SCANrec $SCANkey $SCANsec - > > into ARRdat (#SORTptr) ARRrec ARRkey ARRsec > > > > let $SORTrec = $SCANrec > > let $SORTkey = $SCANkey > > let $SORTsec = $SCANsec > > > > end-if > > > > let #SCANptr = #SCANptr + 1 > > > > end-while > > > > let #SORTptr = #SORTptr + 1 > > > >end-while > > > >end-procedure > > > >!********************************************************************** > > > >Here's the Assembler Version (see comments for description of the > >above process). > > > > TITLE 'TDSRT - ASSEMBLER SORT TABLE // TONY DELIA' > >*********************************************************************** > >* * > >* MODULE: TDSRT. * > >* AUTHOR: TONY DELIA. * > >* DATE: 06/28/90. * > >* DESC: SORT TABLE OF ELEMENTS. * > >* * > >*********************************************************************** > > . > > . > >*********************************************************************** > >* SORT TABLE * > >*********************************************************************** > > DC F'0' RETURN ADDRESS SAVE AREA > >SORT EQU * > > ST 6,*-4 SAVE RETURN ADDRESS > >* > > LH 5,SCTR LOAD ENTRY COUNT > > CH 5,=H'1' ONLY 1 ENTRY ??? > > BE SORTX YES - EXIT SORT ROUTINE > >* > > BCTR 5,0 DECREMENT ENTRY COUNT BY 1 > > MH 5,=Y(SLEN) MULTIPLY BY ENTRY LENGTH > > LA 5,STABLE(5) POINT TO LAST ENTRY > > ST 5,SLAST SAVE LAST ENTRY ADDRESS > >* > > LA 4,STABLE INIT LO PTR - 1ST ENTRY > > LA 5,SLEN(,4) INIT HI PTR - 2ND ENTRY > >SORTIT EQU * > > CLC 0(SLEN,4),0(5) IS LO ENTRY > HI ENTRY ?? > > BNH BUMPHI NO - BUMP HI PTR > > XC 0(SLEN,4),0(5) YES - ISOLATE UNIQUE BITS > > XC 0(SLEN,5),0(4) REPLACE LO WITH HI ENTRY > > XC 0(SLEN,4),0(5) REPLACE HI WITH LO ENTRY > >BUMPHI EQU * > > LA 5,SLEN(,5) BUMP HI POINTER > > C 5,SLAST HI POINTER PAST LIMIT ?? > > BNH SORTIT NO - COMPARE AGAIN > >BUMPLO EQU * > > LA 4,SLEN(,4) YES - BUMP LO POINTER > > LA 5,SLEN(,4) RESET HI PTR = LO + 1 > > C 4,SLAST LO POINTER PAST LIMIT ?? > > BL SORTIT NO - KEEP SORTING > >SORTX EQU * > > L 6,SORT-4 RESTORE LINK REGISTER > > BR 6 BRANCH ON LINK REGISTER > >*********************************************************************** > >* * > >* BUBBLE SORT LOGIC: (LOW VALUES RISE LIKE BUBBLES TO TOP). * > >* * > >* INITIALLY, LO PTR (4) POINTS TO ENTRY 1 AND HI PTR (5) AT 2. * > >* LO PTR WILL REMAIN THE SAME UNTIL HI PTR REACHES THE END OF * > >* TABLE. EACH TIME HI PTR MOVES ALONG A COMPARE IS MADE WITH * > >* LO PTR AND ELEMENTS MAY BE SWAPPED. THIS FORCES THE LOWEST * > >* VALUE TO THE BEGINNING OF THE TABLE. THEN LO PTR IS BUMPED * > >* TO THE NEXT ENTRY AND HI PTR IS RESET TO LO PTR + 1 ENTRY. * > >* PROCESS IS THEN REPEATED FORCING THE NEXT LO VALUE TO 2ND * > >* TABLE POSITION. THIS WILL REPEAT ITSELF UNTIL LO PTR HAS * > >* REACHED THE LAST TABLE POSITION. NOTE THAT EACH TIME LO PTR * > >* IS BUMPED, THE PRECEDING ELEMENTS ARE IN SORTED ORDER AND * > >* ARE NO LONGER INCLUDED IN THE SORT PROCESS (TABLE SHRINKS). * > >* * > >*********************************************************************** > > EJECT > >*********************************************************************** > >* TABLE * > >*********************************************************************** > >SLEN EQU 2 TABLE ENTRY LENGTH > >SLAST DC F'0' LAST ENTRY ADDRESS > >SCTR DC H'0' NUMBER OF TABLE ENTRIES > >STABLE DC 100CL2' ' 2-DIGIT TABLE > >STABLEX DC X'FF' END-OF-TABLE MARKER > >*********************************************************************** > > END TDSRT > > > > > > > >-- > >Tony DeLia > >AnswerThink Consulting Group > >PeopleSoft Solutions Practice - Delphi Partners > >tdelia@erols.com > > -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com --UNS_gsauns2_2966391813-- From owner-sqr-users@list.iex.net Tue Oct 6 14:46:58 1998 Date: Tue, 6 Oct 1998 14:27:06 CDT From: "C. Willis III" Subject: Re: Question on a dynamic where statement Doris, You have it almost right. How about : let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES [$whereclause] Since you haven't included the environment/OS/version this is running on, nor the database/version, the application/version on the error, I can't give you any more advice except this: on some platforms you will need to also create dynamic columns in the select when you use either dynamic tables and where clauses - usually mainframes with db2 are the most spastic concerning this. begin-select [$col1] &column_alias1=number [$col2] &column_alias2=date [$col3] &column_alias3=number [$col4] &column_alias4=number [$col5] &column_alias5=number [$col6] &column_alias6=number [$col7] &column_alias7=number [$col8] &column_alias8=number FROM [$table_name_a] A, [$table_name_b] B WHERE A.column1 = B.column1 AND A.column2 IN [$crnt_fcnbrs] [$rest_of_the_where_clause] enjoy! clark ----Original Message Follows---- Is there a way using SQR to use a variable as the where statement in a select command. I am trying to write a label program that will allow the user to enter either an emplid, department or location. Depending on what the user entered, I want to select the appropriate data. I can easily set a variable to say let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES $whereclause But where I run the above type code, I get an SQL error. I know the easy way would be to write different selects for each of the allowed criteria, but I think there has to be a better way. Doris ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Tue Oct 6 14:47:33 1998 Date: Tue, 6 Oct 1998 15:29:18 -0400 From: Charu Srinivas Subject: Re: Question on a dynamic where statement Doris- You can use a dynamic where clause. however, when you use it in the select statement you have to refer to the variable inside curly brackets as shown below SELECT (lots of fields) FROM PS_EMPLOYEES {$whereclause} DBrinson@COMMHOSPINDY.ORG on 10/06/98 03:00:24 PM Please respond to SQR-USERS@USA.NET To: SQR-USERS@list.iex.net cc: (bcc: C. Srinivas/dsisys/US) Subject: Question on a dynamic where statement Is there a way using SQR to use a variable as the where statement in a select command. I am trying to write a label program that will allow the user to enter either an emplid, department or location. Depending on what the user entered, I want to select the appropriate data. I can easily set a variable to say let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES $whereclause But where I run the above type code, I get an SQL error. I know the easy way would be to write different selects for each of the allowed criteria, but I think there has to be a better way. Doris From owner-sqr-users@list.iex.net Tue Oct 6 14:48:10 1998 Date: Tue, 6 Oct 1998 15:25:06 -0400 From: Ranade Sameer Subject: Re: Question on a dynamic where statement Hi Doris, Try with [ ] arount i.e : let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES [$whereclause] Hope it helps, -Sameer -----Original Message----- To: Multiple recipients of list SQR-USERS Subject: Question on a dynamic where statement Is there a way using SQR to use a variable as the where statement in a select command. I am trying to write a label program that will allow the user to enter either an emplid, department or location. Depending on what the user entered, I want to select the appropriate data. I can easily set a variable to say let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES $whereclause But where I run the above type code, I get an SQL error. I know the easy way would be to write different selects for each of the allowed criteria, but I think there has to be a better way. Doris From owner-sqr-users@list.iex.net Tue Oct 6 15:04:02 1998 Date: Tue, 6 Oct 1998 15:37:44 -0400 From: Tony DeLia Subject: Re: Question on a dynamic where statement Doris, You'll probably be getting a flood of responses with this solution: A - If variable $entered_dept does not have embedded quotes... let $q = chr(39) let $whereclause = 'WHERE DEPTID = ' || $q || $entered_dept || $q this yields: WHERE DEPTID = '10000' (Assuming Deptid '10000' entered) You have to account for the quotes ($q) in your SQL statement. Then... B - Tto utilize your dynamic statement... select (lots of fields) from ps_employees [$whereclause] Have fun, Tony DeLia Doris K. Brinson wrote: > > Is there a way using SQR to use a variable as the where statement in a > select command. I am trying to write a label program that will allow the > user to enter either an emplid, department or location. Depending on what > the user entered, I want to select the appropriate data. I can easily set a > variable to say > let $whereclause = 'WHERE DEPTID = $entered_dept' > > SELECT (lots of fields) > FROM PS_EMPLOYEES > $whereclause > > But where I run the above type code, I get an SQL error. I know the easy > way would be to write different selects for each of the allowed criteria, > but I think there has to be a better way. > > Doris -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Tue Oct 6 15:11:29 1998 Date: Tue, 6 Oct 1998 15:31:39 -0400 From: Charu Srinivas Subject: Question on a dynamic where statement Doris - I correct myself. Instead of curly brackets you have to use Square brackets [$wherelcause] Charu From owner-sqr-users@list.iex.net Tue Oct 6 15:23:20 1998 Date: Tue, 6 Oct 1998 12:56:42 PDT From: Parijat Sahai Subject: Opening files by network address Hi Gurus, Is it possible to open a file in SQR by its network address and not specifying the drive? What I mean by this is, can I use the following: OPEN '//servername/dirname/filename.dat' AS filenum FOR-READING ... instead of: OPEN 'f:/dirname/filename.dat' AS filenum FOR-READING ... Is the same possible for moving a file from one dir to another? Parijat. ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Tue Oct 6 15:46:29 1998 Date: Tue, 6 Oct 1998 15:17:35 -0500 From: Krishnan Sarangarajan Subject: Re: Opening files by network address > Is it possible to open a file in SQR by its network address and not > specifying the drive? What I mean by this is, can I use the following: > OPEN '//servername/dirname/filename.dat' AS filenum FOR-READING Dear Mr. Sahai, Yes, it is possible to do the above. In fact, if this drive setting is going to remain constant for other output files, you may also place it in a variable and then append the path to the file name before opening the file. For example : let $path = '//servername/dirname/' let $file = $path || 'filename.dat' open $file as filenum for-reading ...... > Is the same possible for moving a file from one dir to another? As far as moving a file from one dir to another, I was not able to use the rename the command unless the source and the destination directories were the same. I am sure that there is a way but one could always use a batch program to move the file once the SQR completes running. Hope it helps. Take care and have a good day. Krishnan Sarangarajan ksaranga@ruan.com Ruan Transportation 3200 Ruan Center (DSM 6th Floor) Des Moines, IA 50309 [O] (515) 245-5655 [F] (515) 247-2065 From owner-sqr-users@list.iex.net Tue Oct 6 16:06:26 1998 Date: Tue, 6 Oct 1998 16:39:02 -0400 From: Ranade Sameer Subject: Re: Opening files by network address Hi Parijat, It's possible to access files on network as any other files, provided you have (network) rights to do those tasks. Open will work ok if you have 'write' permissinons on directory you are referring to. e.g : open '\\\sys\users\shared\\new.tst' as 1 for-writing works fine. >>> Is the same possible for moving a file from one dir to another? I didn't get this question. But you can do all file operations that you can do with local files. Hope it helps, Sameer Hi Gurus, Is it possible to open a file in SQR by its network address and not specifying the drive? What I mean by this is, can I use the following: OPEN '//servername/dirname/filename.dat' AS filenum FOR-READING ... instead of: OPEN 'f:/dirname/filename.dat' AS filenum FOR-READING ... Is the same possible for moving a file from one dir to another? Parijat. ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Tue Oct 6 16:30:22 1998 Date: Tue, 6 Oct 1998 14:38:14 -0500 From: Don Mellen Subject: Re: Question on a dynamic where statement Clark, Actually you will need to add the value of $entered_dept to the where string, not the string '$entered_dept'. Like ... let $whereclause = 'WHERE DEPTID = ' || $entered_dept HTH, Don Mellen On Tue, 6 Oct 1998, C. Willis III wrote: > let $whereclause = 'WHERE DEPTID = $entered_dept' > > SELECT (lots of fields) > FROM PS_EMPLOYEES > [$whereclause] ----------------------------------------------------------------------- Donald Mellen | Ray Ontko & Co. - Richmond, IN - http://www.ontko.com/ donm@ontko.com | "In the beginning, there was nothing, which exploded" From owner-sqr-users@list.iex.net Tue Oct 6 16:54:56 1998 Date: Tue, 6 Oct 1998 14:33:33 -0700 From: Michael Lee Subject: Warning while running SQR in an DB2/MVS environment Hello all, Can anyone help me out with the following warning: LSCX109 **** NOTE **** Generated in STRTOD called from line 2416 of SQ287(SQ285) , offset 001758 String "EMP" does not contain a valid floating-point number. Thanks in advance, Michael K. Lee mlee@agconsult.com Consultant AG Consulting, an ADP Company http://www.agconsult.com From owner-sqr-users@list.iex.net Tue Oct 6 17:43:39 1998 Date: Tue, 6 Oct 1998 18:21:56 -0400 From: Vicki Lo Subject: Re: Sending E-mail from SQR... You can use SQR to send e-mail, but you have to know the mail sever address and send the mails there. Also, have to declare the output(text of the mail) to be 80000 character per line so the text wouldn't be wrapping. eg. begin-setup declare-layout default paper-size=(80000,10) right-margin=0 left-margin=0 bottom-margin=0 formfeed=no orientation=landscape end-declare end-setup String the text into a variable field and print the variable. Concat the output file with mail sever address. eg: let $host_string = '$HOME/famil2.pl ' || $hr_email || ' ' || $email_subject || '< ' || $out_file let $directory = getenv('HOME') let $out_file = $directory || '/out_mail/new_hire.lis' new-report $out_file call system using $host_string #mail_status Have fun! Vicki > -----Original Message----- > From: Kulshrestha, Alok [SMTP:ALOKKULSHRESTHA@IMF.ORG] > Sent: Tuesday, October 06, 1998 10:40 AM > To: Multiple recipients of list SQR-USERS > Subject: Sending E-mail from SQR... > > SQR Version : 3.0.18.0 > Database : Oracle 7.3 > Platform : Windows95 > > I have a requirement where I need to send e-mail notification, once my > program has finished. I use Outlook as my E-mail application. Is there > anyway to send e-mail from SQR when running on windows 95. > > Any help will be appreciated. > > Thanks. > -alok Kulshrestha From owner-sqr-users@list.iex.net Tue Oct 6 19:30:30 1998 Date: Tue, 6 Oct 1998 19:12:08 -0500 From: Ray Ontko Subject: Re: Warning while running SQR in an DB2/MVS environment Michael, Somewhere in your program, a SQR is attempting to convert a string (whose value is 'EMP') into a numeric variable (floating point DOUBLE PRECISION). This could be moving an &variable to a #variable, or moving a $variable to a #variable, or in reading an &variable=number from the database or something like that. As a general rule, I would expect SQR to give a better message. Does line 2416 mean anything in any of your files? Ray > Hello all, > Can anyone help me out with the following warning: > > LSCX109 **** NOTE **** > Generated in STRTOD called from line 2416 of SQ287(SQ285) , > offset 001758 > String "EMP" does not contain a valid floating-point number. > > Thanks in advance, > > Michael K. Lee > mlee@agconsult.com > Consultant > AG Consulting, an ADP Company > http://www.agconsult.com > ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Tue Oct 6 20:19:52 1998 Date: Tue, 6 Oct 1998 20:01:00 -0500 From: Ray Ontko Subject: Re: Printing Image logo on HP printer Franck, I don't have any direct personal experience with tools to convert gif or bmp images to HPGL, but I do have a couple of thoughts that may be helpful. 1) I have heard that a program called HiJaak Pro will perform a number of conversions, including one that will produce HPGL files in the correct format. As I said, I don't have any experience with the program. 2) I have hacked programs before that convert an HP PCL bitmap into a HPGL raster scan. The problem with HPGL is that it's a pen plotter oriented protocol, not a bitmap protocol. When I've had to do this, I turn each line of the bitmap into a string of 0's and 1's, and then produce HPGL that lowers the pen for a transition from 0 to 1, and raises the pen for a trainsition from 1 to 0. Sorry, but I did the work on a client project to convert a single logo and no longer have the source code. Also, not that the original bitmap must be black and white; I can't put the pen halfway down, or change it's color. Finally, SQR looks at the first few HPGL commands to see how big the image is so that it knows how to scale it to fill the box that you specify in the print-image command. This means that you should probably decide how big you want the logo to be when you print it, and then set the number of scan lines in the HPGL to match the printer resolution. 3) I have seen some programs which produce HPGL output from a bitmap, but they usually do this by producing an outline of the shaded areas of the image. If your logo is mostly comprised of thin lines, this may not work. Hope this helps. Ray > does any one have experience of printing logo on HP printer using SQR on > unix server ? > > I know it is possible with HPGL format but my images are not in this > format. It is GIF or BMP images. > > Do you know a work-around ? > or do you a tool that convert GIF or BMP in HPGL. > > thanks for your help > > franck, Content-Description: Card for Franck Masson [Attachment, skipping...] ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Wed Oct 7 04:05:44 1998 Date: Wed, 7 Oct 1998 18:53:32 +1000 From: Adrian Clayfield Subject: Problem with Union & Union Vs Array This is a multi-part message in MIME format. ------=_NextPart_000_0039_01BDF223.C80ACC90 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Im using: Version: SQRW/3.0.13.3/PC/Windows-NT 3.51/Sybase 10.0.3/May 28 1996 Hello everyone,=20 I've spent most of the day trying to get a Union working in SQR.. It = retrieves 4 different sets of posted total amts and encumbered amts from = the Ledger table. What works in an sql editor does not compile in SQR: (The 4 set of vals are identified by different account ranges), I need the 4 opening bals followed by journal lines for all the Accounts = within each Project within each department for the period, followed by closing balances. Ive been trying to use a Union to get the four totals, but get the = following problems (it works in wisql so i presume its the reference variables) When i try: begin-SELECT DISTINCT ON-ERROR=3DSQL-Error A.PROJECT_ID $P1 SUM(A.POSTED_TOTAL_AMT) &A.POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &A.ENCUMBERED_AMOUNT Do Print-Totals =20 =20 FROM PS_LEDGER A WHERE A.BUSINESS_UNIT =3D 'UNSYD' AND A.DEPTID =3D 'F001'=20 AND A.ACCOUNTING_PERIOD =3D 9 =20 AND (A.ACCOUNT BETWEEN '1800' AND '1899') AND A.FISCAL_YEAR =3D 1998 AND A.STATISTICS_CODE =3D ' ' UNION SELECT DISTINCT B.PROJECT_ID $P2 =20 SUM(B.POSTED_TOTAL_AMT) &B.POSTED_TOTAL_AMT2 SUM(B.ENCUMBERED_AMOUNT) &B.ENCUMBERED_AMOUNT2 Do Print-Totals=20 FROM PS_LEDGER B WHERE B.BUSINESS_UNIT =3D 'UNSYD' AND B.DEPTID =3D 'F001'=20 AND B.ACCOUNTING_PERIOD =3D 9 =20 AND (B.ACCOUNT BETWEEN '2000' AND '2199') AND B.FISCAL_YEAR =3D 1998 AND B.STATISTICS_CODE =3D ' ' UNION etc....... ORDER BY 1 end-SELECT I GET: (SQR 5528) Sybase dbdesc: ct_results error in cursor 8: (107) The column prefix 'A' does not match with a table name or alias = name used in the query. Either the table is not specified in the FROM = clause or it has a correlation name which must be used instead. (SQR 1303) Error in SQL (perhaps missing &name after expression): If I try with: begin-SELECT DISTINCT ON-ERROR=3DSQL-Error A.PROJECT_ID $P1 SUM(A.POSTED_TOTAL_AMT) #A1 SUM(A.ENCUMBERED_AMOUNT) #A2 ! Do Print-Totals =20 =20 FROM PS_LEDGER A WHERE A.BUSINESS_UNIT =3D 'UNSYD' AND A.DEPTID =3D 'F001'=20 AND A.ACCOUNTING_PERIOD =3D 9 =20 AND (A.ACCOUNT BETWEEN '1800' AND '1899') AND A.FISCAL_YEAR =3D 1998 AND A.STATISTICS_CODE =3D ' ' UNION SELECT DISTINCT B.PROJECT_ID $P2 =20 SUM(B.POSTED_TOTAL_AMT) #A3 SUM(B.ENCUMBERED_AMOUNT) #A4 !Do Print-Totals=20 FROM PS_LEDGER B WHERE B.BUSINESS_UNIT =3D 'UNSYD' AND B.DEPTID =3D 'F001'=20 AND B.ACCOUNTING_PERIOD =3D 9 =20 AND (B.ACCOUNT BETWEEN '2000' AND '2199') AND B.FISCAL_YEAR =3D 1998 AND B.STATISTICS_CODE =3D ' ' ORDER BY 1 end-SELECT I get: Error on line 259: (SQR 3728) SQL expression not ended, perhaps missing &Name. FROM PS_LEDGER A ---------------------------------------- Also, Im wondering if it would be more efficient to create an array as = my report is run against 3000 DEPARTMENTS and this method I would need four Unions = and then retrieve Journal Lines for each projectid.... With an array: Would I have to Select all dept/project id and first = group of totals, repeat for each range and then sort it to be able to print headings, totals and get line details for = each project......(I've never used one...) Any help much appreciated! Thanks in advance Adrian Clayfield =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Integrated Business Technologies Pty Ltd Level 11 55 Hunter St Sydney 2000 Mobile: 0413 115580 Fax: 61 2 9223 4384 Email: adclay@ibt.com.au =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ------=_NextPart_000_0039_01BDF223.C80ACC90 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Im using:
Version: SQRW/3.0.13.3/PC/Windows-NT = 3.51/Sybase=20 10.0.3/May 28 1996
 
Hello everyone,
I've spent most of the day trying to get a Union = working in=20 SQR.. It retrieves 4 different sets of posted = total amts and=20 encumbered amts from the Ledger table. What works in an sql editor does = not=20 compile in SQR:
(The 4 set of vals are identified by = different=20 account ranges),
I need the 4 opening bals followed by journal lines = for all=20 the Accounts within each Project within each department
for the = period,=20 followed by closing balances.
Ive been trying to use a Union to get = the four=20 totals, but get the following problems (it works
in wisql so i = presume its=20 the reference variables)
When i try:
 

begin-SELECT DISTINCT=20 ON-ERROR=3DSQL-Error
 
A.PROJECT_ID        &nbs= p;    =20 $P1
SUM(A.POSTED_TOTAL_AMT)  =20 &A.POSTED_TOTAL_AMT
SUM(A.ENCUMBERED_AMOUNT) =20 &A.ENCUMBERED_AMOUNT
 
  Do=20 Print-Totals
 
 
FROM PS_LEDGER A
WHERE = A.BUSINESS_UNIT =3D=20 'UNSYD'
  AND A.DEPTID        = =3D=20 'F001'
  AND A.ACCOUNTING_PERIOD =3D 9 
  AND = (A.ACCOUNT=20 BETWEEN '1800' AND '1899')
  AND A.FISCAL_YEAR   =3D=20 1998
  AND A.STATISTICS_CODE =3D ' '
 
UNION
 
SELECT=20 DISTINCT
B.PROJECT_ID        &= nbsp;    =20 $P2   
SUM(B.POSTED_TOTAL_AMT)  =20 &B.POSTED_TOTAL_AMT2
SUM(B.ENCUMBERED_AMOUNT) =20 &B.ENCUMBERED_AMOUNT2
 
 Do Print-Totals
 
FROM PS_LEDGER B
 
  WHERE B.BUSINESS_UNIT =3D = 'UNSYD'
 =20 AND B.DEPTID        =3D 'F001' =
  AND=20 B.ACCOUNTING_PERIOD =3D 9 
  AND (B.ACCOUNT BETWEEN '2000' = AND=20 '2199')
  AND B.FISCAL_YEAR   =3D 1998
  AND=20 B.STATISTICS_CODE =3D ' '
 
UNION   = etc.......
 
ORDER BY 1
 
end-SELECT
 
I GET:
 
(SQR 5528) Sybase dbdesc: ct_results = error in=20 cursor 8:
   (107) The column prefix 'A' does not match = with a=20 table name or alias name used in the query. Either the table is not = specified in=20 the FROM clause or it has a correlation name which must be used=20 instead.
 
(SQR 1303) Error in SQL (perhaps = missing=20 &name after expression):
 
If I try with:
 
begin-SELECT DISTINCT=20 ON-ERROR=3DSQL-Error
 
A.PROJECT_ID        &nbs= p;    =20 $P1
SUM(A.POSTED_TOTAL_AMT)   = #A1
SUM(A.ENCUMBERED_AMOUNT) =20 #A2
 

!  Do=20 Print-Totals
 
 
FROM PS_LEDGER A
WHERE = A.BUSINESS_UNIT =3D=20 'UNSYD'
  AND A.DEPTID        = =3D=20 'F001'
  AND A.ACCOUNTING_PERIOD =3D 9 
  AND = (A.ACCOUNT=20 BETWEEN '1800' AND '1899')
  AND A.FISCAL_YEAR   =3D=20 1998
  AND A.STATISTICS_CODE =3D ' '
 
UNION
 
SELECT=20 DISTINCT
B.PROJECT_ID        &= nbsp;    =20 $P2   
SUM(B.POSTED_TOTAL_AMT)  =20 #A3
SUM(B.ENCUMBERED_AMOUNT)  #A4
 
  !Do Print-Totals =
 
FROM PS_LEDGER B
 
  WHERE B.BUSINESS_UNIT =3D = 'UNSYD'
 =20 AND B.DEPTID        =3D 'F001' =
  AND=20 B.ACCOUNTING_PERIOD =3D 9 
  AND (B.ACCOUNT BETWEEN '2000' = AND=20 '2199')
  AND B.FISCAL_YEAR   =3D 1998
  AND=20 B.STATISTICS_CODE =3D ' '
 
ORDER BY 1
 
end-SELECT
 
I get:
 
Error on line 259:
   = (SQR 3728)=20 SQL expression not ended, perhaps missing &Name.
FROM PS_LEDGER=20 A
 
----------------------------------------
 
Also, Im wondering if it would be = more efficient=20 to create an array as my report
is run against 3000 DEPARTMENTS and = this=20 method I would need four Unions and then retrieve Journal Lines
for = each=20 projectid....
With an array: Would I have to Select all dept/project = id and=20 first group of totals, repeat for each range and then
sort it to be = able to=20 print headings, totals and get line details for each project......(I've = never=20 used one...)
 
Any help much = appreciated!
Thanks in advance
 
Adrian Clayfield
 
 
 
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
Integrated=20 Business Technologies Pty Ltd
Level 11   55 Hunter St = Sydney =20 2000
Mobile: 0413 115580    Fax: 61 2 9223=20 4384
Email:  adclay@ibt.com.au
=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 
 
------=_NextPart_000_0039_01BDF223.C80ACC90-- From owner-sqr-users@list.iex.net Wed Oct 7 05:56:43 1998 Date: Tue, 6 Oct 1998 15:42:40 -0400 From: Steve Schelske Subject: Re: Question on a dynamic where statement ------ =_NextPart_000_01BDF1BC.AE05C000 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit If DEPTID is character data you need to make sure that the end result is WHERE DEPTID = 'entered_dept' ....so you'll need to make sure that $entered_dept gets enclosed in single quotes. I think let $whereclause = 'WHERE DEPTID= ' || ''''$entered_dept'''' will work. (That's 4 single quotes, the number of quotes may be wrong, but it's probably close!) A DISPLAY $whereclause after the let statement should be helpful to make sure your syntax is valid. On Tuesday, October 06, 1998 3:08 PM, Ngo Bao Chau wrote: > HI Doris > > You should do that way > > let $whereclause = 'WHERE DEPTID = ' || $entered_dept > > select (lots of fields) > from ps_employees > [$whereclause] > > Try this > > Merci > > Ngo Baochau > baochaun@mail.transcontinental.ca > tel: 335 - 1466/4943 > http:\\www.transcontinental.ca > > -----Original Message----- > From: Doris K. Brinson > Sent: Tuesday, October 06, 1998 3:00 PM > To: Multiple recipients of list SQR-USERS > Subject: Question on a dynamic where statement > > Is there a way using SQR to use a variable as the where statement in a > select command. I am trying to write a label program that will allow the > user to enter either an emplid, department or location. Depending on what > the user entered, I want to select the appropriate data. I can easily set a > variable to say > let $whereclause = 'WHERE DEPTID = $entered_dept' > > SELECT (lots of fields) > FROM PS_EMPLOYEES > $whereclause > > But where I run the above type code, I get an SQL error. I know the easy > way would be to write different selects for each of the allowed criteria, > but I think there has to be a better way. > > Doris ------ =_NextPart_000_01BDF1BC.AE05C000 Content-Type: application/ms-tnef Content-Transfer-Encoding: base64 eJ8+Ih8KAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQ2ABAACAAAAAgACAAEEkAYAmAEAAAEAAAARAAAAAwAAMAIAAAAL AA8OAAAAAAIB/w8BAAAAQQAAAAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAAFNRUi1VU0VSU0BVU0Eu TkVUAFNNVFAAU1FSLVVTRVJTQFVTQS5ORVQAAAAAHgACMAEAAAAFAAAAU01UUAAAAAAeAAMwAQAA ABIAAABTUVItVVNFUlNAVVNBLk5FVAAAAAMAFQwBAAAAAwD+DwYAAAAeAAEwAQAAABQAAAAnU1FS LVVTRVJTQFVTQS5ORVQnAAIBCzABAAAAFwAAAFNNVFA6U1FSLVVTRVJTQFVTQS5ORVQAAAMAADkA AAAACwBAOgEAAAADAHE6AAAAAB4A9l8BAAAAEgAAAFNRUi1VU0VSU0BVU0EuTkVUAAAAAgH3XwEA AABBAAAAAAAAAIErH6S+oxAZnW4A3QEPVAIAAAAAU1FSLVVTRVJTQFVTQS5ORVQAU01UUABTUVIt VVNFUlNAVVNBLk5FVAAAAAADAP1fAQAAAAMA/18AAAAAAgH2DwEAAAAEAAAAAAAAApBEAQSAAQAq AAAAUkU6IFF1ZXN0aW9uIG9uIGEgZHluYW1pYyB3aGVyZSBzdGF0ZW1lbnQA/A4BBYADAA4AAADO BwoABgAPACoAKAACAEgBASCAAwAOAAAAzgcKAAYADwAkADoAAgBUAQEJgAEAIQAAADczMzZCNjQw MDg1REQyMTE5MEFCMDBBMEM5MzJENjA0AOQGAQOQBgDYCQAAIwAAAAsAAgABAAAACwAjAAAAAAAD ACYAAAAAAAsAKQABAAAAAwAuAAAAAAACATEAAQAAANkAAABQQ0RGRUIwOQABAAIASgAAAAAAAAA4 obsQBeUQGqG7CAArKlbCAABNU1BTVC5ETEwAAAAAAE5JVEH5v7gBAKoAN9luAAAAQzpcV0lOTlRc bWFpbGJveC5wc3QAGAAAAAAAAAByT22BPdDQEY9DAKDJMtYEooAAAAAAAAAYAAAAAAAAAHJPbYE9 0NARj0MAoMky1gTCgAAAEAAAAHM2tkAIXdIRkKsAoMky1gQqAAAAUkU6IFF1ZXN0aW9uIG9uIGEg ZHluYW1pYyB3aGVyZSBzdGF0ZW1lbnQAAAAAAwA2AAAAAABAADkAUJ+DemHxvQEeAHAAAQAAACoA AABSRTogUXVlc3Rpb24gb24gYSBkeW5hbWljIHdoZXJlIHN0YXRlbWVudAAAAAIBcQABAAAAGwAA AAG98Vyu/PhnWhhdLRHSttgAYLDD4b4AAP//YAAeAB4MAQAAAAMAAABNUwAAHgAfDAEAAAAXAAAA QUFBQ09SUC9IT0IxUzAxL1A3MTk5OQAAAwAGENEixgsDAAcQ2QQAAB4ACBABAAAAZQAAAElGREVQ VElESVNDSEFSQUNURVJEQVRBWU9VTkVFRFRPTUFLRVNVUkVUSEFUVEhFRU5EUkVTVUxUSVNXSEVS RURFUFRJRD1FTlRFUkVEREVQVFNPWU9VTExORUVEVE9NQUtFU1UAAAAAAgEJEAEAAAB5BQAAdQUA AHwKAABMWkZ10pkl6wMACgByY3BnMTI1FjIA+Atgbg4QMDMznQH3IAKkA+MCAGNoCsDgc2V0MCAH EwKDAFDjAvIQ2VRhaANxAoMOUKEQdnBycTIRdn0KgNkIyCA7CW8OMDUWIxdBZwm7AoAKgXVjAFAL A2MDEhILxCBJZiBERaBQVElEIAQAIBDyRQDQdASQIGRhAZAgEnkIYCBuCeBkIHSEbyAAwGtlIHMI cP0dEHQRAAVAHYAdEAnwHJD7CXAdMGwFQAQACqIKhAqAIFdIRVJFGoY9IG4nCfAbkQmAXwEABTAn NR7qLiIwcxzAHCEnbJcDIBxvHXQkIKogZxFA+wQgCfBjCQARMCMwC4AdIIkLgGdsHRBxdW8bkDRz Lh7qSR1xC4BrIDsmoCRRdx3gCXAlwGF1jxEwIGIfqiBxIHx8IIC3KvEkeyryIAPwItF3BbCgay4g KFQdkScEIMo0JlwsHcNudQbQG6HObxpwJtQc0XkgLwAsQOcDYA8gLnBidR6hLUIUgDRvYgGgbDAA JcMhKQUe6kEagElTUExBelkovGEBgBuhHdIognP/AZAbkAeAAjAdIBNQHoAjMOMwIR3gbHBmHoAj TBwhSQXAc3kCMGF4GvJ2mQdAaWQnOwrzIE8DoKpUClBzG9B5LnBPG4ATMXAboTA2LnAxOTkgOCAz OjA8EFBNSS5wTmcjYEJhI2BDLxEAHEAwURuQOh7kPiD6SCgARAWwHsY+UD73AZFsIFkcMTYFZCNg HYN3/y/wPv4ojymdIGIqsiR7Pv5/ETAmoBuALPAJACVxL0FmewiQNkBzMkU+UANSMUBzZl81oAtQ b3kJ4D7nW81C6l0+/0ACVHIwACghjz7vGZET4RIhczE3BdD9BJBjAKAe9BmqTgxPT1Befzy2EPEM cFFvUn4xgFPTbuZAAMADEC50G2AAgAWgjwIwC4AgoQdALmNhVC8TVT8bkGw6PCAzNSACLTvQNDY2 LzQ5vDQzWF9QUx6ATmdoAkD2cD3gXhF3XlBXH1giGaB/AUAegAFAW89QZALRE+IxXjZgT2FeWvBk ck8FEGfvC4AHQE7hBBBhJVBkczmpewzBWyA0AUBizwwSY/ZGNwNhPeAMkmIRYD6jIEv9LOBCBRAA gAIgYl9n72RQ/wZgAjBpVzqfO6oRYDyAau/Ta/9kUFRvaVdNHoEFIP8moUMhBSAIkAIwR6M5ADVg QQYAUVItVVMfwFPHcA9xH20BdWJqRyFpV35RbgFXoAIgLzADoBwAZPk4UGFtDeAsQEMCNVhmGv91 v2A5YWUaUAQgHdEdURwA/UFxIENwJnF0oiNCNEM40f8HIQJgNGF943neJiJYSX1W20b1BaBtA4E5 ICAaUDRw+0kQXpB5fuIjUTBQMQB+Qv8LYC8AAyAxUQnAhIJBMyxi/wdACQAH4B3Rgj9/gjTBI2D/ IKMeADEAQwE0cAOgSWI5EPcucCEhCsB0NbMFsQkAWDD7eMIs4EQhMB4RfuJ44ULw/xvgh+8dw4kD IKUucCgAQXDPNdEjUUb1HdJhcDFRFID/BzCFgRvSLOAoAFgwimGAgP8DEDAAETGCH32hf/eQQkGG /30ahEBCr0O/JGwhZn0omc/BBgBFTEVDVEdfmt8RaQBST008cFNfRcJNM2BPWUVFdTl9Vn+W+p+f oX888DDReeQoAHLXVqCQ1Abgdh1heYygg7FfAQCPsiVRikJ0sEweAHLlA2ByhDNrboeEkpKVb/8R YH6CLKA2NYUnjNABIJkhvzXSRwMEIAIQicEA0GgvMr+Q44diIyEFARuRBzAsqD//MLMoBn4EEQB9 4SNgMCEcAP8vAAJAG6FBcSc2oe99KT6pBRVBALSwAAAAAwAQEAAAAAADABEQAAAAAB4AQhABAAAA MQAAADwwMUJERjEzQi4yQjY0NEQwMEBuYmFvY2hhdS50cmFuc2NvbnRpbmVudGFsLmNhPgAAAAAD AIAQ/////0AABzDgjtCuYPG9AUAACDDgjtCuYPG9AQsAAYAIIAYAAAAAAMAAAAAAAABGAAAAAAOF AAAAAAAAAwACgAggBgAAAAAAwAAAAAAAAEYAAAAAEIUAAAAAAAADAAOACCAGAAAAAADAAAAAAAAA RgAAAABShQAAdBAAAB4ABIAIIAYAAAAAAMAAAAAAAABGAAAAAFSFAAABAAAABQAAADguMDIAAAAA AwAFgAggBgAAAAAAwAAAAAAAAEYAAAAAAYUAAAAAAAALAAaACCAGAAAAAADAAAAAAAAARgAAAAAO hQAAAAAAAAMAB4AIIAYAAAAAAMAAAAAAAABGAAAAABGFAAAAAAAAAwAIgAggBgAAAAAAwAAAAAAA AEYAAAAAGIUAAAAAAAAeAAmACCAGAAAAAADAAAAAAAAARgAAAAA2hQAAAQAAAAEAAAAAAAAAHgAK gAggBgAAAAAAwAAAAAAAAEYAAAAAN4UAAAEAAAABAAAAAAAAAB4AC4AIIAYAAAAAAMAAAAAAAABG AAAAADiFAAABAAAAAQAAAAAAAAAeAD0AAQAAAAUAAABSRTogAAAAAAMADTT9NwAAxKA= ------ =_NextPart_000_01BDF1BC.AE05C000-- From owner-sqr-users@list.iex.net Wed Oct 7 07:13:41 1998 Date: Wed, 7 Oct 1998 08:51:10 -0300 From: Rodrigo Andaur Subject: Re: Question on a dynamic where statement --0__=qCAOskazHmg5lO5qygcPdyc4nmNQmfsYNpRV8JKW9dddnzx2NUx4PXcJ Content-type: text/plain; charset=us-ascii Content-Disposition: inline Doris I'm using a variable in the where clause, and I can include different fields, my code is something like that Let $ExtraWhere = ' AND' If #Classification > 0 Let $ExtraWhere = $ExtraWhere || ' AND A.U_PRIORITY = ' || to_char(#Classification) End-If If $CityName != '' Let $ExtraWhere = $ExtraWhere || ' AND C.CITY = "' || $CityName || '"' End-If .... Begin-Select (fields) From (tables) (Conditions) [$ExtraWhere] here you can see, two diffrents fields, the first is a number field, and the second is an string field good luck (Buena Suerte) Rodrigo (Embedded image moved "Doris K. Brinson" to file: 06/10/98 08:00 PM pic04522.pcx) Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: Rodrigo Andaur/LACD/CL/Unisys) Subject: Question on a dynamic where statement Is there a way using SQR to use a variable as the where statement in a select command. I am trying to write a label program that will allow the user to enter either an emplid, department or location. Depending on what the user entered, I want to select the appropriate data. I can easily set a variable to say let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES $whereclause But where I run the above type code, I get an SQL error. I know the easy way would be to write different selects for each of the allowed criteria, but I think there has to be a better way. Doris --0__=qCAOskazHmg5lO5qygcPdyc4nmNQmfsYNpRV8JKW9dddnzx2NUx4PXcJ Content-type: application/octet-stream; name="pic04522.pcx" Content-Disposition: attachment; filename="pic04522.pcx" Content-transfer-encoding: base64 CgUBCAAAAABoACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAABaQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAD1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sT zRPHE8MTwhPwEwzIBgzYE8wTxhPDE8IT7hPOBtcTzBPGE8MTE+wTwgbCBwbCEgbCEgbCEsUG1hPL E8YTwxMT6hMMwgYHwgLCAwISwgfEEsMCwwbVE8sTxRPDExPpE8MGAwcCBwMCwhLDB8ISwgISwgLD BtUTyhPFE8MTE+gTwgIHA8ICEw4DDgLDE8USwwLCEMIG1BPKE8UTwxMT5xMCAwcDAg4TDgITwgIS D8ISD8ISBRICEcICwwbUE8oTxRPCExPmEwYCBwMCDgIOwgLDExITEhPCEg8GxgLDBtMMDAfJE8QT whMT5hMGwwITBgMCDhLFEw8SE8ISBgIDwhIDEsMGB9MDxwwHxRPDExPlEwYHAhESAg8CwhMPwhMP xBMPxRIQwgIDAgMCBtMDxwPEDAfDE8IT4RMHwwzCBgLCEhMCDxLIE8MSD8MSwwIQAwIDBgfSDMkD wgPCDAfCExPbEwfGDMIDDAIHERITEhMSwxMPwxMPwxPDEgIDAgMCwwMCBgzREwfHDMYDDMITE9YT B8UMyAMGB8ICBhLDAsYTEhMSExIPwhIHAgcCAwUQAgYRBgfSE8UTB8QMwgMMwhMT0hMHxAzLA8IM BsISDxESExITAw4DxBMSExITwxICBwPCAsMDDMIGB9ITyRMHwwzCExPPEwfDDMkDxQwHwhMGBxIT AhECEwMOAg7DExITDxMPwxIDAgMCBwMCDAYRBgfSE8kTwhPCDMITE8wTB8MMxwPEDMIHxxMGxBLD Ag4DDgIGwg/IEgIDwgIDAgwCEMIGB9ITyRMHDAcMwhMTyhMHwgzGA8MMwgfMEwYHwhLCEAIOAg4C DhDDAhIPxhIFAgXDAgUCEQYH0hPHEwfCDAcPDMITE8gTB8IMxQPDDAfQEwbDEhDEAhAOEA4QwgLG EgcSBhIGBcMCBcIGB9ATB8UMEwfCDA8HDwwHwhMTxhMHwgzEA8MMB9MTBgfCEhADEMICDhAOEMIC EQIDxxIGBwbCAgUCEQYHyxMHxAwHwhMHEwzCEwcPBw8MB8MTE8UTBwzEA8IMB9YTBsQSEAMCA8UC EQIDAgPDEgcSBgfCBgUQAhDCBgfGEwfEDAfGE8INEwzCEw8HwgwHwxPCE8QTBwzDA8IMB9gTBgfE EhACEMYCEQIDAsQSBhLDBsICEALCBgfCEwfDDAfKEwfCDRMHwhPCDAfEE8ITE8MTBwzCA8IMB9oT DBIHwxLDDBEDxQIDAgPDEgYSBgfCBgIQAhAGDAfCEwzDE8MHyRMHwhPCBxMHxRPDExPDEwzCAwwH 3RMGxxICEQPDAgMCA8MSBhIGBwYMBhACEAIGDMMTDBPCB8YTwwfHEwfGE8MTwhPDEwwDDAfeEwYH xxICEQPDAgMCwhIGEgYHBgwGEAIQAsIGB8MTDMYTwwfKEwzGE8MTwhPDE8IMB98TDBLCB8USAgMR xAISB8ISBgcGDAYQBhAGEAYMB8MMB8kTwwfHEwzGE8MTwhPDEwwPwgzfEwYSB8ISB8ISAhECAwID EgcSBwYHBgwGEAYQxgzDD8IHxRPDB8kTBwzGE8MTwhPDEwzDD8QM3BPCBhIGwxIGAhECAwIHBgcG yAzJDxMHzRMHwwwHxxPDE8ITwxMHDMYPxwwH1BMGEgYSBhLLDM4PwwwTDMcTwgfEDAfJE8QTwhMT xBMHwgzLD9sM0w/GDAfDEwzDEwfEDAfLE8YTwxMTxhMHxAztD8gMBgfIE8QMB84TxxPDE8ITyhMH xwzbD8sMEAUMBcIMwgYH1RPKE8UTwxMT0RMH2wwGEAYQBhACBQwFDAUMBgwHBgfWE8sTxRPDExPu EwYMBhAGEAIGDAYMwwYH1xPLE8YTwxMT8BPKBgfYE8wTxhPDExP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhMMAAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD/ /wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8A AAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A //8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAA AP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA /wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCk gICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vw oKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw //vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzA psrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDA wNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICA wMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACA AICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACA gACA//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP////// --0__=qCAOskazHmg5lO5qygcPdyc4nmNQmfsYNpRV8JKW9dddnzx2NUx4PXcJ-- From owner-sqr-users@list.iex.net Wed Oct 7 07:52:12 1998 Date: Wed, 7 Oct 1998 07:13:35 -0400 From: Steve Schelske Subject: Re: Problem with Union & Union Vs Array Part of the code you sent was.... begin-SELECT DISTINCT ON-ERROR=SQL-Error A.PROJECT_ID $P1 SUM(A.POSTED_TOTAL_AMT) &A.POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &A.ENCUMBERED_AMOUNT Do Print-Totals FROM PS_LEDGER A WHERE A.BUSINESS_UNIT = 'UNSYD' AND A.DEPTID = 'F001' AND A.ACCOUNTING_PERIOD = 9 AND (A.ACCOUNT BETWEEN '1800' AND '1899') AND A.FISCAL_YEAR = 1998 AND A.STATISTICS_CODE = ' ' I think the problem is that you need to use the & designation for all of your column synonyms instead of a $ or # (which you used later in your post). So instead of this... begin-SELECT DISTINCT ON-ERROR=SQL-Error A.PROJECT_ID $P1 SUM(A.POSTED_TOTAL_AMT) &A.POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &A.ENCUMBERED_AMOUNT Try this... begin-SELECT DISTINCT ON-ERROR=SQL-Error A.PROJECT_ID &P1 SUM(A.POSTED_TOTAL_AMT) &A_POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &A_ENCUMBERED_AMOUNT Since you're doing your union join, you'll need to make sure your &POSTED and &ENCUMBERED synonyms are unique, so instead of &A.field, use &A_field. Hope this is correct. Good Luck. From owner-sqr-users@list.iex.net Wed Oct 7 08:47:27 1998 Date: Wed, 7 Oct 1998 09:31:25 -0400 From: "Riepenhoff, Ray" Subject: Re: Question on a dynamic where statement This is what we tend to do in this situation. We vary them slightly and for many different fields. move 0 to #depts_entered ! A count just in case you enter 0 dept's. let $SlctDept = 'e.deptid in (' ! This allows you to enter 1 or many departments. while $Dpt <> 'X' ! This allows easy exit, even if 0 dept's get entered. input $Dpt 'Please enter Department (i.e. X25860) or X to exit' type=char uppercase $Department if $Department <> 'X' add 1 to #depts_entered let $SlctDept = $SlctDept || ',''' || $Department || '''' ! All single quotes, since deptid is a char, it must be in quotes. end-if end-while if #depts_entered = 0 ! If 0 dept's are entered, this builds a bogus WHERE clause that let $SlctDept = '1 = 2' ! will return 0 rows. else let $SlctDept = $SlctDept || ')' ! Otherwise, place the end parenthesis on the WHERE clause. end-if SELECT (lots of fields) FROM PS_EMPLOYEES WHERE [$SlctDept] -----Original Message----- From: Doris K. Brinson [mailto:DBrinson@COMMHOSPINDY.ORG] Sent: Tuesday, October 06, 1998 3:00 PM To: Multiple recipients of list SQR-USERS Subject: Question on a dynamic where statement Is there a way using SQR to use a variable as the where statement in a select command. I am trying to write a label program that will allow the user to enter either an emplid, department or location. Depending on what the user entered, I want to select the appropriate data. I can easily set a variable to say let $whereclause = 'WHERE DEPTID = $entered_dept' SELECT (lots of fields) FROM PS_EMPLOYEES $whereclause But where I run the above type code, I get an SQL error. I know the easy way would be to write different selects for each of the allowed criteria, but I think there has to be a better way. Doris From owner-sqr-users@list.iex.net Wed Oct 7 08:59:35 1998 Date: Wed, 7 Oct 1998 08:24:39 -0500 From: Phil Roell Subject: Loading and writing arrays to a file I am new to SQR and am having difficulty loading an array and then writing it to a delimited file. First Question: When executing a while loop, what lines get executed once the condition has been set to false. I understand that if the while contains a BREAK that the commands immediately following the end-while are executed. However, if the while does not contain a BREAK but the condition becomes false and the loop terminates do the commands immediately following the end-while get executed before the next record is selected from the database? Second Question: Following is the code I used to create the array: create-array name=bookings_array size =500 field=product:char field=bookings_class:char field=quantity:number:156=0 Becasue of the occurs 156 times on the quantity field what do I need to do to get the entire record to a delimited file that can be opened in excel. Any help would be appreciated. Phil Roell From owner-sqr-users@list.iex.net Wed Oct 7 09:24:42 1998 Date: Wed, 7 Oct 1998 08:06:22 -0600 From: Robert Goshko Subject: Re: Problem with Union & Union Vs Array This is a multi-part message in MIME format. ------=_NextPart_000_000A_01BDF1C9.5F0A6840 Content-Type: multipart/alternative; boundary="----=_NextPart_001_000B_01BDF1C9.5F0D7580" ------=_NextPart_001_000B_01BDF1C9.5F0D7580 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Adrian, First, don't use distinct, union all ready perform this function, you are just adding overhead, second, your selects after the union should look like regular SQL: BEGIN-SELECT ON-ERROR=SQL-Error A.PROJECT_ID &PROGECT_ID SUM(A.POSTED_TOTAL_AMT) &POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &ENCUMBERED_AMOUNT Do Print-Totals FROM PS_LEDGER A WHERE A.BUSINESS_UNIT = 'UNSYD' AND A.DEPTID = 'F001' AND A.ACCOUNTING_PERIOD = 9 AND (A.ACCOUNT BETWEEN '1800' AND '1899') AND A.FISCAL_YEAR = 1998 AND A.STATISTICS_CODE = ' ' UNION SELECT B.PROJECT_ID, SUM(B.POSTED_TOTAL_AMT), SUM(B.ENCUMBERED_AMOUNT) FROM PS_LEDGER B WHERE B.BUSINESS_UNIT = 'UNSYD' AND B.DEPTID = 'F001' AND B.ACCOUNTING_PERIOD = 9 AND (B.ACCOUNT BETWEEN '2000' AND '2199') AND B.FISCAL_YEAR = 1998 AND B.STATISTICS_CODE = ' ' UNION etc... All data will be returned to the column names defined in the first select, so the second, third, and fourth selects in the union just need to be regular SQL. You don't need any "SQR" stuff in them. ......Rob ---------------------------------------------------------------------------- ---- Robert Goshko Owner Axis Developments System Consulting Services Sherwood Park, Alberta, Canada -----Original Message----- From: Discussion of SQR, SQRIBE Technologies's database reporting language [mailto:SQR-USERS@list.iex.net]On Behalf Of Adrian Clayfield Sent: Wednesday, October 07, 1998 2:54 AM To: Multiple recipients of list SQR-USERS Subject: Problem with Union & Union Vs Array Im using: Version: SQRW/3.0.13.3/PC/Windows-NT 3.51/Sybase 10.0.3/May 28 1996 Hello everyone, I've spent most of the day trying to get a Union working in SQR.. It retrieves 4 different sets of posted total amts and encumbered amts from the Ledger table. What works in an sql editor does not compile in SQR: (The 4 set of vals are identified by different account ranges), I need the 4 opening bals followed by journal lines for all the Accounts within each Project within each department for the period, followed by closing balances. Ive been trying to use a Union to get the four totals, but get the following problems (it works in wisql so i presume its the reference variables) When i try: begin-SELECT DISTINCT ON-ERROR=SQL-Error A.PROJECT_ID $P1 SUM(A.POSTED_TOTAL_AMT) &A.POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &A.ENCUMBERED_AMOUNT Do Print-Totals FROM PS_LEDGER A WHERE A.BUSINESS_UNIT = 'UNSYD' AND A.DEPTID = 'F001' AND A.ACCOUNTING_PERIOD = 9 AND (A.ACCOUNT BETWEEN '1800' AND '1899') AND A.FISCAL_YEAR = 1998 AND A.STATISTICS_CODE = ' ' UNION SELECT DISTINCT B.PROJECT_ID $P2 SUM(B.POSTED_TOTAL_AMT) &B.POSTED_TOTAL_AMT2 SUM(B.ENCUMBERED_AMOUNT) &B.ENCUMBERED_AMOUNT2 Do Print-Totals FROM PS_LEDGER B WHERE B.BUSINESS_UNIT = 'UNSYD' AND B.DEPTID = 'F001' AND B.ACCOUNTING_PERIOD = 9 AND (B.ACCOUNT BETWEEN '2000' AND '2199') AND B.FISCAL_YEAR = 1998 AND B.STATISTICS_CODE = ' ' UNION etc....... ORDER BY 1 end-SELECT I GET: (SQR 5528) Sybase dbdesc: ct_results error in cursor 8: (107) The column prefix 'A' does not match with a table name or alias name used in the query. Either the table is not specified in the FROM clause or it has a correlation name which must be used instead. (SQR 1303) Error in SQL (perhaps missing &name after expression): If I try with: begin-SELECT DISTINCT ON-ERROR=SQL-Error A.PROJECT_ID $P1 SUM(A.POSTED_TOTAL_AMT) #A1 SUM(A.ENCUMBERED_AMOUNT) #A2 ! Do Print-Totals FROM PS_LEDGER A WHERE A.BUSINESS_UNIT = 'UNSYD' AND A.DEPTID = 'F001' AND A.ACCOUNTING_PERIOD = 9 AND (A.ACCOUNT BETWEEN '1800' AND '1899') AND A.FISCAL_YEAR = 1998 AND A.STATISTICS_CODE = ' ' UNION SELECT DISTINCT B.PROJECT_ID $P2 SUM(B.POSTED_TOTAL_AMT) #A3 SUM(B.ENCUMBERED_AMOUNT) #A4 !Do Print-Totals FROM PS_LEDGER B WHERE B.BUSINESS_UNIT = 'UNSYD' AND B.DEPTID = 'F001' AND B.ACCOUNTING_PERIOD = 9 AND (B.ACCOUNT BETWEEN '2000' AND '2199') AND B.FISCAL_YEAR = 1998 AND B.STATISTICS_CODE = ' ' ORDER BY 1 end-SELECT I get: Error on line 259: (SQR 3728) SQL expression not ended, perhaps missing &Name. FROM PS_LEDGER A ---------------------------------------- Also, Im wondering if it would be more efficient to create an array as my report is run against 3000 DEPARTMENTS and this method I would need four Unions and then retrieve Journal Lines for each projectid.... With an array: Would I have to Select all dept/project id and first group of totals, repeat for each range and then sort it to be able to print headings, totals and get line details for each project......(I've never used one...) Any help much appreciated! Thanks in advance Adrian Clayfield ======================================================================== Integrated Business Technologies Pty Ltd Level 11 55 Hunter St Sydney 2000 Mobile: 0413 115580 Fax: 61 2 9223 4384 Email: adclay@ibt.com.au ======================================================================== ------=_NextPart_001_000B_01BDF1C9.5F0D7580 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Adrian,
 
First,=20 don't use distinct, union all ready perform this function, you are just = adding=20 overhead, second, your selects after the union should look like regular=20 SQL:
 
BEGIN-SELECT=20 ON-ERROR=3DSQL-Error
A.PROJECT_ID         &n= bsp;   =20 &PROGECT_ID
SUM(A.POSTED_TOTAL_AMT)  =20 &POSTED_TOTAL_AMT
SUM(A.ENCUMBERED_AMOUNT) =20 &ENCUMBERED_AMOUNT
 
  Do = Print-Totals

FROM PS_LEDGER A
WHERE A.BUSINESS_UNIT =3D=20 'UNSYD'
  AND A.DEPTID        = =3D=20 'F001'
  AND A.ACCOUNTING_PERIOD =3D 9 
  AND = (A.ACCOUNT=20 BETWEEN '1800' AND '1899')
  AND A.FISCAL_YEAR   =3D=20 1998
  AND A.STATISTICS_CODE =3D ' '
UNION
SELECT=20 B.PROJECT_ID,
      =20 SUM(B.POSTED_TOTAL_AMT),
      =20 SUM(B.ENCUMBERED_AMOUNT)
 =20 FROM PS_LEDGER B
 WHERE=20 B.BUSINESS_UNIT =3D 'UNSYD'
   AND=20 B.DEPTID        =3D 'F001' =
   AND B.ACCOUNTING_PERIOD =3D 9 =20
   AND (B.ACCOUNT BETWEEN = '2000' AND=20 '2199')
   AND = B.FISCAL_YEAR   =3D=20 1998
   AND B.STATISTICS_CODE =3D ' = '
UNION etc...
 
All=20 data will be returned to the column names defined in the first select, = so the=20 second, third, and fourth selects in the union just need to be regular=20 SQL.  You don't need any "SQR" stuff in=20 them. 
 
.....Rob=20

Robert=20 Goshko
Owner
Axis Developments
System Consulting=20 Services
Sherwood Park, Alberta,=20 Canada
 
-----Original Message-----
From: Discussion of = SQR, SQRIBE=20 Technologies's database reporting language=20 [mailto:SQR-USERS@list.iex.net]On Behalf Of Adrian=20 Clayfield
Sent: Wednesday, October 07, 1998 2:54 = AM
To:=20 Multiple recipients of list SQR-USERS
Subject: Problem = with Union=20 & Union Vs Array

Im using:
Version: = SQRW/3.0.13.3/PC/Windows-NT=20 3.51/Sybase 10.0.3/May 28 1996
 
Hello everyone,
I've spent most of the day trying to get a Union = working=20 in SQR.. It retrieves 4 different sets of = posted total=20 amts and encumbered amts from the Ledger table. What works in an sql = editor=20 does not compile in SQR:
(The 4 set of vals are = identified by=20 different account ranges),
I need the 4 opening bals followed by = journal=20 lines for all the Accounts within each Project within each = department
for=20 the period, followed by closing balances.
Ive been trying to use = a Union=20 to get the four totals, but get the following problems (it = works
in wisql=20 so i presume its the reference variables)
When i = try:
 

begin-SELECT DISTINCT=20 ON-ERROR=3DSQL-Error
 
A.PROJECT_ID        &nbs= p;    =20 $P1
SUM(A.POSTED_TOTAL_AMT)  =20 &A.POSTED_TOTAL_AMT
SUM(A.ENCUMBERED_AMOUNT) =20 &A.ENCUMBERED_AMOUNT
 
  Do = Print-Totals


FROM=20 PS_LEDGER A
WHERE A.BUSINESS_UNIT =3D 'UNSYD'
  AND=20 A.DEPTID        =3D 'F001' =
  AND=20 A.ACCOUNTING_PERIOD =3D 9 
  AND (A.ACCOUNT BETWEEN = '1800' AND=20 '1899')
  AND A.FISCAL_YEAR   =3D 1998
  = AND=20 A.STATISTICS_CODE =3D ' '
 
UNION
 
SELECT=20 = DISTINCT
B.PROJECT_ID        &= nbsp;    =20 $P2   
SUM(B.POSTED_TOTAL_AMT)  =20 &B.POSTED_TOTAL_AMT2
SUM(B.ENCUMBERED_AMOUNT) =20 &B.ENCUMBERED_AMOUNT2
 
 Do Print-Totals =
 
FROM PS_LEDGER B
 
  WHERE B.BUSINESS_UNIT =3D = 'UNSYD'
  AND = B.DEPTID        =3D=20 'F001'
  AND B.ACCOUNTING_PERIOD =3D 9 
  AND = (B.ACCOUNT BETWEEN '2000' AND '2199')
  AND=20 B.FISCAL_YEAR   =3D 1998
  AND B.STATISTICS_CODE = =3D '=20 '
 
UNION   = etc.......
 
ORDER BY 1
 
end-SELECT
 
I GET:
 
(SQR 5528) Sybase dbdesc: = ct_results error=20 in cursor 8:
   (107) The column prefix 'A' does not = match with=20 a table name or alias name used in the query. Either the table is = not=20 specified in the FROM clause or it has a correlation name which must = be used=20 instead.
 
(SQR 1303) Error in SQL (perhaps = missing=20 &name after expression):
 
If I try with:
 
begin-SELECT DISTINCT=20 ON-ERROR=3DSQL-Error
 
A.PROJECT_ID        &nbs= p;    =20 $P1
SUM(A.POSTED_TOTAL_AMT)  =20 #A1
SUM(A.ENCUMBERED_AMOUNT)  #A2
 

!  Do = Print-Totals


FROM=20 PS_LEDGER A
WHERE A.BUSINESS_UNIT =3D 'UNSYD'
  AND=20 A.DEPTID        =3D 'F001' =
  AND=20 A.ACCOUNTING_PERIOD =3D 9 
  AND (A.ACCOUNT BETWEEN = '1800' AND=20 '1899')
  AND A.FISCAL_YEAR   =3D 1998
  = AND=20 A.STATISTICS_CODE =3D ' '
 
UNION
 
SELECT=20 = DISTINCT
B.PROJECT_ID        &= nbsp;    =20 $P2   
SUM(B.POSTED_TOTAL_AMT)  =20 #A3
SUM(B.ENCUMBERED_AMOUNT)  #A4
 
  !Do Print-Totals =
 
FROM PS_LEDGER B
 
  WHERE B.BUSINESS_UNIT =3D = 'UNSYD'
  AND = B.DEPTID        =3D=20 'F001'
  AND B.ACCOUNTING_PERIOD =3D 9 
  AND = (B.ACCOUNT BETWEEN '2000' AND '2199')
  AND=20 B.FISCAL_YEAR   =3D 1998
  AND B.STATISTICS_CODE = =3D '=20 '
 
ORDER BY 1
 
end-SELECT
 
I get:
 
Error on line = 259:
   (SQR=20 3728) SQL expression not ended, perhaps missing &Name.
FROM = PS_LEDGER=20 A
 
----------------------------------------
 
Also, Im wondering if it would = be more=20 efficient to create an array as my report
is run against 3000 = DEPARTMENTS=20 and this method I would need four Unions and then retrieve Journal=20 Lines
for each projectid....
With an array: Would I have to = Select all=20 dept/project id and first group of totals, repeat for each range and = then
sort it to be able to print headings, totals and get line = details=20 for each project......(I've never used one...)
 
Any help much = appreciated!
Thanks in advance
 
Adrian Clayfield
 
 
 
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
Integrated=20 Business Technologies Pty Ltd
Level 11   55 Hunter St=20 Sydney  2000
Mobile: 0413 115580    Fax: 61 2 = 9223=20 4384
Email:  adclay@ibt.com.au
=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 
 
------=_NextPart_001_000B_01BDF1C9.5F0D7580-- ------=_NextPart_000_000A_01BDF1C9.5F0A6840 Content-Type: image/gif; name="Axis-Dev-Logo.gif" Content-Transfer-Encoding: base64 Content-ID: <318155813@07101998-3540> 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 ------=_NextPart_000_000A_01BDF1C9.5F0A6840-- From owner-sqr-users@list.iex.net Wed Oct 7 09:26:45 1998 Date: Wed, 7 Oct 1998 09:02:42 -0500 From: Ray Ontko Subject: Re: Loading and writing arrays to a file Phil, move 0 to #i while #i < #bookings_array_count get $product $bookings_class from bookings_array(#i) product bookings_class let $line = '"' || $product || '","' || $bookings_class || '"' move 0 to #j while #j < 156 add 1 to #j get #quantity from bookings_array(#i) quantity(#j) move #quantity to $quantity edit 88888888 let $line = $line || ',' || $quantity end-while write {OUT_FILE} from $line add 1 to #i end-while If we had used a break, it would have caused us to exit the loop as soon as the BREAK is encountered. For example: move 0 to #i while #i < 2 show 'howdy' break show 'podner' add 1 to #i end-while only causes "howdy" to be displayed. While: move 0 to #i while #i < 2 show 'howdy' if #i > 0 break end-if show 'podner' add 1 to #i end-while causes "howdy", "podner" , "howdy" to be displayed. HTH. Ray > I am new to SQR and am having difficulty loading an array and then writing it to a > delimited file. > > First Question: > > When executing a while loop, what lines get executed once the condition has been set > to false. I understand that if the while contains a BREAK that the commands > immediately following the end-while are executed. However, if the while does not > contain a BREAK but the condition becomes false and the loop terminates do the > commands immediately following the end-while get executed before the next record is > selected from the database? > > Second Question: > > Following is the code I used to create the array: > > create-array name=bookings_array size =500 > field=product:char > field=bookings_class:char > field=quantity:number:156=0 > > Becasue of the occurs 156 times on the quantity field what do I need to do to get the > entire record to a delimited file that can be opened in excel. > > Any help would be appreciated. > > Phil Roell > ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Wed Oct 7 09:33:02 1998 Date: Wed, 7 Oct 1998 09:13:54 -0500 From: Eric Gentz Subject: Re: Inserting Large Amounts of Data Two ideas: Loading the PERSONAL_DATA table into an array and then searching for the emplid using the array will make the SQR much faster. I have done the same thing loading Financial data. When you load the array, sort by SSN and use a binary search. If you need the code, feel free to email me directly. Second, I would also use an array for looking at the job table. You can create an array with emplid, empl_rcd#, effdt, and effseq (all the keys from the job table). When you write the JOB table write the array as well. When you need to determine if a row is in the job table, use the array. Using arrays will make the loading go muich faster but it is taxing on the box you are running upon. HTH, Eric Eric Gentz Interested in a real operating system? UW Hospital & Clinics 610 N. Whitney Way "You can surrender without a prayer, but never Madison, WI 53705 really pray, pray without surrender. 608-263-9345 " You can fight without ever winning, but never ej.gentz@hosp.wisc.edu ever win without a fight" -- Neal Peart -------------------------------------- "You can twist perceptions, but reality won't budge." -- Neal Peart From owner-sqr-users@list.iex.net Wed Oct 7 09:54:43 1998 Date: Wed, 7 Oct 1998 07:31:13 CDT From: "C. Willis III" Subject: Re: Problem with Union & Union Vs Array Adrian, The first thing I see you are doing incorrectly is declaring a column variable as a string in this piece of code : begin-SELECT DISTINCT ON-ERROR=3DSQL-Error A.PROJECT_ID $P1 SUM(A.POSTED_TOTAL_AMT) &A.POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &A.ENCUMBERED_AMOUNT begin-SELECT DISTINCT ON-ERROR=3DSQL-Error It should read : A.PROJECT_ID &P1 SUM(A.POSTED_TOTAL_AMT) &A.POSTED_TOTAL_AMT SUM(A.ENCUMBERED_AMOUNT) &A.ENCUMBERED_AMOUNT let $P1 = &P1 The rest of your union looks fine to me... same number of objects selected, order by.... Maybe there is some inherent maximum number of Unions you can perform with Sybase???? ***BUT***, why are you using a union? The code you have provided comes from the same table (do the others?) and is different only in the account range. Why not use a single select with OR logic such as AND ((A.ACCOUNT BETWEEN '1800' AND '1899') OR (A.ACCOUNT BETWEEN '2000' AND '2199') OR (A.ACCOUNT BETWEEN 'xx00' AND 'xx99') OR (A.ACCOUNT BETWEEN 'yy00' AND 'yy99')) ????? As to your arrays question, I have had varying results with using them in regards to them actually saving overhead since you still have the overhead of building them in the first place, then massaging the data until you get what you want, and it always seems harder to me to debug array logic than straight forward code. You should be able to do all your grouping with order by and on-break logic. hope this helps clark ----Original Message Follows---- ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Wed Oct 7 09:55:17 1998 Date: Wed, 7 Oct 1998 10:21:30 -0400 From: Helen Moore Subject: Printing on legal size paper I am trying to print my paychecks on legal size paper and in doing that I can not get the SQR to choose the tray where the legal paper is located. I have been trying escape sequences that supposedly changes the tray but it does not work. These are some examples I have tried: encode '<27>[2t' into top_tray print-direct printer=hp $top_tray ..... encode '<27>&l1H' into top_tray print $top_tray () code I have an HP5 Laserjet printer and SQR version 3. Any suggestions? Helen Helen Moore Senior Programmer Analyst IT/IIS James Madison University From owner-sqr-users@list.iex.net Wed Oct 7 10:07:27 1998 Date: Wed, 7 Oct 1998 09:57:11 -0500 From: Ray Ontko Subject: Re: Loading and writing arrays to a file Oops, My "add 1 to #j" should be at the end of the inner while loop, not at the beginning. Ray > Phil, > > move 0 to #i > while #i < #bookings_array_count > get $product $bookings_class from bookings_array(#i) > product bookings_class > let $line = '"' || $product || '","' || $bookings_class || '"' > move 0 to #j > while #j < 156 > add 1 to #j > get #quantity from bookings_array(#i) quantity(#j) > move #quantity to $quantity edit 88888888 > let $line = $line || ',' || $quantity > end-while > write {OUT_FILE} from $line > add 1 to #i > end-while > > If we had used a break, it would have caused us to exit the loop > as soon as the BREAK is encountered. For example: > > move 0 to #i > while #i < 2 > show 'howdy' > break > show 'podner' > add 1 to #i > end-while > > only causes "howdy" to be displayed. While: > > move 0 to #i > while #i < 2 > show 'howdy' > if #i > 0 > break > end-if > show 'podner' > add 1 to #i > end-while > > causes "howdy", "podner" , "howdy" to be displayed. > > HTH. > > Ray > > I am new to SQR and am having difficulty loading an array and then writing it to a > > delimited file. > > > > First Question: > > > > When executing a while loop, what lines get executed once the condition has been set > > to false. I understand that if the while contains a BREAK that the commands > > immediately following the end-while are executed. However, if the while does not > > contain a BREAK but the condition becomes false and the loop terminates do the > > commands immediately following the end-while get executed before the next record is > > selected from the database? > > > > Second Question: > > > > Following is the code I used to create the array: > > > > create-array name=bookings_array size =500 > > field=product:char > > field=bookings_class:char > > field=quantity:number:156=0 > > > > Becasue of the occurs 156 times on the quantity field what do I need to do to get the > > entire record to a delimited file that can be opened in excel. > > > > Any help would be appreciated. > > > > Phil Roell > > > > ---------------------------------------------------------------------- > Ray Ontko | Ray Ontko & Co | "Time for a new signature line." > rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ > ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Wed Oct 7 10:58:55 1998 Date: Wed, 7 Oct 1998 09:55:32 -0500 From: Ray Ontko Subject: Printing on legal size paper (fwd) Helen, Did you mean encode '<27>[2t' into $top_tray instead of encode '<27>[2t' into top_tray The print-direct should have worked if you used -printer:hp. If you're printing from the SPF viewer or using -printer:wp, it won't work. Ray > I am trying to print my paychecks on legal size paper and in doing > that I can not get the SQR to choose the tray where the legal > paper is located. I have been trying escape sequences that supposedly > changes the tray but it does not work. > > These are some examples I have tried: > > encode '<27>[2t' into top_tray > print-direct printer=hp $top_tray > ..... > encode '<27>&l1H' into top_tray > print $top_tray () code > > I have an HP5 Laserjet printer and SQR version 3. > > Any suggestions? > > Helen > > > Helen Moore > Senior Programmer Analyst > IT/IIS > James Madison University ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Wed Oct 7 11:31:17 1998 Date: Wed, 7 Oct 1998 09:56:23 -0500 From: David Anderson Subject: Inserting Large Amounts of Data OK, looking for performance enhancement. I am trying to load ~80K rows into an Oracle table (PeopleSoft JOB). Overview The current process reads from a flat file (txt), manipulates the data, does some cursory checks, then inserts the row. I am issuing commit every 300 rows. The SQR executes on our UNIX box from the command line. Ugly Details I utilize several LOAD-LOOKUPS for basic data retrieval. Read the input file (txt) and massage basic variables. I then need to determine if row already exists in target table (PS_JOB). Input file has employee's SSN and not their EMPLID so I need to join PS_PERSONAL_DATA with PS_JOB to determine if row already exists. I have indexed SSN in PS_PERSONAL_DATA. I also need to determine if the row being inserted is a concurrent position (forcing increase of EMPL_RCD# to 1 from 0). Again, this is done via selection against PS_JOB. After all these manipulations I then insert the row into PS_JOB and begin the process again. I COMMIT after 300 successful inserts. The Questions 1. Can I increase performance by utilizing a LOAD-LOOKUP against PS_PERSONAL_DATA to determine the employee's EMPLID instead of the join of PS_PERSONAL_DATA and PS_JOB? 2. Does performance suffer because I am inserting and selecting against the same table (PS_JOB) between the commits? Should I issue a COMMIT after every insert? Help would be greatly appreciated... Dave From owner-sqr-users@list.iex.net Wed Oct 7 12:06:32 1998 Date: Wed, 7 Oct 1998 11:54:57 -0500 From: "Korbel Gordon E." Subject: Re: Inserting Large Amounts of Data IF this is a recurrning process, perhaps try this as a speedup: (Maybe not worth it for a one-time process). Create a temp table in the DB containing the fields in your flat file + emplid, etc. Dump the data into the temp table Update the emplid, etc, on the temp table all at once. update temp set temp.emplid = a.emplid etc... delete the dupe rows from the temp table delete from temp where temp.emplid in (select emplid from temp MINUS select emplid from ps_job) perform the remainder of the insert and validation logic using the temp table as the source. Drop the table or truncate the temp table. Should show substantial performance gains. -Gordon > -----Original Message----- > From: David Anderson [SMTP:DANDERS1@SMTPGW.IS.HFH.EDU] > Sent: Wednesday, October 07, 1998 9:56 AM > To: Multiple recipients of list SQR-USERS > Subject: Inserting Large Amounts of Data > > OK, looking for performance enhancement. I am trying to > load ~80K rows into an Oracle table (PeopleSoft JOB). > Overview > The current process reads from a flat file (txt), manipulates the data, > does some cursory checks, then inserts the row. I am issuing commit > every 300 rows. The SQR executes on our UNIX box from the command > line. > Ugly Details > I utilize several LOAD-LOOKUPS for basic data retrieval. Read the input > file (txt) and massage basic variables. I then need to determine if row > already exists in target table (PS_JOB). Input file has employee's SSN > and not their EMPLID so I need to join PS_PERSONAL_DATA with PS_JOB > to determine if row already exists. I have indexed SSN in > PS_PERSONAL_DATA. I also need to determine if the row being inserted > is a concurrent position (forcing increase of EMPL_RCD# to 1 from 0). > Again, this is done via selection against PS_JOB. After all these > manipulations I then insert the row into PS_JOB and begin the process > again. I COMMIT after 300 successful inserts. > The Questions > 1. Can I increase performance by utilizing a LOAD-LOOKUP against > PS_PERSONAL_DATA to determine the employee's EMPLID instead of the > join of PS_PERSONAL_DATA and PS_JOB? > 2. Does performance suffer because I am inserting and selecting against > the same table (PS_JOB) between the commits? Should I issue a COMMIT > after every insert? > > Help would be greatly appreciated... > Dave From owner-sqr-users@list.iex.net Wed Oct 7 13:36:05 1998 Date: Wed, 7 Oct 1998 11:55:52 -0400 From: "Singh, Rajvirendra ( NYSDS )" Subject: Sqr Viewer 3.x and Sqr viewer 4.x Hi all, I have generated spf file using sqr 3.0. I can open in SQR Viewer 3.0 but I can not open in 4.0.3. I get following error "Fatal error in reading SPF file. The SPF file is probably corrupted" Any help would be appreciated. Rajvirendra Singh From owner-sqr-users@list.iex.net Wed Oct 7 14:53:33 1998 Date: Wed, 7 Oct 1998 14:44:10 -0500 From: Phil Roell Subject: ? Last Record Does SQR provide a flag that tells you when it has selected the last record in a select statement? Thanks, Phil From owner-sqr-users@list.iex.net Wed Oct 7 15:19:15 1998 Date: Wed, 7 Oct 1998 16:17:42 -0400 From: Daniel Guynes Subject: Re: ? Last Record --0__=lU75fafdUJEF15Lp2lk3YkNMWCIZ9uWblj1YmpeyDp5CLX3ZpJYZwyRL Content-type: text/plain; charset=us-ascii Content-Disposition: inline I do believe there is a reserved variable called #END-FILE that is internally kept within the SQR. It is set to 1 if the end of file occurs. I have never used it, so I can not help you there. Hope it helps, Cheers, Danny (Embedded image moved Phil Roell to file: 10/07/98 03:44 PM pic25032.pcx) Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: Daniel Guynes) Subject: ? Last Record Does SQR provide a flag that tells you when it has selected the last record in a select statement? Thanks, Phil --0__=lU75fafdUJEF15Lp2lk3YkNMWCIZ9uWblj1YmpeyDp5CLX3ZpJYZwyRL Content-type: application/octet-stream; name="pic25032.pcx" Content-Disposition: attachment; filename="pic25032.pcx" Content-transfer-encoding: base64 CgUBCAAAAABoACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAABaQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAD1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sT zRPHE8MTwhPwEwzIBgzYE8wTxhPDE8IT7hPOBtcTzBPGE8MTE+wTwgbCBwbCEgbCEgbCEsUG1hPL E8YTwxMT6hMMwgYHwgLCAwISwgfEEsMCwwbVE8sTxRPDExPpE8MGAwcCBwMCwhLDB8ISwgISwgLD BtUTyhPFE8MTE+gTwgIHA8ICEw4DDgLDE8USwwLCEMIG1BPKE8UTwxMT5xMCAwcDAg4TDgITwgIS D8ISD8ISBRICEcICwwbUE8oTxRPCExPmEwYCBwMCDgIOwgLDExITEhPCEg8GxgLDBtMMDAfJE8QT whMT5hMGwwITBgMCDhLFEw8SE8ISBgIDwhIDEsMGB9MDxwwHxRPDExPlEwYHAhESAg8CwhMPwhMP xBMPxRIQwgIDAgMCBtMDxwPEDAfDE8IT4RMHwwzCBgLCEhMCDxLIE8MSD8MSwwIQAwIDBgfSDMkD wgPCDAfCExPbEwfGDMIDDAIHERITEhMSwxMPwxMPwxPDEgIDAgMCwwMCBgzREwfHDMYDDMITE9YT B8UMyAMGB8ICBhLDAsYTEhMSExIPwhIHAgcCAwUQAgYRBgfSE8UTB8QMwgMMwhMT0hMHxAzLA8IM BsISDxESExITAw4DxBMSExITwxICBwPCAsMDDMIGB9ITyRMHwwzCExPPEwfDDMkDxQwHwhMGBxIT AhECEwMOAg7DExITDxMPwxIDAgMCBwMCDAYRBgfSE8kTwhPCDMITE8wTB8MMxwPEDMIHxxMGxBLD Ag4DDgIGwg/IEgIDwgIDAgwCEMIGB9ITyRMHDAcMwhMTyhMHwgzGA8MMwgfMEwYHwhLCEAIOAg4C DhDDAhIPxhIFAgXDAgUCEQYH0hPHEwfCDAcPDMITE8gTB8IMxQPDDAfQEwbDEhDEAhAOEA4QwgLG EgcSBhIGBcMCBcIGB9ATB8UMEwfCDA8HDwwHwhMTxhMHwgzEA8MMB9MTBgfCEhADEMICDhAOEMIC EQIDxxIGBwbCAgUCEQYHyxMHxAwHwhMHEwzCEwcPBw8MB8MTE8UTBwzEA8IMB9YTBsQSEAMCA8UC EQIDAgPDEgcSBgfCBgUQAhDCBgfGEwfEDAfGE8INEwzCEw8HwgwHwxPCE8QTBwzDA8IMB9gTBgfE EhACEMYCEQIDAsQSBhLDBsICEALCBgfCEwfDDAfKEwfCDRMHwhPCDAfEE8ITE8MTBwzCA8IMB9oT DBIHwxLDDBEDxQIDAgPDEgYSBgfCBgIQAhAGDAfCEwzDE8MHyRMHwhPCBxMHxRPDExPDEwzCAwwH 3RMGxxICEQPDAgMCA8MSBhIGBwYMBhACEAIGDMMTDBPCB8YTwwfHEwfGE8MTwhPDEwwDDAfeEwYH xxICEQPDAgMCwhIGEgYHBgwGEAIQAsIGB8MTDMYTwwfKEwzGE8MTwhPDE8IMB98TDBLCB8USAgMR xAISB8ISBgcGDAYQBhAGEAYMB8MMB8kTwwfHEwzGE8MTwhPDEwwPwgzfEwYSB8ISB8ISAhECAwID EgcSBwYHBgwGEAYQxgzDD8IHxRPDB8kTBwzGE8MTwhPDEwzDD8QM3BPCBhIGwxIGAhECAwIHBgcG yAzJDxMHzRMHwwwHxxPDE8ITwxMHDMYPxwwH1BMGEgYSBhLLDM4PwwwTDMcTwgfEDAfJE8QTwhMT xBMHwgzLD9sM0w/GDAfDEwzDEwfEDAfLE8YTwxMTxhMHxAztD8gMBgfIE8QMB84TxxPDE8ITyhMH xwzbD8sMEAUMBcIMwgYH1RPKE8UTwxMT0RMH2wwGEAYQBhACBQwFDAUMBgwHBgfWE8sTxRPDExPu EwYMBhAGEAIGDAYMwwYH1xPLE8YTwxMT8BPKBgfYE8wTxhPDExP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhMMAAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD/ /wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8A AAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A //8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAA AP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA /wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCk gICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vw oKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw //vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzA psrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDA wNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICA wMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACA AICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACA gACA//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP////// --0__=lU75fafdUJEF15Lp2lk3YkNMWCIZ9uWblj1YmpeyDp5CLX3ZpJYZwyRL-- From owner-sqr-users@list.iex.net Wed Oct 7 15:48:36 1998 Date: Wed, 7 Oct 1998 15:13:07 CDT From: "C. Willis III" Subject: Re: ? Last Record Phil, The last record is selected when the sql statement processes through the end-select. clark ----Original Message Follows---- Does SQR provide a flag that tells you when it has selected the last record in a select statement? Thanks, Phil ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Wed Oct 7 16:37:43 1998 Date: Wed, 7 Oct 1998 15:34:05 -0600 From: Joanne Szewczuk Subject: Using Group By & Having Criteria in an SQR Hi everyone, I am an extremely new SQR user ( the only training I have is what I recieved in the PeopleSoft SQL/SQR course). I have written a simple SQR but I keep getting the following error message: "The column prefix 'D' does not match with a table name or alias used in the query." I have narrowed it down to the "D" alias used in my Group By and Having criteria in the subquery. This is part of my code: ...WHERE A.EMPLID IN (SELECT D.EMPLID FROM PS_ADM_APPL_DATA D, PS_ADM_APPL_PROG E WHERE D.EMPLID = E.EMPLID AND D.ADM_APPL_NBR = E.ADM_APPL_NBR AND E.PROG_ACTION = 'MATR' AND E.ADM_APPL_NBR <> ' ' AND E.ADMIT_TERM = $TERM GROUP BY D.EMPLID HAVING COUNT(DISTINCT(D.ADM_APPL_NBR)) >= 2) I am using PeopleSoft Student Administration System version 7.0 with SQL Server 6.5. My code does run correctly when run in SQL. Does SQR not support Group By and Having? Help! Thank you in advance. Joanne Szewczuk Edmonton, Alberta, Canada From owner-sqr-users@list.iex.net Wed Oct 7 16:49:06 1998 Date: Wed, 7 Oct 1998 14:16:53 -0700 From: Boris Nadler Subject: Re: ? Last Record Phil, #END-FILE is used for the flat files processing: "The variable #end-file is set to one (1) if end of file occurs on READ. Otherwise it is set to zero (0). Your program should check this variable after each READ command" I'd use BEGIN-SELECT twice : first to get rows count and then to do special frocessing for the last row. Its not very efficient but I'm not aware about system variable or function you can use for the last row processing in SQR. Hope its help. Boris. ( Qualcomm Inc., 619/651-8571 ) At 04:17 PM 10/7/98 -0400, you wrote: > > >I do believe there is a reserved variable called > >#END-FILE > >that is internally kept within the SQR. It is set to 1 if the end of file >occurs. >I have never used it, so I can not help you there. > >Hope it helps, > >Cheers, > >Danny > > > > > > (Embedded > image moved Phil Roell > to file: 10/07/98 03:44 PM > pic25032.pcx) > > > > >Please respond to SQR-USERS@USA.NET > >To: Multiple recipients of list SQR-USERS >cc: (bcc: Daniel Guynes) >Subject: ? Last Record > > > > >Does SQR provide a flag that tells you when it has selected the last record >in a >select statement? > >Thanks, > >Phil > > > > From owner-sqr-users@list.iex.net Wed Oct 7 17:48:17 1998 Date: Wed, 7 Oct 1998 17:25:18 -0400 From: Eric Dimick Eastman Subject: Re: ? Last Record Hello, Here is my $.02 worth. When I have to know in advance when the end of a select is coming up, I simply select 1 row ahead of my processing. So I select the first row, do nothing, select the second, process the first and so on. Then after the "end-select" I process the last row. This has only happened a few times. Why do you want to know when the last row is selected? Often you can do what you want by using negative positions on a print statement (assuming that you are printing a report). Hope this helps, Eric Boris Nadler wrote: > > Phil, > > #END-FILE is used for the flat files processing: > "The variable #end-file is set to one (1) if end of file occurs on READ. > Otherwise it is set to zero (0). Your program should check this variable > after each READ command" > > I'd use BEGIN-SELECT twice : first to get rows count and then to do special > frocessing > for the last row. Its not very efficient but I'm not aware about system > variable or function > you can use for the last row processing in SQR. > > Hope its help. > > Boris. ( Qualcomm Inc., 619/651-8571 ) > > At 04:17 PM 10/7/98 -0400, you wrote: > > > > > >I do believe there is a reserved variable called > > > >#END-FILE > > > >that is internally kept within the SQR. It is set to 1 if the end of file > >occurs. > >I have never used it, so I can not help you there. > > > >Hope it helps, > > > >Cheers, > > > >Danny > > > > > > > > > > > > (Embedded > > image moved Phil Roell > > to file: 10/07/98 03:44 PM > > pic25032.pcx) > > > > > > > > > >Please respond to SQR-USERS@USA.NET > > > >To: Multiple recipients of list SQR-USERS > >cc: (bcc: Daniel Guynes) > >Subject: ? Last Record > > > > > > > > > >Does SQR provide a flag that tells you when it has selected the last record > >in a > >select statement? > > > >Thanks, > > > >Phil > > > > > > > > From owner-sqr-users@list.iex.net Wed Oct 7 18:39:55 1998 Date: Wed, 7 Oct 1998 19:36:28 -0400 From: Tony DeLia Subject: Re: ? Last Record - Control Break Processing Phil, Eric is correct in that you don't need to know how may records are in a SELECT (Or in a flat-file for that matter). This is known as basic Control-Break processing... You test breaks from your MAJOR key down to your MINOR key. When a break occurs your particular Break routine must process all minor break totals before proceeding with its' own totals. Once totals have been printed they must be accumulated forward (into a higher level key if exists) then cleared. One thing you have to remember is don't process on the first break - I usually set my keys to '$' so I know to bypass totals on the first pass. And as Eric pointed out - And this is crucial - Always remember your final total break after the end-select! The final total break should call all lower level breaks so it can produce all totals properly. Below is the structure of Manual Control Break Processing... SQR also provides ON-BREAK commands where they handle the maintenance of your Break Keys - I don't particularly care for them though. ! Manual Control Break Processing.... .. .. do Init-Totals begin-select substr(e.deptid,1,2) &e.region e.deptid e.jobcode e.emplid o.erncd e.hourly_rt .. .. p.name o.oth_hrs o.oth_earns j.wj_natural_glacct j.descr if $r-key <> &e.region do Region-Totals else if $d-key <> &e.deptid do Deptid-Totals else if $j-key <> &e.jobcode do Jobcode-Totals else if $e-key <> &e.emplid do Emplid-Totals else if $o-key <> &o.erncd or #o-key2 <> &e.hourly_rt do Erncd-Totals end-if end-if end-if end-if end-if do Accum-Totals from ps_pay_earnings e, ps_pay_oth_earns o, ps_personal_data p, ps_jobcode_tbl j where ........ order by e.deptid asc, e.jobcode asc, e.emplid asc, o.erncd asc, e.hourly_rt asc, e.pay_end_dt asc end-select do Final-Totals .. .. .. ! Sample Break (All should have same structure) begin-procedure Deptid-Totals do Jobcode-Totals if $d-key <> '$' print #d-tot ( 0, 99, 0 ) edit 999999999.99 let #r-tot = #r-tot + #d-tot let #d-tot = 0 end-if let $d-key = &e.deptid do Get-Dept end-procedure .. .. Hope that helps in someway.... Tony DeLia -------------------------------------------------------------------------------------------------- Eric Dimick Eastman wrote: > > Hello, > > Here is my $.02 worth. When I have to know in advance when the end of a > select is coming up, I simply select 1 row ahead of my processing. So I > select the first row, do nothing, select the second, process the first > and so on. Then after the "end-select" I process the last row. This > has only happened a few times. > > Why do you want to know when the last row is selected? > > Often you can do what you want by using negative positions on a print > statement (assuming that you are printing a report). > > Hope this helps, > Eric > > Boris Nadler wrote: > > > > Phil, > > > > #END-FILE is used for the flat files processing: > > "The variable #end-file is set to one (1) if end of file occurs on READ. > > Otherwise it is set to zero (0). Your program should check this variable > > after each READ command" > > > > I'd use BEGIN-SELECT twice : first to get rows count and then to do special > > frocessing > > for the last row. Its not very efficient but I'm not aware about system > > variable or function > > you can use for the last row processing in SQR. > > > > Hope its help. > > > > Boris. ( Qualcomm Inc., 619/651-8571 ) > > > > At 04:17 PM 10/7/98 -0400, you wrote: > > > > > > > > >I do believe there is a reserved variable called > > > > > >#END-FILE > > > > > >that is internally kept within the SQR. It is set to 1 if the end of file > > >occurs. > > >I have never used it, so I can not help you there. > > > > > >Hope it helps, > > > > > >Cheers, > > > > > >Danny > > > > > > > > > > > > > > > > > > (Embedded > > > image moved Phil Roell > > > to file: 10/07/98 03:44 PM > > > pic25032.pcx) > > > > > > > > > > > > > > >Please respond to SQR-USERS@USA.NET > > > > > >To: Multiple recipients of list SQR-USERS > > >cc: (bcc: Daniel Guynes) > > >Subject: ? Last Record > > > > > > > > > > > > > > >Does SQR provide a flag that tells you when it has selected the last record > > >in a > > >select statement? > > > > > >Thanks, > > > > > >Phil > > > > > > > > > > > > -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Wed Oct 7 20:33:17 1998 Date: Wed, 7 Oct 1998 21:25:39 -0400 From: raghuramc Subject: Un-subscribe raghuramc@mastech.com This is a multi-part message in MIME format. --------------76B9B4F789BE770E6EB8DDCB Content-Type: text/plain; charset=x-user-defined Content-Transfer-Encoding: 7bit Un-subscribe raghuramc@mastech.com --------------76B9B4F789BE770E6EB8DDCB Content-Type: text/x-vcard; charset=x-user-defined; name="vcard.vcf" Content-Transfer-Encoding: 7bit Content-Description: Card for Raghuram Chittari Content-Disposition: attachment; filename="vcard.vcf" begin: vcard fn: Raghuram Chittari n: Chittari;Raghuram org: Mastech email;internet: raghuramc@mastech.com title: PeopleSoft Consultant tel;work: 1-800-311-1970 x-mozilla-cpt: ;0 x-mozilla-html: FALSE version: 2.1 end: vcard --------------76B9B4F789BE770E6EB8DDCB-- From owner-sqr-users@list.iex.net Wed Oct 7 21:01:42 1998 Date: Wed, 7 Oct 1998 21:43:51 -0400 From: "Matthew F. Reagan" Subject: Re: Sending E-mail from SQR... Alok, I have been doing some research on that very issue (sending e-mail from SQR) and have found two products that are available to let you do this. They are: BatMail by On3 You can find information on it at http://www.on3.com/tools/nt/mailexe/ You can buy it as an executable command line program or as a dll. I have been testing it as an executable. It takes a configuration file and a message file as the required parameters and supports a single attachment that will be MIME encoded automatically. The configuration file contains items like what should be on the FROM line, the SUBJECT line, the REPLYTO line (if different from the FROM line), the name or IP address of the SMTP relay, an optional file that specifies the BCC list, etc. It costs $99 per "server". It says NT, but I've been using it successfully on Win 95. My SQR program builds the appropriate files and FTPs them to a drop box. Its part of a central report generation and distribution system I'm building to support report requests from Win '95 GUI tools that run on a central server, and are distributed through an FTP drop box monitored by a PERL script that does the actual invocation. Anyone attempting this another way? The second option is SPIMail by AJSoftware You can find information onn it at http://www.ajsoftware.com/SPIMail.htm. It uses a similar command line interface, but permits command line switches to specify the parameters in addition to supporting a configuration file. It costs $19 a user, $100 for an unrestricted license, or $300 for the source code. I have not tested the second option (yet). I also have an intrepid PERL programmer who is attempting to implement a direct SMTP link without relying on third party products. If he does that successfully, I'd be more than happy to post the results. Let me know if you find any other options. Matt... At 12:02 AM 10/7/98 +1800, you wrote: >Date: Tue, 6 Oct 1998 10:39:44 -0400 >From: "Kulshrestha, Alok" >Subject: Sending E-mail from SQR... > >SQR Version : 3.0.18.0 >Database : Oracle 7.3 >Platform : Windows95 > >I have a requirement where I need to send e-mail notification, once my >program has finished. I use Outlook as my E-mail application. Is there >anyway to send e-mail from SQR when running on windows 95. > >Any help will be appreciated. > >Thanks. >-alok Kulshrestha > Matthew F. Reagan * Strategic Technical Consulting, Inc. mreagan@fast.net * Certified Oracle DBA/Certified SQR Instructor From owner-sqr-users@list.iex.net Wed Oct 7 21:54:39 1998 Date: Wed, 7 Oct 1998 21:43:51 -0400 From: "Matthew F. Reagan" Subject: Re: Sending E-mail from SQR... Alok, I have been doing some research on that very issue (sending e-mail from SQR) and have found two products that are available to let you do this. They are: BatMail by On3 You can find information on it at http://www.on3.com/tools/nt/mailexe/ You can buy it as an executable command line program or as a dll. I have been testing it as an executable. It takes a configuration file and a message file as the required parameters and supports a single attachment that will be MIME encoded automatically. The configuration file contains items like what should be on the FROM line, the SUBJECT line, the REPLYTO line (if different from the FROM line), the name or IP address of the SMTP relay, an optional file that specifies the BCC list, etc. It costs $99 per "server". It says NT, but I've been using it successfully on Win 95. My SQR program builds the appropriate files and FTPs them to a drop box. Its part of a central report generation and distribution system I'm building to support report requests from Win '95 GUI tools that run on a central server, and are distributed through an FTP drop box monitored by a PERL script that does the actual invocation. Anyone attempting this another way? The second option is SPIMail by AJSoftware You can find information onn it at http://www.ajsoftware.com/SPIMail.htm. It uses a similar command line interface, but permits command line switches to specify the parameters in addition to supporting a configuration file. It costs $19 a user, $100 for an unrestricted license, or $300 for the source code. I have not tested the second option (yet). I also have an intrepid PERL programmer who is attempting to implement a direct SMTP link without relying on third party products. If he does that successfully, I'd be more than happy to post the results. Let me know if you find any other options. Matt... At 12:02 AM 10/7/98 +1800, you wrote: >Date: Tue, 6 Oct 1998 10:39:44 -0400 >From: "Kulshrestha, Alok" >Subject: Sending E-mail from SQR... > >SQR Version : 3.0.18.0 >Database : Oracle 7.3 >Platform : Windows95 > >I have a requirement where I need to send e-mail notification, once my >program has finished. I use Outlook as my E-mail application. Is there >anyway to send e-mail from SQR when running on windows 95. > >Any help will be appreciated. > >Thanks. >-alok Kulshrestha > Matthew F. Reagan * Strategic Technical Consulting, Inc. mreagan@fast.net * Certified Oracle DBA/Certified SQR Instructor From owner-sqr-users@list.iex.net Wed Oct 7 22:27:09 1998 Date: Thu, 8 Oct 1998 09:54:00 +0900 From: Pichet Ratanayant Subject: Upgrade to SQR 4.3.2 Hi All, I used SQR Workbench 2.5.7 on HP-UX 10.01, Oracle 7.1.4 and AVALON 9.2.0.2. I need to upgrade my system to HP-UX 10.20, Oracle 7.3.4 for Y2K project. I have some question as follow, 1. If I upgrade to SQR Server 4.3.2, Are source code of SQR Workbench 2.5.7 compatible with SQR Server 4.3.2 ?. 2. If No, What are need to modify ?. 3. How much for upgrade SQR Workbench 2.5.7 to SQR Server 4.3.2 ? Look forward to hearing from you soon. Pichet R. From owner-sqr-users@list.iex.net Thu Oct 8 03:26:36 1998 Date: Thu, 8 Oct 1998 18:24:35 +1000 From: Adrian Clayfield Subject: Re: Problem with Union & Union Vs Array This is a multi-part message in MIME format. ------=_NextPart_000_00EB_01BDF2E8.E6E2F550 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi all, Thanks for the responses. Between them Ive got a working solution. The reason I need a Union is to accumulate different totals and move = them to different areas on the report depending on their account ranges. = begin-SELECT ON-ERROR=3DSQL-Error 'X' &PROJECT_ID if &PROJECT_ID <> $old-Project-id print &PROJECT_ID (#pline,+1,6) on-break = after=3DPrint-Headings-and-Totals = save=3D$old-Project-id =20 end-if 'A' &TYPE 0 &AMT1 0 &AMT2 =20 Do Accumulate-Balances Do Process-Journals FROM PS_LEDGER UNION SELECT PROJECT_ID, =20 'B', =20 SUM(POSTED_TOTAL_AMT), =20 SUM(ENCUMBERED_AMOUNT) =20 FROM PS_LEDGER=20 WHERE BUSINESS_UNIT =3D 'UNSYD' AND DEPTID =3D $deptid=20 AND ACCOUNTING_PERIOD =3D #ACCOUNT_PERIOD =20 AND (ACCOUNT BETWEEN $first-cfwd-account=20 AND $last-cfwd-account) AND FISCAL_YEAR =3D #SELECT_FISCAL_YEAR AND STATISTICS_CODE =3D ' ' UNION SELECT PROJECT_ID, =20 'C', SUM(POSTED_TOTAL_AMT), =20 SUM(ENCUMBERED_AMOUNT) FROM PS_LEDGER=20 WHERE BUSINESS_UNIT =3D 'UNSYD' AND DEPTID =3D $deptid=20 AND ACCOUNTING_PERIOD =3D #ACCOUNT_PERIOD =20 AND (ACCOUNT BETWEEN $first-opengrant-account AND $last-opengrant-account) AND FISCAL_YEAR =3D #SELECT_FISCAL_YEAR AND STATISTICS_CODE =3D ' ' UNION SELECT PROJECT_ID, =20 'D', SUM(POSTED_TOTAL_AMT), =20 SUM(ENCUMBERED_AMOUNT) FROM PS_LEDGER=20 WHERE BUSINESS_UNIT =3D 'UNSYD' AND DEPTID =3D $deptid=20 AND ACCOUNTING_PERIOD =3D #ACCOUNT_PERIOD =20 AND (ACCOUNT BETWEEN $first-openother-account AND $last-openother-account) AND FISCAL_YEAR =3D #SELECT_FISCAL_YEAR AND STATISTICS_CODE =3D ' ' =20 UNION SELECT PROJECT_ID, =20 'E', SUM(POSTED_TOTAL_AMT), =20 SUM(ENCUMBERED_AMOUNT) FROM PS_LEDGER=20 WHERE BUSINESS_UNIT =3D 'UNSYD' AND DEPTID =3D $deptid=20 AND ACCOUNTING_PERIOD =3D #ACCOUNT_PERIOD =20 AND (ACCOUNT BETWEEN $first-expense-account AND $last-expense-account) AND FISCAL_YEAR =3D #SELECT_FISCAL_YEAR AND STATISTICS_CODE =3D ' ' =20 =20 ORDER BY 1,2 end-SELECT ie: all the SQR stuff is done in the first "dummy" join and the &TYPE = variable is used to process the different amounts. Regards Adrian =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Integrated Business Technologies Pty Ltd Level 11 55 Hunter St Sydney 2000 Mobile: 0413 115580 Fax: 61 2 9223 4384 Email: adclay@ibt.com.au =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ------=_NextPart_000_00EB_01BDF2E8.E6E2F550 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi all,
Thanks for the = responses.=20 Between them Ive got a working solution.
The reason I need a Union is to accumulate different = totals=20 and move them to different areas on the report depending on their = account=20 ranges.
 
begin-SELECT = ON-ERROR=3DSQL-Error
 
'X'       =20 &PROJECT_ID
   if &PROJECT_ID <>=20 $old-Project-id
     print  = &PROJECT_ID    (#pline,+1,6)  on-break=20 after=3DPrint-Headings-and-Totals
      =             &= nbsp;           &n= bsp;           &nb= sp;           &nbs= p;            = ;    =20 save=3D$old-Project-id        &nb= sp;           &nbs= p;   =20
   end-if
'A'        = &TYPE
0         =20 &AMT1
0         =20 &AMT2
 
   Do Accumulate-Balances
 
   Do = Process-Journals
 
 FROM PS_LEDGER
 
 UNION
 SELECT
 PROJECT_ID,  &nbs= p;       =20
 'B',     =
 SUM(POSTED_TOTAL_AMT), =20
 SUM(ENCUMBERED_AMOUNT) 
 FROM PS_LEDGER =
 WHERE=20 BUSINESS_UNIT =3D 'UNSYD'
  AND=20 DEPTID        =3D $deptid
  = AND=20 ACCOUNTING_PERIOD =3D #ACCOUNT_PERIOD 
  AND (ACCOUNT = BETWEEN=20 $first-cfwd-account=20
           &nb= sp;         =20 AND $last-cfwd-account)
  AND FISCAL_YEAR   =3D=20 #SELECT_FISCAL_YEAR
  AND STATISTICS_CODE =3D ' '
 
 UNION
  = SELECT
  =20 PROJECT_ID,          &n= bsp;    =20
   'C',
   SUM(POSTED_TOTAL_AMT), =20
   SUM(ENCUMBERED_AMOUNT)
    FROM = PS_LEDGER=20
    WHERE BUSINESS_UNIT =3D=20 'UNSYD'
      AND=20 DEPTID        =3D $deptid=20
      AND ACCOUNTING_PERIOD =3D = #ACCOUNT_PERIOD =20
      AND (ACCOUNT BETWEEN=20 $first-opengrant-account
       &nb= sp;           &nbs= p;  =20 AND $last-opengrant-account)
      AND=20 FISCAL_YEAR   =3D = #SELECT_FISCAL_YEAR
     =20 AND STATISTICS_CODE =3D ' '
 UNION
  = SELECT
  =20 PROJECT_ID,          &n= bsp;    =20
   'D',
   SUM(POSTED_TOTAL_AMT), =20
   SUM(ENCUMBERED_AMOUNT)
    FROM = PS_LEDGER=20
    WHERE BUSINESS_UNIT =3D=20 'UNSYD'
      AND=20 DEPTID        =3D $deptid=20
      AND ACCOUNTING_PERIOD =3D = #ACCOUNT_PERIOD =20
      AND (ACCOUNT BETWEEN=20 $first-openother-account
       &nb= sp;           &nbs= p;  =20 AND $last-openother-account)
      AND=20 FISCAL_YEAR   =3D = #SELECT_FISCAL_YEAR
     =20 AND STATISTICS_CODE =3D ' '  
 UNION
 =20 SELECT
  =20 PROJECT_ID,          &n= bsp;    =20
   'E',
   SUM(POSTED_TOTAL_AMT), =20
   SUM(ENCUMBERED_AMOUNT)
    FROM = PS_LEDGER=20
    WHERE BUSINESS_UNIT =3D=20 'UNSYD'
      AND=20 DEPTID        =3D $deptid=20
      AND ACCOUNTING_PERIOD =3D = #ACCOUNT_PERIOD =20
      AND (ACCOUNT BETWEEN=20 $first-expense-account
        = ;            =   =20 AND $last-expense-account)
      AND=20 FISCAL_YEAR   =3D = #SELECT_FISCAL_YEAR
     =20 AND STATISTICS_CODE =3D ' '  
 
  ORDER BY=20 1,2
 

end-SEL
ECT
 
ie: all the SQR stuff is done in the = first=20 "dummy" join and the &TYPE variable is used to process the = different amounts.
 
Regards
Adrian
 
 
 
 
 
 
 
 
 
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
Integrated=20 Business Technologies Pty Ltd
Level 11   55 Hunter St = Sydney =20 2000
Mobile: 0413 115580    Fax: 61 2 9223=20 4384
Email:  adclay@ibt.com.au
=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 
 
------=_NextPart_000_00EB_01BDF2E8.E6E2F550-- From owner-sqr-users@list.iex.net Thu Oct 8 08:41:12 1998 Date: Thu, 8 Oct 1998 09:32:52 -0400 From: GINO SANTERRE Subject: SQR Performance evaluation Can we put a trace or something like that in an Sqr to know in detail the time of each query and where is the time consuming? Gino Santerre Le Groupe QuebecTel From owner-sqr-users@list.iex.net Thu Oct 8 09:08:18 1998 Date: Thu, 8 Oct 1998 22:02:19 -0400 From: David Dawes Stanley Subject: Re: SQR Performance evaluation Yea, I use a procedure called EVENT_TRACE with this SQL code BEGIN-SQL ALTER SESSION SET SQL_TRACE TRUE END-SQL This procedure can be set to run in debug mode or the call to this procedure can be commented out until needed. I'm running on an Alpha under Open VMS, so I end up with a [somename].TRC file. I execute the following from the command line: $TKPROF ________.TRC TEMP.LIS EXPLAIN=[USERNAME/PASSWORD] you can then use your editor to look at the data. > -----Original Message----- > From: Discussion of SQR, SQRIBE Technologies's database reporting > language [mailto:SQR-USERS@list.iex.net]On Behalf Of GINO SANTERRE > Sent: Thursday, October 08, 1998 9:33 AM > To: Multiple recipients of list SQR-USERS > Subject: SQR Performance evaluation > > > Can we put a trace or something like that in an Sqr to know in detail the > time of each query and where is the time consuming? > > Gino Santerre > Le Groupe QuebecTel > From owner-sqr-users@list.iex.net Thu Oct 8 09:08:47 1998 Date: Thu, 8 Oct 1998 10:12:18 -0400 From: Daniel Guynes Subject: Re: SQR Performance evaluation --0__=Sl21KbABrhVCrpSPFD23k2FRhGrxb54XvmhRTUHZYTSwwSnQbUmwqXUu Content-type: text/plain; charset=us-ascii Content-Disposition: inline What I do ... is actually set a display statement before and after each "questionable" process ... and display the current time. As a result your log file should have a list of the time it took for each process you put display statements on. However, you can also do a SQR trace within Peoplesoft (if that is what you are using). The output is a ton of lines of meaningless things ... but one column in particular is of interest ... it is 'Dur = xxxx' (I think it is Dur ... can't remember). The Dur translates into seconds I think, or some fraction of time ... I think it may be platform specific. Anywa, this could help as well. Hope this helps, Danny (Embedded image moved GINO SANTERRE to file: 10/08/98 09:32 AM pic03625.pcx) Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: Daniel Guynes) Subject: SQR Performance evaluation Can we put a trace or something like that in an Sqr to know in detail the time of each query and where is the time consuming? Gino Santerre Le Groupe QuebecTel --0__=Sl21KbABrhVCrpSPFD23k2FRhGrxb54XvmhRTUHZYTSwwSnQbUmwqXUu Content-type: application/octet-stream; name="pic03625.pcx" Content-Disposition: attachment; filename="pic03625.pcx" Content-transfer-encoding: base64 CgUBCAAAAABoACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAABaQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAD1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sT zRPHE8MTwhPwEwzIBgzYE8wTxhPDE8IT7hPOBtcTzBPGE8MTE+wTwgbCBwbCEgbCEgbCEsUG1hPL E8YTwxMT6hMMwgYHwgLCAwISwgfEEsMCwwbVE8sTxRPDExPpE8MGAwcCBwMCwhLDB8ISwgISwgLD BtUTyhPFE8MTE+gTwgIHA8ICEw4DDgLDE8USwwLCEMIG1BPKE8UTwxMT5xMCAwcDAg4TDgITwgIS D8ISD8ISBRICEcICwwbUE8oTxRPCExPmEwYCBwMCDgIOwgLDExITEhPCEg8GxgLDBtMMDAfJE8QT whMT5hMGwwITBgMCDhLFEw8SE8ISBgIDwhIDEsMGB9MDxwwHxRPDExPlEwYHAhESAg8CwhMPwhMP xBMPxRIQwgIDAgMCBtMDxwPEDAfDE8IT4RMHwwzCBgLCEhMCDxLIE8MSD8MSwwIQAwIDBgfSDMkD wgPCDAfCExPbEwfGDMIDDAIHERITEhMSwxMPwxMPwxPDEgIDAgMCwwMCBgzREwfHDMYDDMITE9YT B8UMyAMGB8ICBhLDAsYTEhMSExIPwhIHAgcCAwUQAgYRBgfSE8UTB8QMwgMMwhMT0hMHxAzLA8IM BsISDxESExITAw4DxBMSExITwxICBwPCAsMDDMIGB9ITyRMHwwzCExPPEwfDDMkDxQwHwhMGBxIT AhECEwMOAg7DExITDxMPwxIDAgMCBwMCDAYRBgfSE8kTwhPCDMITE8wTB8MMxwPEDMIHxxMGxBLD Ag4DDgIGwg/IEgIDwgIDAgwCEMIGB9ITyRMHDAcMwhMTyhMHwgzGA8MMwgfMEwYHwhLCEAIOAg4C DhDDAhIPxhIFAgXDAgUCEQYH0hPHEwfCDAcPDMITE8gTB8IMxQPDDAfQEwbDEhDEAhAOEA4QwgLG EgcSBhIGBcMCBcIGB9ATB8UMEwfCDA8HDwwHwhMTxhMHwgzEA8MMB9MTBgfCEhADEMICDhAOEMIC EQIDxxIGBwbCAgUCEQYHyxMHxAwHwhMHEwzCEwcPBw8MB8MTE8UTBwzEA8IMB9YTBsQSEAMCA8UC EQIDAgPDEgcSBgfCBgUQAhDCBgfGEwfEDAfGE8INEwzCEw8HwgwHwxPCE8QTBwzDA8IMB9gTBgfE EhACEMYCEQIDAsQSBhLDBsICEALCBgfCEwfDDAfKEwfCDRMHwhPCDAfEE8ITE8MTBwzCA8IMB9oT DBIHwxLDDBEDxQIDAgPDEgYSBgfCBgIQAhAGDAfCEwzDE8MHyRMHwhPCBxMHxRPDExPDEwzCAwwH 3RMGxxICEQPDAgMCA8MSBhIGBwYMBhACEAIGDMMTDBPCB8YTwwfHEwfGE8MTwhPDEwwDDAfeEwYH xxICEQPDAgMCwhIGEgYHBgwGEAIQAsIGB8MTDMYTwwfKEwzGE8MTwhPDE8IMB98TDBLCB8USAgMR xAISB8ISBgcGDAYQBhAGEAYMB8MMB8kTwwfHEwzGE8MTwhPDEwwPwgzfEwYSB8ISB8ISAhECAwID EgcSBwYHBgwGEAYQxgzDD8IHxRPDB8kTBwzGE8MTwhPDEwzDD8QM3BPCBhIGwxIGAhECAwIHBgcG yAzJDxMHzRMHwwwHxxPDE8ITwxMHDMYPxwwH1BMGEgYSBhLLDM4PwwwTDMcTwgfEDAfJE8QTwhMT xBMHwgzLD9sM0w/GDAfDEwzDEwfEDAfLE8YTwxMTxhMHxAztD8gMBgfIE8QMB84TxxPDE8ITyhMH xwzbD8sMEAUMBcIMwgYH1RPKE8UTwxMT0RMH2wwGEAYQBhACBQwFDAUMBgwHBgfWE8sTxRPDExPu EwYMBhAGEAIGDAYMwwYH1xPLE8YTwxMT8BPKBgfYE8wTxhPDExP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhMMAAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD/ /wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8A AAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A //8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAA AP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA /wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCk gICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vw oKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw //vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzA psrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDA wNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICA wMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACA AICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACA gACA//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP////// --0__=Sl21KbABrhVCrpSPFD23k2FRhGrxb54XvmhRTUHZYTSwwSnQbUmwqXUu-- From owner-sqr-users@list.iex.net Thu Oct 8 09:45:45 1998 Date: Thu, 8 Oct 1998 09:42:09 -0400 From: "Wanko, Christopher G, CFCTRCFFIN" Subject: Re: Inserting Large Amounts of Data > I utilize several LOAD-LOOKUPS for basic data retrieval. > Read the input file (txt) and massage basic variables. I then need to > determine if row already exists in target table (PS_JOB). Input file has > employee's SSN and not their EMPLID so I need to join PS_PERSONAL_DATA with PS_JOB > to determine if row already exists. Stop doing everything in the database. Large data center ops take this approach: dump both tables; merge both flat files; sort unique based on the data you want; strip out the excess records from PS_PERSONAL_DATA (or grep out the PS_JOB rows); load the data using your scrubbed file. A batch job using database-only might take about 2 hours to do 40 million rows in one of my environments. After using SyncSort to scrub the rows for redundant data, the process ran in 20 minutes. You can do more processing outside of your SQR-database logic than you think. Flat-file processing with a heavyweight sort utility is always faster. -Chris From owner-sqr-users@list.iex.net Thu Oct 8 10:56:37 1998 Date: Thu, 8 Oct 1998 10:15:56 -0400 From: Ngo Bao Chau Subject: Re: SQR Performance evaluation ------ =_NextPart_000_01BDF2A4.A6E621A0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit HI David If I using peoplesoft with SQR, and my server is NT or Unix does it work the same. Merci Ngo Baochau baochaun@mail.transcontinental.ca tel: 335 - 1466/4943 http:\\www.transcontinental.ca -----Original Message----- From: David Dawes Stanley [SMTP:stanledd@SNYONEVA.CC.ONEONTA.EDU] Sent: Thursday, October 08, 1998 10:02 PM To: Multiple recipients of list SQR-USERS Subject: Re: SQR Performance evaluation Yea, I use a procedure called EVENT_TRACE with this SQL code BEGIN-SQL ALTER SESSION SET SQL_TRACE TRUE END-SQL This procedure can be set to run in debug mode or the call to this procedure can be commented out until needed. I'm running on an Alpha under Open VMS, so I end up with a [somename].TRC file. I execute the following from the command line: $TKPROF ________.TRC TEMP.LIS EXPLAIN=[USERNAME/PASSWORD] you can then use your editor to look at the data. > -----Original Message----- > From: Discussion of SQR, SQRIBE Technologies's database reporting > language [mailto:SQR-USERS@list.iex.net]On Behalf Of GINO SANTERRE > Sent: Thursday, October 08, 1998 9:33 AM > To: Multiple recipients of list SQR-USERS > Subject: SQR Performance evaluation > > > Can we put a trace or something like that in an Sqr to know in detail the > time of each query and where is the time consuming? > > Gino Santerre > Le Groupe QuebecTel ------ =_NextPart_000_01BDF2A4.A6E621A0 Content-Type: application/ms-tnef Content-Transfer-Encoding: base64 eJ8+IgIOAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQ2ABAACAAAAAgACAAEEkAYAkAEAAAEAAAAQAAAAAwAAMAIAAAAL AA8OAAAAAAIB/w8BAAAAQQAAAAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAAFNRUi1VU0VSU0BVU0Eu TkVUAFNNVFAAU1FSLVVTRVJTQFVTQS5ORVQAAAAAHgACMAEAAAAFAAAAU01UUAAAAAAeAAMwAQAA ABIAAABTUVItVVNFUlNAVVNBLk5FVAAAAAMAFQwBAAAAAwD+DwYAAAAeAAEwAQAAABQAAAAnU1FS LVVTRVJTQFVTQS5ORVQnAAIBCzABAAAAFwAAAFNNVFA6U1FSLVVTRVJTQFVTQS5ORVQAAAMAADkA AAAACwBAOgEAAAAeAPZfAQAAABIAAABTUVItVVNFUlNAVVNBLk5FVAAAAAIB918BAAAAQQAAAAAA AACBKx+kvqMQGZ1uAN0BD1QCAAAAAFNRUi1VU0VSU0BVU0EuTkVUAFNNVFAAU1FSLVVTRVJTQFVT QS5ORVQAAAAAAwD9XwEAAAADAP9fAAAAAAIB9g8BAAAABAAAAAAAAALhQwEEgAEAHwAAAFJFOiBT UVIgUGVyZm9ybWFuY2UgZXZhbHVhdGlvbgDRCgEFgAMADgAAAM4HCgAIAAoADwA4AAQAPAEBIIAD AA4AAADOBwoACAAKAA4AJAAEACcBAQmAAQAhAAAAQkJFMjJCOUE4RTVFRDIxMUI2RDgwMDYwQjBD M0UxQkUAVwcBA5AGAHQIAAAhAAAACwACAAEAAAALACMAAAAAAAMAJgAAAAAACwApAAAAAAADAC4A AAAAAAMANgAAAAAAQAA5AADpbirG8r0BHgBwAAEAAAAfAAAAUkU6IFNRUiBQZXJmb3JtYW5jZSBl dmFsdWF0aW9uAAACAXEAAQAAABYAAAABvfLGKl6aK+K8Xo4R0rbYAGCww+G+AAAeAB4MAQAAAAUA AABTTVRQAAAAAB4AHwwBAAAAIgAAAGJhb2NoYXVuQG1haWwudHJhbnNjb250aW5lbnRhbC5jYQAA AAMABhDZ35UoAwAHEDMEAAAeAAgQAQAAAGUAAABISURBVklESUZJVVNJTkdQRU9QTEVTT0ZUV0lU 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 RTogAAAAAAMADTT9NwAA+C8= ------ =_NextPart_000_01BDF2A4.A6E621A0-- From owner-sqr-users@list.iex.net Thu Oct 8 11:08:34 1998 Date: Thu, 8 Oct 1998 12:04:50 -0400 From: Helen Moore Subject: Dos Window In an SQR I am using the CALL System function. It runs an executable that downloads fonts to my printer every time the SQR runs. Is there any way that the SQR can close the DOS window when the DOS command has finished? This is my .bat file (that does not exit after it is done) The user has to close the window. The fonts do get downloaded. c:\temp\sqrfonts\fload.exe c:\temp\sqrfonts\dload.dat exit Helen Helen Moore Senior Programmer Analyst IT/IIS James Madison University From owner-sqr-users@list.iex.net Thu Oct 8 11:35:44 1998 Date: Thu, 8 Oct 1998 12:25:01 -0400 From: "Campbell, Andrew" Subject: Re: Dos Window Set WIndow properties to close on exit (check box in "program" tab) -----Original Message----- From: Helen Moore [mailto:moorehh@JMU.EDU] Sent: Thursday, October 08, 1998 12:05 PM To: Multiple recipients of list SQR-USERS Subject: Dos Window In an SQR I am using the CALL System function. It runs an executable that downloads fonts to my printer every time the SQR runs. Is there any way that the SQR can close the DOS window when the DOS command has finished? This is my .bat file (that does not exit after it is done) The user has to close the window. The fonts do get downloaded. c:\temp\sqrfonts\fload.exe c:\temp\sqrfonts\dload.dat exit Helen Helen Moore Senior Programmer Analyst IT/IIS James Madison University From owner-sqr-users@list.iex.net Thu Oct 8 12:09:35 1998 Date: Fri, 9 Oct 1998 00:28:27 -0400 From: David Dawes Stanley Subject: Re: SQR Performance evaluation This is a multi-part message in MIME format. ------=_NextPart_000_0009_01BDF31B.BBD7F1C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit I'm not a peoplesoft person, so don't really know. I program in the SCT BANNER software circle. Maybe some peoplesoft people could respond to this. I don't think it should matter. We are not currently developing on these platforms(NT/UNIX). Anyway, this is an Oracle tool(should have mentioned this earlier), but I'm sure that other databases must have similair tools.You should consult your DBA on how to use trace on NT or UNIX. Some DBAs restrict this type of access to their developers.I don't have this problem scince I assist in DBA work. > -----Original Message----- > From: Discussion of SQR, SQRIBE Technologies's database reporting > language [mailto:baochaun@mail.transcontinental.ca] On Behalf Of > Ngo Bao Chau > Sent: Thursday, October 08, 1998 10:16 AM > To: 'SQR-USERS@USA.NET' > Subject: RE: SQR Performance evaluation > > HI David > > If I using peoplesoft with SQR, and my server is NT or Unix > does it work the same. > > Merci > > Ngo Baochau > baochaun@mail.transcontinental.ca > tel: 335 - 1466/4943 > http:\\www.transcontinental.ca > > -----Original Message----- > From: David Dawes Stanley [SMTP:stanledd@SNYONEVA.CC.ONEONTA.EDU] > Sent: Thursday, October 08, 1998 10:02 PM > To: Multiple recipients of list SQR-USERS > Subject: Re: SQR Performance evaluation > > Yea, > I use a procedure called EVENT_TRACE with this SQL code > BEGIN-SQL > ALTER SESSION SET SQL_TRACE TRUE > END-SQL > > This procedure can be set to run in debug mode or the call to this > procedure can be commented out until needed. I'm running on an Alpha under > Open VMS, so I end up with a [somename].TRC file. I execute the following > from the command line: > $TKPROF ________.TRC TEMP.LIS EXPLAIN=[USERNAME/PASSWORD] > you can then use your editor to look at the data. > > > -----Original Message----- > > From: Discussion of SQR, SQRIBE Technologies's database reporting > > language [mailto:SQR-USERS@list.iex.net]On Behalf Of GINO SANTERRE > > Sent: Thursday, October 08, 1998 9:33 AM > > To: Multiple recipients of list SQR-USERS > > Subject: SQR Performance evaluation > > > > > > Can we put a trace or something like that in an Sqr to know in > detail the > > time of each query and where is the time consuming? > > > > Gino Santerre > > Le Groupe QuebecTel > > ------=_NextPart_000_0009_01BDF31B.BBD7F1C0 Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="winmail.dat" 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 ------=_NextPart_000_0009_01BDF31B.BBD7F1C0-- From owner-sqr-users@list.iex.net Thu Oct 8 12:14:00 1998 Date: Thu, 8 Oct 1998 13:05:33 -0500 From: David Anderson Subject: Re: Inserting Large Amounts of Data -Reply Agreed, but if there is a requirement to adjust/manipulate the data in the flat file prior to loading into tables/records then I don't think your solution would be applicable. Also, if each row from the input file requires verification against rows in the database I don't think your solution is feasible. From owner-sqr-users@list.iex.net Thu Oct 8 12:23:05 1998 Date: Thu, 8 Oct 1998 13:17:51 -0500 From: David Anderson Subject: Large Amounts of Data The original problem was that we were trying to load 80K rows from flat file into PS_JOB (conversion). For the conversion I had to ensure (insure?) the employee was not holding a concurrent job and the row was not duplicating a date. To do this I had to read what was already in JOB. The catch... the flat file did not contain the employee's emplid thus eliminating the easy select from PS_JOB. The initial workaround was joining JOB to PERSONAL_DATA via EMPLID and utilizing PERSONAL_DATA.SSN as the search (after indexing SSN on PERSONAL_DATA, of course). Things were looking good, but alas the job ran for 20 hours and this was not good. Don't despair! Using SQR's LOAD LOOKUP TABLE allows quick access to data. LOAD LOOKUP creates a two column array once (yes, once) which is indexed on the first column. In this case I load PERSONAL_DATA.SSN as the index and EMPLID as the return value. Voila! I now have cross reference of SSN and EMPLID without any Oracle/SQL hits to the DB. This eliminated the need for the join. Result... cue the music... the job ran in 35 minutes. NICE performance boost. Thanks to everyone who responded... Dave From owner-sqr-users@list.iex.net Thu Oct 8 13:04:06 1998 Date: Thu, 8 Oct 1998 11:18:00 -0500 From: Krishnan Sarangarajan Subject: Dos Window - Suggestions Hi Helen! > Is there any way that the SQR can close the DOS window when the DOS > command has finished? With regards to your question, I have a solution but I am not sure if it would be a feasible one for you. I have written a report that creates a batch program by placing necessary DOS commands in it. The first line on my report is "@echo off". Once I have built the batch program, I call it from my SQR and it runs and then exits gracefully. Once I am done with the batch program, I delete it and move on. This process leaves a lot to be desired. Though an extra step as far as having to run a batch program for the purposes of downloading the fonts, it may just meet your needs. I hope this is of some help. Please let me know if you would like more information. Have a good day. Krishnan Sarangarajan ksaranga@ruan.com Ruan Transportation 3200 Ruan Center (DSM 6th Floor) Des Moines, IA 50309 [O] (515) 245-5655 [F] (515) 247-2065 From owner-sqr-users@list.iex.net Thu Oct 8 13:18:31 1998 Date: Thu, 8 Oct 1998 13:07:45 -0500 From: David Anderson Subject: Re: Inserting Large Amounts of Data -Reply The original problem was that we were trying to load 80K rows from flat file into PS_JOB (conversion). For the conversion I had to ensure (insure?) the employee was not holding a concurrent job and the row was not duplicating a date. To do this I had to read what was already in JOB. The catch... the flat file did not contain the employee's emplid thus eliminating the easy select from PS_JOB. The initial workaround was joining JOB to PERSONAL_DATA via EMPLID and utilizing PERSONAL_DATA.SSN as the search (after indexing SSN on PERSONAL_DATA, of course). Things were looking good, but alas the job ran for 20 hours and this was not good. Don't despair! Using SQR's LOAD LOOKUP TABLE allows quick access to data. LOAD LOOKUP creates a two column array once (yes, once) which is indexed on the first column. In this case I load PERSONAL_DATA.SSN as the index and EMPLID as the return value. Voila! I now have cross reference of SSN and EMPLID without any Oracle/SQL hits to the DB. This eliminated the need for the join. Result... cue the music... the job ran in 35 minutes. NICE performance boost. Thanks to all who answered... Dave From owner-sqr-users@list.iex.net Thu Oct 8 13:20:41 1998 Date: Thu, 8 Oct 1998 09:45:15 -0700 From: Greg Gargett Subject: Re: Dos Window Helen, Try using the DOS COMMAND command with the /c parameter, e.g. call system using 'command /c foo.bat'. This will start a DOS session, run your batch and then exit DOS. See DOS help for the full story. Greg Helen Moore wrote: > In an SQR I am using the CALL System function. It runs an executable > that downloads fonts to my printer every time the SQR runs. > > Is there any way that the SQR can close the DOS window when the DOS > command has finished? > > This is my .bat file (that does not exit after it is done) > The user has to close the window. The fonts do get downloaded. > > c:\temp\sqrfonts\fload.exe c:\temp\sqrfonts\dload.dat > exit > > Helen > > Helen Moore > Senior Programmer Analyst > IT/IIS > James Madison University From owner-sqr-users@list.iex.net Thu Oct 8 13:21:32 1998 Date: Thu, 8 Oct 1998 14:10:54 -0400 From: "Stephen C. Lorenz" Subject: Re: Dos Window Helen, You might try inserting 'command.com /c ' at the beginning of your system command. For example to run a bat file named mybat.bat try: call system using 'command.com /c mybat.bat' #status-call_mybat Hope this helps. --Steve ------------------------------------------------------------------------------ > Stephen C. Lorenz -- Systems Analyst | North Shore Community College < > slorenz@nscc.mass.edu | 1 Ferncroft Rd, Danvers, MA 01923 < ------------------------------------------------------------------------------ On Thu, 8 Oct 1998, Helen Moore wrote: > In an SQR I am using the CALL System function. It runs an executable > that downloads fonts to my printer every time the SQR runs. > > Is there any way that the SQR can close the DOS window when the DOS > command has finished? > > This is my .bat file (that does not exit after it is done) > The user has to close the window. The fonts do get downloaded. > > c:\temp\sqrfonts\fload.exe c:\temp\sqrfonts\dload.dat > exit > > > > > Helen > > > Helen Moore > Senior Programmer Analyst > IT/IIS > James Madison University > > From owner-sqr-users@list.iex.net Thu Oct 8 16:06:57 1998 Date: Thu, 8 Oct 1998 15:02:27 -0500 From: Chuck Chauvin Subject: Re: ? Last Record This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------ =_NextPart_001_01BDF2CC.AAC63AD0 Content-Type: text/plain Or, you could retrieve the first record of the table(s) sorted backwards. . . . -----Original Message----- From: Boris Nadler [SMTP:c_nadler@QUALCOMM.COM] Sent: Wednesday, October 07, 1998 4:17 PM To: Multiple recipients of list SQR-USERS Subject: Re: ? Last Record Phil, #END-FILE is used for the flat files processing: "The variable #end-file is set to one (1) if end of file occurs on READ. Otherwise it is set to zero (0). Your program should check this variable after each READ command" I'd use BEGIN-SELECT twice : first to get rows count and then to do special frocessing for the last row. Its not very efficient but I'm not aware about system variable or function you can use for the last row processing in SQR. Hope its help. Boris. ( Qualcomm Inc., 619/651-8571 ) At 04:17 PM 10/7/98 -0400, you wrote: > > >I do believe there is a reserved variable called > >#END-FILE > >that is internally kept within the SQR. It is set to 1 if the end of file >occurs. >I have never used it, so I can not help you there. > >Hope it helps, > >Cheers, > >Danny > > > > > > (Embedded > image moved Phil Roell > to file: 10/07/98 03:44 PM > pic25032.pcx) > > > > >Please respond to SQR-USERS@USA.NET > >To: Multiple recipients of list SQR-USERS >cc: (bcc: Daniel Guynes) >Subject: ? Last Record > > > > >Does SQR provide a flag that tells you when it has selected the last record >in a >select statement? > >Thanks, > >Phil > > > > ------ =_NextPart_001_01BDF2CC.AAC63AD0 Content-Type: text/html Content-Transfer-Encoding: quoted-printable

Or, you could retrieve the first = record of the table(s) sorted backwards. . . .

    -----Original Message-----
    From:   Boris Nadler = [SMTP:c_nadler@QUALCOMM.COM]
    Sent:   Wednesday, October 07, 1998 4:17 PM
    To:     Multiple recipients of list SQR-USERS
    Subject:       = Re: ? Last Record

    Phil,

    #END-FILE is used = for the flat files processing:
    "The variable = #end-file is set to one (1) if end of file occurs on READ.
    Otherwise it is set = to zero (0). Your program should check this variable
    after each READ = command"

    I'd use = BEGIN-SELECT twice : first to get rows count and then to do = special
    frocessing
    for the last row. = Its not very efficient but I'm not aware about system
    variable or = function
    you can use for the = last row processing in SQR.

    Hope its = help.

    Boris.   = ( Qualcomm Inc., 619/651-8571 )




    At 04:17 PM 10/7/98 = -0400, you wrote:
    >
    >
    >I do believe = there is a reserved variable called
    >
    >#END-FILE
    >
    >that is = internally kept within the SQR.  It is set to 1 if the end of = file
    >occurs.
    >I have never = used it, so I can not help you there.
    >
    >Hope it = helps,
    >
    >Cheers,
    >
    >Danny
    >
    >
    >
    >
    >
    > = (Embedded
    > image = moved   Phil Roell <phil.roell@NATINST.COM>
    > to = file:      10/07/98 03:44 PM
    > = pic25032.pcx)
    >
    >
    >
    >
    >Please respond = to SQR-USERS@USA.NET
    >
    >To:   = Multiple recipients of list SQR-USERS = <SQR-USERS@list.iex.net>
    >cc:    (bcc: Daniel Guynes)
    >Subject:  = ? Last Record
    >
    >
    >
    >
    >Does SQR = provide a flag that tells you when it has selected the last = record
    >in a
    >select = statement?
    >
    >Thanks,
    >
    >Phil
    >
    >
    >
    >

------ =_NextPart_001_01BDF2CC.AAC63AD0-- From owner-sqr-users@list.iex.net Thu Oct 8 16:43:04 1998 Date: Thu, 8 Oct 1998 17:27:31 -0400 From: Alex Morales Subject: Un-subscribe cmora516@adelphia.net un-subscribe cmora516@adelphia.net From owner-sqr-users@list.iex.net Thu Oct 8 20:08:02 1998 Date: Thu, 8 Oct 1998 20:41:23 -0400 From: Charlie Dornbos Subject: Column Sort Does anyone have any Ideas about sorting a Alpha-Numeric column so that Numbers are sorted from least significant to Most (Right to Left). If the column was all numbers, I know I could use to_number(PMNUM), but this fails when the column contains any text. I get complaints from users who understandably don't like to see lists like: 10 100 1000 11 111 Any thoughts? I am using SQR3.5 with Maximo 3.02 and Oracle 7.2 Tanks, charlied@tir.com From owner-sqr-users@list.iex.net Thu Oct 8 20:52:56 1998 Date: Thu, 8 Oct 1998 18:46:07 -0700 From: David Donnelly Subject: Re: Column Sort How about using the rpad function [of Oracle, that is -- I suppose other databases have similar functions) to right-justify the text? At 08:41 PM 10/8/1998 -0400, you wrote: >Does anyone have any Ideas about sorting a Alpha-Numeric column so that >Numbers are sorted from least significant to Most (Right to Left). If the >column was all numbers, I know I could use to_number(PMNUM), but this fails >when the column contains any text. I get complaints from users who >understandably don't like to see lists like: >10 >100 >1000 >11 >111 >Any thoughts? I am using SQR3.5 with Maximo 3.02 and Oracle 7.2 Tanks, >charlied@tir.com > > From owner-sqr-users@list.iex.net Thu Oct 8 21:12:03 1998 Date: Fri, 9 Oct 1998 10:05:47 +0800 From: Wayne Ivory Subject: Re: Dos Window Helen, Andrew is right, but I thought you might need a little more explanation. = The Dos window staying on the screen is a function of Windows not SQR. = One way to set the property mentioned is to run the process, then = right-click on the msdos icon that appears on your taskbar and choose = properties. The Program tab should be active and the close-on-exit check = box at the bottom of that tab. Wayne Ivory Information Services Westralian Sands Limited >>> =22Campbell, Andrew=22 9/10/98 12:25:01 = am >>> Set WIndow properties to close on exit (check box in =22program=22 tab) -----Original Message----- From: Helen Moore =5Bmailto:moorehh=40JMU.EDU=5D=20 Sent: Thursday, October 08, 1998 12:05 PM To: Multiple recipients of list SQR-USERS Subject: Dos Window In an SQR I am using the CALL System function. It runs an executable that downloads fonts to my printer every time the SQR runs. Is there any way that the SQR can close the DOS window when the DOS command has finished? This is my .bat file (that does not exit after it is done) The user has to close the window. The fonts do get downloaded. c:=5Ctemp=5Csqrfonts=5Cfload.exe c:=5Ctemp=5Csqrfonts=5Cdload.dat exit Helen Helen Moore Senior Programmer Analyst IT/IIS James Madison University From owner-sqr-users@list.iex.net Thu Oct 8 21:58:44 1998 Date: Fri, 9 Oct 1998 10:09:33 +0800 From: Wayne Ivory Subject: Re: Column Sort Off the top of my head, you could try right justifying the numbers (and if = possible leave the non-numerics left-justified) before sorting them. You = should then get something like: 10 11 100 111 1000 XYZ123 If you really wanted you could even left-justify everything again as you = print it out. Wayne Ivory Information Services Westralian Sands Limited >>> Charlie Dornbos 9/10/98 8:41:23 am >>> Does anyone have any Ideas about sorting a Alpha-Numeric column so that Numbers are sorted from least significant to Most (Right to Left). If the column was all numbers, I know I could use to_number(PMNUM), but this = fails when the column contains any text. I get complaints from users who understandably don=27t like to see lists like: 10 100 1000 11 111 Any thoughts? I am using SQR3.5 with Maximo 3.02 and Oracle 7.2 Tanks, charlied=40tir.com From owner-sqr-users@list.iex.net Fri Oct 9 08:56:56 1998 Date: Fri, 9 Oct 1998 08:48:01 -0500 From: Phil Roell Subject: M File I get the following error message when compling: Error on line 104: (SQR 4038) Out of space while processing expression; Use -Mfile to increase . The program takes data from a database and loads an array and then writes the array to a delimited file. The line referenced in the error message is : let $dataline = $dataline || $quantity Does anyone know what causes this and what the format of the M file should be? Thanks, Phil From owner-sqr-users@list.iex.net Fri Oct 9 09:22:28 1998 Date: Fri, 9 Oct 1998 09:17:30 -0500 From: "Korbel Gordon E." Subject: Multiple Languages Hi all, I'm customizing a Peoplesoft Invoice SQR, and I need to send some invoices to Canada -- therefore, I need both French and English headings on the inovice. How do I 'on-the-fly' get SQR to print some-english, some-french? Like the U with the ^ above it, the 'o' shifted to the top as in 'No' (Number)? I suspect I need to send some control sequences to a printer, but is there another way? Is there some font I can use? I can't even seem to get my keyboard to produce the characters I need... Thanks Much! -Gordon Korbel From owner-sqr-users@list.iex.net Fri Oct 9 09:56:08 1998 Date: Fri, 9 Oct 1998 09:51:47 -0400 From: "Singh, Rajvirendra ( NYSDS )" Subject: Re: Column Sort Try following code: begin-select PMNUM &pmnum do print-out from xxxxx order by lpad(PMNUM,N,'0') end-select In above example N must be replaced with actual maximum length of that col. I hope it can help u. -----Original Message----- From: Wayne Ivory [SMTP:wivory@WSL.COM.AU] Sent: Thursday, October 08, 1998 10:10 PM To: Multiple recipients of list SQR-USERS Subject: Re: Column Sort Off the top of my head, you could try right justifying the numbers (and if possible leave the non-numerics left-justified) before sorting them. You should then get something like: 10 11 100 111 1000 XYZ123 If you really wanted you could even left-justify everything again as you print it out. Wayne Ivory Information Services Westralian Sands Limited >>> Charlie Dornbos 9/10/98 8:41:23 am >>> Does anyone have any Ideas about sorting a Alpha-Numeric column so that Numbers are sorted from least significant to Most (Right to Left). If the column was all numbers, I know I could use to_number(PMNUM), but this fails when the column contains any text. I get complaints from users who understandably don't like to see lists like: 10 100 1000 11 111 Any thoughts? I am using SQR3.5 with Maximo 3.02 and Oracle 7.2 Tanks, charlied@tir.com From owner-sqr-users@list.iex.net Fri Oct 9 10:59:38 1998 Date: Fri, 9 Oct 1998 08:01:16 PDT From: mahesh bhor Subject: Re: M File Hi Phil , The problem you are encountering is because the expression requires more temporary string storage than is currently allocated . Try checking the lengths of the both the $ variables you are using in the let command .. If you are sure that the lengths are okay increase the size of EXPRESSIONSPACE in -M file . If you are not using PeopleSoft , you may be new to the -M file concept . You can create a file , say allmaxes.max in the your SQRDIR directory ( or the current directory ) The normal contents of this file are - !******************************************************************** ! !CURSORS Max number of database cursors (SQLBase only) !DYNAMICARGS Max number of dynamic SQL arguments !EXPRESSIONSPACE Max length of temp string storage during LET ! operations !FORWARDREFS Max number of &column forward references !NUMVARIABLES Max number of numeric variables and literal values !ONBREAKS Max number of ON-BREAK LEVEL=values per SET !POSITIONS Max number of placement parameters, "(10,5,30)" !PROGLINEPARS Max number of arguments for all program lines !PROGLINES Max number of program lines (SQR commands) !QUERIES Max number of BEGIN-SQL and BEGIN-SELECT paragraphs !QUERYARGS Max number of bind variables for all SQL statements !SQLSIZE Max length of a SQL statement in characters !STRINGSPACE Max length of string space for program line arguments !SUBVARS Max number of run-time substitution variables !VARIABLES Max number of variables, literals and database ! columns !WHENS Max number of WHEN arguments allowed per EVALUATE ! !CURSORS=20 DYNAMICARGS=500 EXPRESSIONSPACE=65535 FORWARDREFS=1000 NUMVARIABLES=1000 ONBREAKS=75 POSITIONS=5000 PROGLINEPARS=65535 PROGLINES=10000 QUERIES=400 QUERYARGS=2000 SQLSIZE=10000 STRINGSPACE=60000 SUBVARS=2000 VARIABLES=5000 WHENS=1000 This file is the file supplied with PeopleSoft . Hope this helps . Mahesh ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com From owner-sqr-users@list.iex.net Fri Oct 9 14:27:12 1998 Date: Fri, 9 Oct 1998 08:05:37 -0700 From: Loren Berthelsen Subject: Re: M File Hi Phil, The -m flag is a SQR command line flag that references a parameter file. In a PeopleSoft install this is usually the allmaxes.max file located in the SQR directory. You can add the flag in the command line by putting in something like this: -mp:\psfs\sqr\allmaxes.max Of course the drive and directory designations will be specific to your site. Usually the error message will reference which of the parameters need to be increased so I'm not sure which of the parameters to refer you to but at least you now know where to start looking. Loren Berthelsen Convoy Corporation mailto:lrb@convoy.com http://www.convoy.com > -----Original Message----- > From: Discussion of SQR, SQRIBE Technologies's database reporting > language [mailto:SQR-USERS@list.iex.net]On Behalf Of Phil Roell > Sent: Friday, October 09, 1998 6:48 AM > To: Multiple recipients of list SQR-USERS > Subject: M File > > > I get the following error message when compling: > > Error on line 104: > (SQR 4038) Out of space while processing expression; Use > -Mfile to increase . > > The program takes data from a database and loads an array and > then writes the array > to a delimited file. > The line referenced in the error message is : > > let $dataline = $dataline || $quantity > > Does anyone know what causes this and what the format of the M > file should be? > > Thanks, > > Phil > From owner-sqr-users@list.iex.net Fri Oct 9 15:20:10 1998 Date: Fri, 9 Oct 1998 11:29:32 -0400 From: Daniel Guynes Subject: Re: Multiple Languages I am in Germany writing code for a Swiss bank which needs it's headings in French, Italian, and German. So, we are in the same boat. However, we are developing in Munich, and have not come across any problems as such with umlauts, etc. Maybe because our sqc's are already set accordingly. So, in terms of whether or not your printer can print the characters ... Most HPLaserJet 4 and above ... I do believe, can print all the charcters you are needing. So, I think you do not have to do anything special ... but if I find out I will let you know. As for how to code it for multiple languages. We thought about making one big SQC ... and basically pulling in the data and printing with variables .... and in the SQC we set up an if statement that tested for language preference (in our case ... if you are coding for Peoplesoft ... $Language_cd). However, because there were so many reports with so many different headers, we felt that would only be more tedious and possibly slower (considering we were looking at over 1000 different individual headers we would have to include in the SQC). So, we decided to code the headers in each report: In the example below, the logic is in the last procedure Init-Report. The $Language_cd is obtained from the run control record in Peoplesoft. If none is specified, it is defaulted to German ('GER'). Hope this helps. Danny !************************************************************************ ! Language-German ! !************************************************************************ ! Called by: - Init-Report ! Calls: - none ! Records: - none BEGIN-PROCEDURE Language-German let $ReportTitle = 'Deutscher Bericht '||$Year let $CompanyIdCol = 'Firme Id' !Company AHV Id let $IdCol = 'Nazionale Id' !National Id let $NameCol = 'Name' !Name let $FromCol = 'von' !From let $ToCol = 'bis' !To let $CS1002Col = 'CS1002' !CS1002 let $CS1001Col = 'CS1001' !CS1001 let $CS2002Col = 'CS2002' !CS2002 let $CS2001Col = 'CS2001' !CS2001 let $CS2201Col = 'CS2201' !CS2201 let $CS1002Col = lpad(rtrim($CS1002Col,' '),13,' ') let $CS1001Col = lpad(rtrim($CS1001Col,' '),13,' ') let $CS2002Col = lpad(rtrim($CS2002Col,' '),13,' ') let $CS2001Col = lpad(rtrim($CS2001Col,' '),13,' ') let $CS2201Col = lpad(rtrim($CS2201Col,' '),13,' ') END-PROCEDURE Language-German !************************************************************************ ! Language-Italian ! !************************************************************************ ! Called by: - Init-Report ! Calls: - none ! Records: - none BEGIN-PROCEDURE Language-Italian let $ReportTitle = 'Italian Report '||$Year let $CompanyIdCol = 'Ital Id' !Company AHV Id let $IdCol = 'Nazionale Id' !National Id let $NameCol = 'Nome' !Name let $FromCol = 'da' !From let $ToCol = 'a' !To let $CS1002Col = 'CS1002' !CS1002 let $CS1001Col = 'CS1001' !CS1001 let $CS2002Col = 'CS2002' !CS2002 let $CS2001Col = 'CS2001' !CS2001 let $CS2201Col = 'CS2201' !CS2201 let $CS1002Col = lpad(rtrim($CS1002Col,' '),13,' ') let $CS1001Col = lpad(rtrim($CS1001Col,' '),13,' ') let $CS2002Col = lpad(rtrim($CS2002Col,' '),13,' ') let $CS2001Col = lpad(rtrim($CS2001Col,' '),13,' ') let $CS2201Col = lpad(rtrim($CS2201Col,' '),13,' ') END-PROCEDURE Language-Italian !************************************************************************ ! Language-French ! !************************************************************************ ! Called by: - Init-Report ! Calls: - none ! Records: - none BEGIN-PROCEDURE Language-French let $ReportTitle = 'French Report '||$Year let $CompanyIdCol = 'French Id' !Company AHV Id let $IdCol = 'Nationale Id' !National Id let $NameCol = 'Nom' !Name let $FromCol = 'de' !From let $ToCol = 'à' !To let $CS1002Col = 'CS1002' !CS1002 let $CS1001Col = 'CS1001' !CS1001 let $CS2002Col = 'CS2002' !CS2002 let $CS2001Col = 'CS2001' !CS2001 let $CS2201Col = 'CS2201' !CS2201 let $CS1002Col = lpad(rtrim($CS1002Col,' '),13,' ') let $CS1001Col = lpad(rtrim($CS1001Col,' '),13,' ') let $CS2002Col = lpad(rtrim($CS2002Col,' '),13,' ') let $CS2001Col = lpad(rtrim($CS2001Col,' '),13,' ') let $CS2201Col = lpad(rtrim($CS2201Col,' '),13,' ') END-PROCEDURE Language-French !************************************************************************* !************************************************************************* !************************************************************************* !************************************************************************* ! INIT-REPORT !************************************************************************* BEGIN-PROCEDURE Init-Report do Stdapi-Init if $prcs_process_instance = '' let $Year = '1998' let $Company = ' ' let $Language_cd = 'FRE' else do Get-Values end-if move 'PAY013CH' to $ReportID move $AsOfToday to $ReportDate move $AsOfNow to $ReportTime let $StartYear = '01 '||'Jan '||$Year let $EndYear = '31 '||'Dec '||$Year ! do Format-Datetime ($StartYear, $StartYear, {DEFMDY}, '', 'native') ! do Format-Datetime ($EndYear, $EndYear, {DEFMDY}, '', '') if $Language_cd = 'GER' do Language-German end-if if $Language_cd = 'ITL' do Language-Italian end-if if $Language_cd = 'FRE' do Language-French end-if display $ReportID display $ReportDate display $ReportTime display $ReportTitle display $StartYear let #PageNum = 1 From owner-sqr-users@list.iex.net Fri Oct 9 16:32:24 1998 Date: Fri, 9 Oct 1998 13:42:23 +0200 From: Franck Masson Subject: Re: Multiple Languages This is a multi-part message in MIME format. --------------9711542AD3B17692FD65C9DC Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit What you are requesting is very simple for europeen people because everytime we have to manage what you are looking for. The solution is to load to the printer the right fonts that support french caracter. As french caracter include english caracter you have nothing to modify on your sqr program. Be carefool about the editor you are using to write your sqr program. It must use the same caracter set as your printer. Or if the data come from database Check the caracter set use in the database to store your ascii caracter code. If this information is not suffisient. Send me an email and precise me the printer you are using and the database and caracter set . Franck, --------------9711542AD3B17692FD65C9DC Content-Type: text/x-vcard; charset=us-ascii; name="vcard.vcf" Content-Transfer-Encoding: 7bit Content-Description: Card for Franck Masson Content-Disposition: attachment; filename="vcard.vcf" begin: vcard fn: Franck Masson n: Masson;Franck org: Sqribe Technologie Europe adr;dom: 1 bis rue du petit clamart Bat B;;ZI Velizy Plus;78140 Velizy Villacoublay;;; email;internet: franck.masson@sqribe.com title: Responsable developpement partenaire tel;work: 01 40 83 15 52 tel;fax: 01 40 83 06 59 tel;home: 06 12962751 x-mozilla-cpt: ;0 x-mozilla-html: FALSE version: 2.1 end: vcard --------------9711542AD3B17692FD65C9DC-- From owner-sqr-users@list.iex.net Fri Oct 9 21:56:35 1998 Date: Fri, 9 Oct 1998 14:34:36 -0400 From: "David M. Thelen" Subject: Use Notes e-mail I know recently there has been a couple of issues, one with lotus notes, the other regarding e-mail. I was wondering if it was possible to combine the two. We would like to send e-mail (notes) from an sqr running through PeopleSoft. Is it possible? If so, can it be done on the server as well as the client? MS SQL Server SQR 3.0 PeopleSoft 6.0 Thanks, Dave From owner-sqr-users@list.iex.net Sat Oct 10 00:47:10 1998 Date: Fri, 9 Oct 1998 09:19:27 -0500 From: Ray Ontko Subject: Re: M File Phil, The -M file is a plain text file, with each line being of the format: keyword=value For example, EXPRESSIONSPACE=65535 For a list of keywords and the allowable values, visit: http://www.ontko.com/sqrcard4.html#MFILE Ray > I get the following error message when compling: > > Error on line 104: > (SQR 4038) Out of space while processing expression; Use -Mfile to increase . > > The program takes data from a database and loads an array and then writes the array > to a delimited file. > The line referenced in the error message is : > > let $dataline = $dataline || $quantity > > Does anyone know what causes this and what the format of the M file should be? > > Thanks, > > Phil > ---------------------------------------------------------------------- Ray Ontko | Ray Ontko & Co | "Time for a new signature line." rayo@ontko.com | Richmond, In | See us at http://www.ontko.com/ From owner-sqr-users@list.iex.net Sat Oct 10 00:57:43 1998 Date: Fri, 9 Oct 1998 11:33:42 -0400 From: Ranade Sameer Subject: Re: M File Hi Phil, This is caused by long string size. -M parameter is used in SQR command line to force parameter values. It's pure text file and it's format is as follows : (name typically is allmaxes.max). You can put it in any path. Don't forget to put path in -M parameter. (For max. values refer to SQR help.) -----------------Start of file ------------------------------- !****************************************************************** ! This file provides overrides to the standard SQR limits. * !***************************************************************** !CURSORS Max number of database cursors (SQLBase only) !DYNAMICARGS Max number of dynamic SQL arguments !EXPRESSIONSPACE Max length of temp string storage during LET operations !FORWARDREFS Max number of &column forward references !NUMVARIABLES Max number of numeric variables and literal values !ONBREAKS Max number of ON-BREAK LEVEL=values per SET !POSITIONS Max number of placement parameters, "(10,5,30)" !PROGLINEPARS Max number of arguments for all program lines !PROGLINES Max number of program lines (SQR commands) !QUERIES Max number of BEGIN-SQL and BEGIN-SELECT paragraphs !QUERYARGS Max number of bind variables for all SQL statements !SQLSIZE Max length of a SQL statement in characters !STRINGSPACE Max length of string space for program line arguments !SUBVARS Max number of run-time substitution variables !VARIABLES Max number of variables, literals and database columns !WHENS Max number of WHEN arguments allowed per EVALUATE ! !CURSORS=20 DYNAMICARGS=500 EXPRESSIONSPACE=65535 FORWARDREFS=1000 NUMVARIABLES=1000 ONBREAKS=75 POSITIONS=5000 PROGLINEPARS=65535 PROGLINES=10000 QUERIES=400 QUERYARGS=2000 SQLSIZE=10000 STRINGSPACE=60000 SUBVARS=2000 VARIABLES=5000 WHENS=1000 ----------------------------------EOF ------------------------- Hope it helps, Sameer -----Original Message----- From: Phil Roell [mailto:phil.roell@NATINST.COM] Sent: Friday, October 09, 1998 9:48 AM To: Multiple recipients of list SQR-USERS Subject: M File I get the following error message when compling: Error on line 104: (SQR 4038) Out of space while processing expression; Use -Mfile to increase . The program takes data from a database and loads an array and then writes the array to a delimited file. The line referenced in the error message is : let $dataline = $dataline || $quantity Does anyone know what causes this and what the format of the M file should be? Thanks, Phil From owner-sqr-users@list.iex.net Sat Oct 10 01:21:42 1998 Date: Fri, 9 Oct 1998 17:19:12 -0400 From: Tony DeLia Subject: Re: Multiple Languages Another alternative you can use... for quick-hits at least... is this... To create a U-umlaut use => . let $Uumlaut = chr(129) let $Phrase = 'Here it is ' || $Uumlaut || ' <- there it is' . it should read 'Here it is $ <- there it is' ($ represents U umlaut) . It's tedious but if you only need to print headings it's a workable solution. 'a' Umlaut is chr(132), 'e' umlaut is chr(137)... See a DOS reference for additional ascii character codes. I don't remember if the SQR Manual provides a complete list. -Tony DeLia PS You can test the character codes in some editors (like SPF/PC 4.0) by pressing alt and then the ascii code on your Num pad - unless you're on a laptop without a numpad portion... Daniel Guynes wrote: > > I am in Germany writing code for a Swiss bank which needs it's headings in > French, Italian, and German. So, we are in the same boat. However, we are > developing in Munich, and have not come across any problems as such with > umlauts, etc. Maybe because our sqc's are already set accordingly. So, in > terms of whether or not your printer can print the characters ... Most > HPLaserJet 4 and above ... I do believe, can print all the charcters you > are needing. So, I think you do not have to do anything special ... but if > I find out I will let you know. > > As for how to code it for multiple languages. We thought about making one > big SQC ... and basically pulling in the data and printing with variables > .... and in the SQC we set up an if statement that tested for language > preference (in our case ... if you are coding for Peoplesoft ... > $Language_cd). > However, because there were so many reports with so many different headers, > we felt that would only be more tedious and possibly slower (considering we > were looking at over 1000 different individual headers we would have to > include in the SQC). So, we decided to code the headers in each report: > In the example below, the logic is in the last procedure Init-Report. The > $Language_cd is obtained from the run control record in Peoplesoft. If > none is specified, it is defaulted to German ('GER'). Hope this helps. > > Danny > > !************************************************************************ > ! Language-German > ! > !************************************************************************ > ! Called by: - Init-Report > ! Calls: - none > ! Records: - none > > BEGIN-PROCEDURE Language-German > > let $ReportTitle = 'Deutscher Bericht '||$Year > let $CompanyIdCol = 'Firme Id' !Company AHV Id > let $IdCol = 'Nazionale Id' !National Id > let $NameCol = 'Name' !Name > let $FromCol = 'von' !From > let $ToCol = 'bis' !To > let $CS1002Col = 'CS1002' !CS1002 > let $CS1001Col = 'CS1001' !CS1001 > let $CS2002Col = 'CS2002' !CS2002 > let $CS2001Col = 'CS2001' !CS2001 > let $CS2201Col = 'CS2201' !CS2201 > > let $CS1002Col = lpad(rtrim($CS1002Col,' '),13,' ') > let $CS1001Col = lpad(rtrim($CS1001Col,' '),13,' ') > let $CS2002Col = lpad(rtrim($CS2002Col,' '),13,' ') > let $CS2001Col = lpad(rtrim($CS2001Col,' '),13,' ') > let $CS2201Col = lpad(rtrim($CS2201Col,' '),13,' ') > > END-PROCEDURE Language-German > > !************************************************************************ > ! Language-Italian > ! > !************************************************************************ > ! Called by: - Init-Report > ! Calls: - none > ! Records: - none > > BEGIN-PROCEDURE Language-Italian > > let $ReportTitle = 'Italian Report '||$Year > let $CompanyIdCol = 'Ital Id' !Company AHV Id > let $IdCol = 'Nazionale Id' !National Id > let $NameCol = 'Nome' !Name > let $FromCol = 'da' !From > let $ToCol = 'a' !To > let $CS1002Col = 'CS1002' !CS1002 > let $CS1001Col = 'CS1001' !CS1001 > let $CS2002Col = 'CS2002' !CS2002 > let $CS2001Col = 'CS2001' !CS2001 > let $CS2201Col = 'CS2201' !CS2201 > > let $CS1002Col = lpad(rtrim($CS1002Col,' '),13,' ') > let $CS1001Col = lpad(rtrim($CS1001Col,' '),13,' ') > let $CS2002Col = lpad(rtrim($CS2002Col,' '),13,' ') > let $CS2001Col = lpad(rtrim($CS2001Col,' '),13,' ') > let $CS2201Col = lpad(rtrim($CS2201Col,' '),13,' ') > > END-PROCEDURE Language-Italian > > !************************************************************************ > ! Language-French > ! > !************************************************************************ > ! Called by: - Init-Report > ! Calls: - none > ! Records: - none > > BEGIN-PROCEDURE Language-French > > let $ReportTitle = 'French Report '||$Year > let $CompanyIdCol = 'French Id' !Company AHV Id > let $IdCol = 'Nationale Id' !National Id > let $NameCol = 'Nom' !Name > let $FromCol = 'de' !From > let $ToCol = 'à' !To > let $CS1002Col = 'CS1002' !CS1002 > let $CS1001Col = 'CS1001' !CS1001 > let $CS2002Col = 'CS2002' !CS2002 > let $CS2001Col = 'CS2001' !CS2001 > let $CS2201Col = 'CS2201' !CS2201 > > let $CS1002Col = lpad(rtrim($CS1002Col,' '),13,' ') > let $CS1001Col = lpad(rtrim($CS1001Col,' '),13,' ') > let $CS2002Col = lpad(rtrim($CS2002Col,' '),13,' ') > let $CS2001Col = lpad(rtrim($CS2001Col,' '),13,' ') > let $CS2201Col = lpad(rtrim($CS2201Col,' '),13,' ') > > END-PROCEDURE Language-French > > !************************************************************************* > !************************************************************************* > !************************************************************************* > !************************************************************************* > ! INIT-REPORT > !************************************************************************* > BEGIN-PROCEDURE Init-Report > > do Stdapi-Init > > if $prcs_process_instance = '' > let $Year = '1998' > let $Company = ' ' > let $Language_cd = 'FRE' > else > do Get-Values > end-if > > move 'PAY013CH' to $ReportID > move $AsOfToday to $ReportDate > move $AsOfNow to $ReportTime > let $StartYear = '01 '||'Jan '||$Year > let $EndYear = '31 '||'Dec '||$Year > ! do Format-Datetime ($StartYear, $StartYear, {DEFMDY}, '', 'native') > ! do Format-Datetime ($EndYear, $EndYear, {DEFMDY}, '', '') > > if $Language_cd = 'GER' > do Language-German > end-if > if $Language_cd = 'ITL' > do Language-Italian > end-if > if $Language_cd = 'FRE' > do Language-French > end-if > > display $ReportID > display $ReportDate > display $ReportTime > display $ReportTitle > display $StartYear > let #PageNum = 1 -- Tony DeLia AnswerThink Consulting Group PeopleSoft Solutions Practice - Delphi Partners tdelia@erols.com From owner-sqr-users@list.iex.net Sat Oct 10 01:25:53 1998 Date: Fri, 9 Oct 1998 16:18:38 -0600 From: Steven Calvert Subject: Re: Dos Window Helen Moore wrote: > In an SQR I am using the CALL System function. It runs an executable > that downloads fonts to my printer every time the SQR runs. > > Is there any way that the SQR can close the DOS window when the DOS > command has finished? > > This is my .bat file (that does not exit after it is done) > The user has to close the window. The fonts do get downloaded. > > c:\temp\sqrfonts\fload.exe c:\temp\sqrfonts\dload.dat > exit A while ago I needed some DOS help. The web site, http://www.calweb.com/~webspace/batch/index.htm, has some amazing (to me at least) DOS "stuff" ... including how to do what you are looking for. I tested it on my Windows 95 PC clone and it worked for me ... to [mis]quote a great person, "your mileage may vary"! Good luck. FAQ: How do I get my batch file to close it's DOS window after it finishes? Answer: Clear the screen! Just add the following two lines to the end of your batch file: @echo off cls It actually makes sense if you think about it. If there is something on the screen, DOS will hold the window open so you can see the results. But if there is NOTHING on the screen, there is no reason to keep the window open! -- Steven Calvert calvert@uleth.ca University of Lethbridge (403)329-2071 From owner-sqr-users@list.iex.net Sat Oct 10 09:23:05 1998 Date: Sat, 10 Oct 1998 07:13:14 -0700 From: Nicholas Pegg Subject: Re: Use Notes e-mail David, There is a Notes API that you could use to do this - either linking in, or via some other program written in VB/c/etc. The API takes 'some learning'. The poor mans way would be to have the sqr export some flat file that a scheduled process on the notes server would pick up and do mailsend() events with. Hope it helps, Nicholas Pegg Senior Consultant Business Information Technology nicholas_pegg@bit.com >---------- >From: David M. Thelen[SMTP:ddthelen@SBBSNET.NET] >Sent: October 09, 1998 11:34 AM >To: Multiple recipients of list SQR-USERS >Subject: Use Notes e-mail > >I know recently there has been a couple of issues, one with lotus notes, >the other regarding e-mail. I was wondering if it was possible to >combine the two. We would like to send e-mail (notes) from an sqr >running through PeopleSoft. Is it possible? If so, can it be done on >the server as well as the client? > >MS SQL Server >SQR 3.0 >PeopleSoft 6.0 > >Thanks, >Dave > From owner-sqr-users@list.iex.net Mon Oct 12 10:17:55 1998 Date: Mon, 12 Oct 1998 10:08:33 -0500 From: "Korbel Gordon E." Subject: Re: Multiple Languages I have tried this -- and it appears as though it should work, except when I send the report to a printer (either a HP4 MV or HP4 MP) -- the 'special' characters print as spaces. Is the problem that the printer(s) do not have an appropriate font to print an é or an ë or similar characters? They do appear correctly in an output print file.... Thanks to all for the help! -Gordon Korbel > -----Original Message----- > From: Tony DeLia [SMTP:tdelia@EROLS.COM] > > Another alternative you can use... for quick-hits at least... is this... > > To create a U-umlaut use => > . > let $Uumlaut = chr(129) > let $Phrase = 'Here it is ' || $Uumlaut || ' <- there it is' > . > it should read 'Here it is $ <- there it is' ($ represents U umlaut) > . > It's tedious but if you only need to print headings it's a workable > solution. > > 'a' Umlaut is chr(132), 'e' umlaut is chr(137)... > > See a DOS reference for additional ascii character codes. I don't > remember if the SQR Manual provides a complete list. > > -Tony DeLia > > PS You can test the character codes in some editors (like SPF/PC 4.0) > by pressing alt and then the ascii code on your Num pad - unless you're > on a laptop without a numpad portion... From owner-sqr-users@list.iex.net Mon Oct 12 12:13:41 1998 Date: Mon, 12 Oct 1998 10:06:08 -0700 From: Joe Story Subject: DB, Username, Password SQR 4.0.3 NT 4.0 Server SqlServer 6.5 Windows 95 We are interested in using SQR in batch processing. How do you pass the Database name, Username and Password on the Command line for SQRWT.EXE? Regards, Joe From owner-sqr-users@list.iex.net Mon Oct 12 13:00:07 1998 Date: Mon, 12 Oct 1998 13:52:31 -0400 From: Daniel Guynes Subject: Re: DB, Username, Password --0__=dN2gZcgSvzEHPDJnhMXmEYaWaytdwxN6auqa1gP8VVkeLw2AvKMo4FxF Content-type: text/plain; charset=us-ascii Content-Disposition: inline C:\ODBC\SQRW.EXE -iC:\hr750\sqr\;D:\hr700ga\sqr\ -mC:\hr750\sqr\allmaxes.max -oC:\temp\PAY016CH.log -fC:\temp\PAY016CH.lis -cb d:\ubs\sqr\pay016ch MUNHR28 1. C:\ODBC\SQRW.EXE 2. -iC:\hr750\sqr\;D:\hr700ga\sqr\ 3. -mC:\hr750\sqr\allmaxes.max 4. -oC:\temp\PAY016CH.log 5. -fC:\temp\PAY016CH.lis 6. -cb 7. d:\ubs\sqr\pay016ch 8. MUNHR28 In the properties section ... put that in the Target section 1. location of SQRW.EXE executable 2. -i = specifies the list of directories SQR will search to find the #INCLUDES directives if there is no path sepecified, and they are not in the present directory. 3. -m = specifies name and location of the max file for sizes for arrays 4. -o = location to put the log file - must supply name of log file 5. -f = location to put your out put file - must supply name of output file 6. -cb = forces the use of the black box 7. directory and name of your SQR 8. datbase name (Embedded image moved Joe Story to file: 10/12/98 01:06 PM pic08295.pcx) Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: Daniel Guynes) Subject: DB, Username, Password SQR 4.0.3 NT 4.0 Server SqlServer 6.5 Windows 95 We are interested in using SQR in batch processing. How do you pass the Database name, Username and Password on the Command line for SQRWT.EXE? Regards, Joe --0__=dN2gZcgSvzEHPDJnhMXmEYaWaytdwxN6auqa1gP8VVkeLw2AvKMo4FxF Content-type: application/octet-stream; name="pic08295.pcx" Content-Disposition: attachment; filename="pic08295.pcx" Content-transfer-encoding: base64 CgUBCAAAAABoACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAABaQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAD1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sTzRPHE8MTwhP1E9sT zRPHE8MTwhPwEwzIBgzYE8wTxhPDE8IT7hPOBtcTzBPGE8MTE+wTwgbCBwbCEgbCEgbCEsUG1hPL E8YTwxMT6hMMwgYHwgLCAwISwgfEEsMCwwbVE8sTxRPDExPpE8MGAwcCBwMCwhLDB8ISwgISwgLD BtUTyhPFE8MTE+gTwgIHA8ICEw4DDgLDE8USwwLCEMIG1BPKE8UTwxMT5xMCAwcDAg4TDgITwgIS D8ISD8ISBRICEcICwwbUE8oTxRPCExPmEwYCBwMCDgIOwgLDExITEhPCEg8GxgLDBtMMDAfJE8QT whMT5hMGwwITBgMCDhLFEw8SE8ISBgIDwhIDEsMGB9MDxwwHxRPDExPlEwYHAhESAg8CwhMPwhMP xBMPxRIQwgIDAgMCBtMDxwPEDAfDE8IT4RMHwwzCBgLCEhMCDxLIE8MSD8MSwwIQAwIDBgfSDMkD wgPCDAfCExPbEwfGDMIDDAIHERITEhMSwxMPwxMPwxPDEgIDAgMCwwMCBgzREwfHDMYDDMITE9YT B8UMyAMGB8ICBhLDAsYTEhMSExIPwhIHAgcCAwUQAgYRBgfSE8UTB8QMwgMMwhMT0hMHxAzLA8IM BsISDxESExITAw4DxBMSExITwxICBwPCAsMDDMIGB9ITyRMHwwzCExPPEwfDDMkDxQwHwhMGBxIT AhECEwMOAg7DExITDxMPwxIDAgMCBwMCDAYRBgfSE8kTwhPCDMITE8wTB8MMxwPEDMIHxxMGxBLD Ag4DDgIGwg/IEgIDwgIDAgwCEMIGB9ITyRMHDAcMwhMTyhMHwgzGA8MMwgfMEwYHwhLCEAIOAg4C DhDDAhIPxhIFAgXDAgUCEQYH0hPHEwfCDAcPDMITE8gTB8IMxQPDDAfQEwbDEhDEAhAOEA4QwgLG EgcSBhIGBcMCBcIGB9ATB8UMEwfCDA8HDwwHwhMTxhMHwgzEA8MMB9MTBgfCEhADEMICDhAOEMIC EQIDxxIGBwbCAgUCEQYHyxMHxAwHwhMHEwzCEwcPBw8MB8MTE8UTBwzEA8IMB9YTBsQSEAMCA8UC EQIDAgPDEgcSBgfCBgUQAhDCBgfGEwfEDAfGE8INEwzCEw8HwgwHwxPCE8QTBwzDA8IMB9gTBgfE EhACEMYCEQIDAsQSBhLDBsICEALCBgfCEwfDDAfKEwfCDRMHwhPCDAfEE8ITE8MTBwzCA8IMB9oT DBIHwxLDDBEDxQIDAgPDEgYSBgfCBgIQAhAGDAfCEwzDE8MHyRMHwhPCBxMHxRPDExPDEwzCAwwH 3RMGxxICEQPDAgMCA8MSBhIGBwYMBhACEAIGDMMTDBPCB8YTwwfHEwfGE8MTwhPDEwwDDAfeEwYH xxICEQPDAgMCwhIGEgYHBgwGEAIQAsIGB8MTDMYTwwfKEwzGE8MTwhPDE8IMB98TDBLCB8USAgMR xAISB8ISBgcGDAYQBhAGEAYMB8MMB8kTwwfHEwzGE8MTwhPDEwwPwgzfEwYSB8ISB8ISAhECAwID EgcSBwYHBgwGEAYQxgzDD8IHxRPDB8kTBwzGE8MTwhPDEwzDD8QM3BPCBhIGwxIGAhECAwIHBgcG yAzJDxMHzRMHwwwHxxPDE8ITwxMHDMYPxwwH1BMGEgYSBhLLDM4PwwwTDMcTwgfEDAfJE8QTwhMT xBMHwgzLD9sM0w/GDAfDEwzDEwfEDAfLE8YTwxMTxhMHxAztD8gMBgfIE8QMB84TxxPDE8ITyhMH xwzbD8sMEAUMBcIMwgYH1RPKE8UTwxMT0RMH2wwGEAYQBhACBQwFDAUMBgwHBgfWE8sTxRPDExPu EwYMBhAGEAIGDAYMwwYH1xPLE8YTwxMT8BPKBgfYE8wTxhPDExP1E9sTzRPHE8MTwhP1E9sTzRPH E8MTwhMMAAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD/ /wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8A AAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A //8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA/wAA AP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCkgICA /wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vwoKCk gICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw//vw oKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrw //vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzA psrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICAwMDA wNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACAAICA wMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACAgACA AICAwMDAwNzApsrw//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////AAAAgAAAAIAAgIAAAACA gACA//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP////// --0__=dN2gZcgSvzEHPDJnhMXmEYaWaytdwxN6auqa1gP8VVkeLw2AvKMo4FxF-- From owner-sqr-users@list.iex.net Mon Oct 12 13:02:23 1998 Date: Mon, 12 Oct 1998 12:51:18 -0500 From: Wes Williams Subject: DB, Username, Password -Reply Look at page 5 in your SQR language manual. I assume sybase and SQL Server would be the same. Wes Williams >>> Joe Story 10/12/98 12:06pm >>> SQR 4.0.3 NT 4.0 Server SqlServer 6.5 Windows 95 We are interested in using SQR in batch processing. How do you pass the Database name, Username and Password on the Command line for SQRWT.EXE? Regards, Joe From owner-sqr-users@list.iex.net Mon Oct 12 13:24:16 1998 Date: Mon, 12 Oct 1998 13:13:38 -0500 From: Phil Roell Subject: VIEW Does anyone know if you can CREATE a view in SQR? I am unable to find any documentation on it and my program keeps erroring on the command CREATE. Thanks, Phil From owner-sqr-users@list.iex.net Mon Oct 12 14:04:46 1998 Date: Mon, 12 Oct 1998 13:58:54 -0500 From: Dan Stone Subject: ORA-01019: unable to allocate memory in the user side I am running SQR on HP-UX B.10.20. When I try to login to an Oracle8 database, I get the error (SQR 5528) ORACLE ORLON error -1019 in cursor 0: ORA-01019: unable to allocate memory in the user side (SQR 4701) Cannot logon to the database. Any advice would be greatly appreciated. Thank you, Dan Stone From owner-sqr-users@list.iex.net Mon Oct 12 14:28:15 1998 Date: Mon, 12 Oct 1998 12:21:34 -0700 From: Greg Gargett Subject: Re: VIEW put your sql in a begin-sql/end-sql block. Phil Roell wrote: > > Does anyone know if you can CREATE a view in SQR? > > I am unable to find any documentation on it and my program keeps erroring on the > command CREATE. > > Thanks, > > Phil -- Greg From owner-sqr-users@list.iex.net Mon Oct 12 16:01:02 1998 Date: Mon, 12 Oct 1998 13:51:05 -0700 From: Chris Snow Subject: Re: DB, Username, Password Assuming you prefix the SQRWT.EXE with the proper path, Sqrwt.exe Reportname.sqt Dbname:Username\Password -----Original Message----- From: Joe Story To: Multiple recipients of list SQR-USERS Date: October 12, 1998 10:13 AM Subject: DB, Username, Password SQR 4.0.3 NT 4.0 Server SqlServer 6.5 Windows 95 We are interested in using SQR in batch processing. How do you pass the Database name, Username and Password on the Command line for SQRWT.EXE? Regards, Joe From owner-sqr-users@list.iex.net Mon Oct 12 16:58:04 1998 Date: Mon, 12 Oct 1998 16:50:56 -0500 From: Nathan Treadway Subject: Recent changes to SQRUG site I've recently made a few changes on the SQRUG site (http://www.sqrug.com/). The most important change is that the server has been moved to a new, faster machine. At the same time, I've installed a new search engine for the SQRUG archives. These changes should mean that the search is actually pretty useful now -- give it a try: http://www.sqrug.com/sqr-users/ . As I installed the site on the new machine I re-organized the directory structure slightly, mostly by removing the "~" from the old URLs. (For example, http://www.sqrug.com/~ftp/ is now http://www.sqrug.com/ftp/ .) The old URLs will continue to work for some time, but you should change any bookmarks or links in local web pages to use the new addresses. Finally, I have updated a few items in the SQRUG Library and added several new links on the related sites page. If you have any suggestions, contributions, or comments, please send them to us at webmaster@sqrug.com. Nathan Treadway SQRUG Webmaster ---------------------------------------------------------------------------- Nathan Treadway | Ray Ontko & Co. | Software consulting services nathant@ontko.com | Richmond, IN | http://www.ontko.com/ From owner-sqr-users@list.iex.net Tue Oct 13 08:47:41 1998 Date: Tue, 13 Oct 1998 06:37:33 -0700 From: Satnam Sanghera Subject: sqr vs crystal Hi everyone, We are in the process of implementing peoplsoft financials. Our interfaces are ready and now a very interesting question has come up - For custom reports what criteria should we use to determine if it is advisable to build the reports in sqr or crystal. Any feedback will be appreciated. Thanks in advance. Satnam (310) 380-5109 _________________________________________________________ DO YOU YAHOO!? Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Tue Oct 13 08:54:52 1998 Date: Tue, 13 Oct 1998 09:54:01 -0400 From: Schiff Fred Subject: How to profile SQR code? How do I go about profiling a piece of SQR code? I want to see whats taking so long. I have a program which takes 2 hours to run. It produces seperate reports for around ~800 people, and the time has gone up as the number of reports it has to produce has gone up. I'm pretty confident that the queries are all ok, but I'd like to know for sure. The real problem is that I have to run the sqr report multiple times because of formating and where clause constraints, so its actually taking 6 hours every night. Fred Schiff (fschiff@nlfs.com) 212/354-8800 x250 Nathan & Lewis Securities, Inc. From owner-sqr-users@list.iex.net Tue Oct 13 08:58:15 1998 Date: Tue, 13 Oct 1998 09:52:59 -0400 From: "McCoy, Ken D (INPO)" Subject: Re: sqr vs crystal Having worked in both SQR is my choice by far. > -----Original Message----- > From: Satnam Sanghera [SMTP:satnamssanghera@YAHOO.COM] > Sent: Tuesday, October 13, 1998 9:38 AM > To: Multiple recipients of list SQR-USERS > Subject: sqr vs crystal > > Hi everyone, > We are in the process of implementing peoplsoft financials. Our > interfaces are ready and now a very interesting question has come up - > > For custom reports what criteria should we use to determine if it is > advisable to build the reports in sqr or crystal. Any feedback will be > appreciated. > Thanks in advance. > Satnam > (310) 380-5109 > > > > > _________________________________________________________ > DO YOU YAHOO!? > Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Tue Oct 13 09:14:33 1998 Date: Tue, 13 Oct 1998 08:01:51 -0600 From: Albert Howard Subject: Re: sqr vs crystal The main thing to consider is can Crystal/Query handle the requirement...you have to realize that to produce a report through the Query link you have to be able to do all database selection in ONE SQL statement. This is a very binding limitation. You didn't specify what database you are using, but some such as SQLServer are limited to 15 tables per join. The extremely limited ability to do outer joins is a problem with Query also. With SQR you have the advantage of being able to call additional paragraphs to bring in tables, which gets around both the 15 table join limit as well as the outer join problem. Additionally, the Query/Crystal method is Queries run on the client. So increased network traffic is an issue. Larger reports will probably encounter some performance problems, particularly if you try to view in a window. Need lots of memory on the client box. Formatting and "pretty-printing is an arguement FOR Crystal. Much easier to make reports with logos and fonts etc in Crystal. One thing that has been lost in the history of Query/Crystal is that it was originally intended in PeopleSoft as an end user tool for ad-hoc reporting..not really for daily production reports. Use it as such, and do anything that is part of production streams in SQR, so you have the option of running them on unix/mainframes to leverage performance issues. At 06:37 AM 10/13/98 -0700, you wrote: >Hi everyone, >We are in the process of implementing peoplsoft financials. Our >interfaces are ready and now a very interesting question has come up - > >For custom reports what criteria should we use to determine if it is >advisable to build the reports in sqr or crystal. Any feedback will be >appreciated. > Thanks in advance. >Satnam >(310) 380-5109 > > > > >_________________________________________________________ >DO YOU YAHOO!? >Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Tue Oct 13 09:20:36 1998 Date: Tue, 13 Oct 1998 08:07:43 -0600 From: Albert Howard Subject: Re: How to profile SQR code? You need to identify the delay points. Put a time display before each begin-select, within the select, and after the end-select, of every paragraph. Then you can see where the problem is. If the delay is from the first display to the second one, the problem is with the way the WHERE clause is structured. You may not be using indices properly. If the problem is between lines within the select, its something in one of the paragraphs called from the main loop. If the problem is at the end then something you are doing after the select is the problem. Your SQR.LOG will show all the displays. At 09:54 AM 10/13/98 -0400, you wrote: >How do I go about profiling a piece of SQR code? >I want to see whats taking so long. I have a program which takes 2 hours to >run. >It produces seperate reports for around ~800 people, and the time has gone >up >as the number of reports it has to produce has gone up. I'm pretty >confident >that the queries are all ok, but I'd like to know for sure. > >The real problem is that I have to run the sqr report multiple times because >of >formating and where clause constraints, so its actually taking 6 hours every >night. > >Fred Schiff (fschiff@nlfs.com) >212/354-8800 x250 >Nathan & Lewis Securities, Inc. From owner-sqr-users@list.iex.net Tue Oct 13 09:55:25 1998 Date: Tue, 13 Oct 1998 10:47:44 -0400 From: Sam Spritzer Subject: Re: sqr vs crystal I agree with Albert plus I would like to add my two cents worth.... SQR is a better alternative where you have a lot of transactional detail. This is where performance becomes an issue and certainly one reason for using SQR. In response to the formatting issue...while it is much easier to drag and drop and use logos in Crystal, this can be facilitiated in SQR through the use of templates and #define statements. Sam >>> Albert Howard 10/13/98 10:01AM >>> The main thing to consider is can Crystal/Query handle the requirement...you have to realize that to produce a report through the Query link you have to be able to do all database selection in ONE SQL statement. This is a very binding limitation. You didn't specify what database you are using, but some such as SQLServer are limited to 15 tables per join. The extremely limited ability to do outer joins is a problem with Query also. With SQR you have the advantage of being able to call additional paragraphs to bring in tables, which gets around both the 15 table join limit as well as the outer join problem. Additionally, the Query/Crystal method is Queries run on the client. So increased network traffic is an issue. Larger reports will probably encounter some performance problems, particularly if you try to view in a window. Need lots of memory on the client box. Formatting and "pretty-printing is an arguement FOR Crystal. Much easier to make reports with logos and fonts etc in Crystal. One thing that has been lost in the history of Query/Crystal is that it was originally intended in PeopleSoft as an end user tool for ad-hoc reporting..not really for daily production reports. Use it as such, and do anything that is part of production streams in SQR, so you have the option of running them on unix/mainframes to leverage performance issues. At 06:37 AM 10/13/98 -0700, you wrote: >Hi everyone, >We are in the process of implementing peoplsoft financials. Our >interfaces are ready and now a very interesting question has come up - > >For custom reports what criteria should we use to determine if it is >advisable to build the reports in sqr or crystal. Any feedback will be >appreciated. > Thanks in advance. >Satnam >(310) 380-5109 > > > > >_________________________________________________________ >DO YOU YAHOO!? >Get your free @yahoo.com address at http://mail.yahoo.com ! ! ! ! From owner-sqr-users@list.iex.net Tue Oct 13 10:11:08 1998 Date: Tue, 13 Oct 1998 09:35:04 -0500 From: Keith Zielinski Subject: Re: sqr Vs crystal We have PS Financials also(7.0/7.5). SQR Vs Crystal is really an open ended question to me. I have used both and each has its benefits depending on your system. SQR's are better particularly if you have large volumes to process but, creating a crystal report is fairly quick depending on the complexity of the report and can run acceptably fast for smaller volumes of data. Crystals are typically easier to modify than SQR's. A rule of thumb that we use is and that PeopleSoft recommends is use Crystal first, then SQR's if necessary because of the quicker editing time associated with most Crystal reports. For what it is worth, our main processes are SQR's and the reports are about half and half SQR/Crystal. "McCoy, Ken D (INPO)" on 13-10-98 08:52:59 AM Please respond to SQR-USERS@USA.NET To: Multiple recipients of list SQR-USERS cc: (bcc: Keith Zielinski/Milwaukee/RA/Rockwell) Subject: Re: sqr vs crystal Having worked in both SQR is my choice by far. > -----Original Message----- > From: Satnam Sanghera [SMTP:satnamssanghera@YAHOO.COM] > Sent: Tuesday, October 13, 1998 9:38 AM > To: Multiple recipients of list SQR-USERS > Subject: sqr vs crystal > > Hi everyone, > We are in the process of implementing peoplsoft financials. Our > interfaces are ready and now a very interesting question has come up - > > For custom reports what criteria should we use to determine if it is > advisable to build the reports in sqr or crystal. Any feedback will be > appreciated. > Thanks in advance. > Satnam > (310) 380-5109 > > > > > _________________________________________________________ > DO YOU YAHOO!? > Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Tue Oct 13 10:30:04 1998 Date: Tue, 13 Oct 1998 09:59:43 -0500 From: David Anderson Subject: sqr vs crystal -Reply Some basic rules of thumb: 1. If security is an issue then Crystal Reports as it utilizes PeopleSoft's Query security. 2. If the reports are ad-hoc, the criteria changes, or you are pulling from a minimal (four-six) records then Crystal Reports. 3. If you want to minimize the amount of time your developers are creating/modifying reports or you are empowering your general user community with the knowledge of PS/Query, then Crystal. 4. If you are building an in/outbound interface then SQR. 5. The program will be scheduled with minimal changes/modifications then SQR. Hope this gives you a start... Dave From owner-sqr-users@list.iex.net Tue Oct 13 10:41:08 1998 Date: Tue, 13 Oct 1998 08:30:48 -0700 From: "C. Duncan Hudson" Subject: Re: syntax for CALLING another SQR program ---Mark Kraft > Can't you make it an SQC and call it from the > initial SQR, then there is no need to worry about > logons and calls and so on and so forth. Just a > suggestion... That would work fine, if I could pass the SQC parameters. Can it be called with several runtime parameters? C. Duncan Hudson _________________________________________________________ DO YOU YAHOO!? Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Tue Oct 13 11:32:32 1998 Date: Tue, 13 Oct 1998 11:26:18 -0500 From: Wes Williams Subject: sqr vs crystal -Reply We use Maximo. I have about 40/60 with SQR at 60%.. Depending on your database there are things you can't (or are difficult to do in crystal)If you want quick and and sometimes easy and good looks.. use crystal. There are two reports we have, one was written in crystal and one in SQR ..both have the same output.. SQR takes 40 seconds, crystal takes at least 10 minutes and really puts a load on the server. For what it's worth Wes Williams >>> Satnam Sanghera 10/13/98 08:37am >>> Hi everyone, We are in the process of implementing peoplsoft financials. Our interfaces are ready and now a very interesting question has come up - For custom reports what criteria should we use to determine if it is advisable to build the reports in sqr or crystal. Any feedback will be appreciated. Thanks in advance. Satnam (310) 380-5109 _________________________________________________________ DO YOU YAHOO!? Get your free @yahoo.com address at http://mail.yahoo.com From owner-sqr-users@list.iex.net Tue Oct 13 11:56:15 1998 Date: Tue, 13 Oct 1998 12:51:01 -0400 From: Bob Buford Subject: Re: How to profile SQR code? Fred, I identify progress points and write to a text file (DEBUG.LOG) at each point. I can include various info in text to show what my variable values are. I don't always use time stamping, but certainly that is an easy option to include. I actually put the logging feature as part of an SQC so I could call it from a number of SQRs without copy/pasting all over. OTOH, one of my colleagues writest to a table (SQR_JOB_STATUS) when he reaches any progress point - time and other text information. Hope this helps, Bob >>> Schiff Fred 10/13 9:54 AM >>> How do I go about profiling a piece of SQR code? I want to see whats taking so long. I have a program which takes 2 hours to run. It produces seperate reports for around ~800 people, and the time has gone up as the number of reports it has to produce has gone up. I'm pretty confident that the queries are all ok, but I'd like to know for sure. The real problem is that I have to run the sqr report multiple times because of formating and where clause constraints, so its actually taking 6 hours every night. Fred Schiff (fschiff@nlfs.com) 212/354-8800 x250 Nathan & Lewis Securities, Inc. From owner-sqr-users@list.iex.net Tue Oct 13 12:49:27 1998 Date: Tue, 13 Oct 1998 13:38:54 -0400 From: "Wanko, Christopher G, CFCTRCFFIN" Subject: Re: sqr vs crystal -Reply > We use Maximo. I have about 40/60 with SQR at 60%.. Depending > on your database there are things you can't (or are difficult > to do in crystal)If you want quick and and sometimes easy and > good looks.. use crystal. There are two reports we have, one > was written in crystal and one in SQR ..both have the same > output.. SQR takes 40 seconds, crystal takes at least 10 > minutes and really puts a load on the server. I have to agree with Wes on the speed issue. SQR uses our direct Sybase connection, and this is much faster than any ODBC I can imagine. I'd say, in general, direct (non-ODBC) connectivity is really what's being compared when you compare the speed of both. If you could mate Crystal's output formatting with SQR's flexibility and speed, you'd have an all-around winner. To some extent, you can get the best of both worlds if you use SQR to extract the data and Crystal to format it, but unless you have plenty of spare time in order to coordinate and automate it, I wouldn't bother... -Chris From owner-sqr-users@list.iex.net Tue Oct 13 13:07:26 1998 Date: Tue, 13 Oct 1998 14:02:52 -0400 From: Marc Steele Subject: Printing multiple reports I created multiple reports in a SQR program (*.LIS, *.L01, *.L02, *.L03), except only my initial report (*.LIS) prints out, how do I get my other reports (*.L01, *.L02, *.L03) to print? From owner-sqr-users@list.iex.net Tue Oct 13 13:08:46 1998 Date: Tue, 13 Oct 1998 10:49:45 -0700 From: "Wade, Henry" Subject: process scheduler/job questions This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------ =_NextPart_000_01BDF6D1.DDB56FF8 Content-Type: text/plain Hi all, I have copied the process 'PER029' and called it 'PER029A'. This process(PER029A) sorts the database audit report via EMPLID. I then have created a job I call AUDIT that contains both PER029 and PER029A. When I run each PROCESS on the client they work fine. When I run the JOB that contains both process, the 1st process run less than 1 minute, no report is created and the process monitor states that it was successful. The 2nd process is initiated, but when looking at the request parms it states that the process was successfully cancelled. What am I missing to get both process to run within the job I created on the sever Henry Wade henry_wade@tempe.gov. I have attached copies of the job panels(audit.doc) and process scheduler panels(proc.doc) and process monitor(monitor.doc) results <> <> <> ------ =_NextPart_000_01BDF6D1.DDB56FF8 Content-Type: application/msword; name="audit.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="audit.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAPgAAAAAAAAAA EAAAQAAAAAEAAAD+////AAAAAD0AAAD///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAWQAJBAAAABK/AAAAAAAAEAAAAAAABAAABQQAAA4AYmpiavNX81cAAAAAAAAAAAAAAAAAAAAA AAAJBBYAD0kAAJE9AQCRPQEABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAF0AAAAAAJIAAAAAAAAAkgAAAJIA AAAAAAAAkgAAAAAAAACSAAAAAAAAAJIAAAAAAAAAkgAAABQAAAAAAAAAAAAAAKYAAAAAAAAApgAA AAAAAACmAAAAAAAAAKYAAAAAAAAApgAAAAwAAACyAAAADAAAAKYAAAAAAAAAfgMAALYAAADKAAAA AAAAAMoAAAAAAAAAygAAAAAAAADKAAAAAAAAAMoAAAAAAAAAzQIAAAAAAADNAgAAAAAAAM0CAAAA AAAAQwMAAAIAAABFAwAAAAAAAEUDAAAAAAAARQMAAAAAAABFAwAAAAAAAEUDAAAAAAAARQMAACQA AAA0BAAA9AEAACgGAABSAAAAaQMAABUAAAAAAAAAAAAAAAAAAAAAAAAAkgAAAAAAAADNAgAAAAAA AAAAAAAAAAAAAAAAAAAAAACNAgAAQAAAAM0CAAAAAAAAzQIAAAAAAADNAgAAAAAAAGkDAAAAAAAA 8wIAAAAAAACSAAAAAAAAAJIAAAAAAAAAygAAAAAAAAAAAAAAAAAAAMoAAADDAQAAygAAAAAAAADz AgAAAAAAAPMCAAAAAAAA8wIAAAAAAADNAgAAFgAAAJIAAAAAAAAAygAAAAAAAACSAAAAAAAAAMoA AAAAAAAAQwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAApgAAAAAAAACmAAAAAAAAAJIAAAAAAAAAkgAA AAAAAACSAAAAAAAAAJIAAAAAAAAAzQIAAAAAAABDAwAAAAAAAPMCAABQAAAA8wIAAAAAAAAAAAAA AAAAAEMDAAAAAAAAkgAAAAAAAACSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwMAAAAAAADKAAAAAAAAAL4AAAAMAAAAoJ2DdsH2 vQGmAAAAAAAAAKYAAAAAAAAA4wIAABAAAABDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA0N CA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA AQQAAAMEAAAEBAAABQQAAPoA+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkDagAAAABVCAEABAAEAAAC BAAAAwQAAAUEAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAQAAAIE AAADBAAABQQAAAAA/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBAQMcAB+w0C8g sOA9IbAIByKwCAcjkKAFJJCgBSWwAAAAbh7wfyEAAGfYslw1cH1d15TrbsvQKlz/iVBORw0KGgoA AAANSUhEUgAAAoAAAAHACAMAAAAFoyngAAAABGdBTUEAALGIlZj0pgAAAwBQTFRFAAAAgAAAAIAA gIAAAACAgACAAICAwMDAwNzApsrwBAQECAgIDAwMERERFhYWHBwcIiIiKSkpVVVVTU1NQkJCOTk5 /3yA/1BQ1gCTzOz/79bG5+fWramQMwAAZgAAmQAAzAAAADMAMzMAZjMAmTMAzDMA/zMAAGYAM2YA ZmYAmWYAzGYA/2YAAJkAM5kAZpkAmZkAzJkA/5kAAMwAM8wAZswAmcwAzMwA/8wAZv8Amf8AzP8A AAAzMwAzZgAzmQAzzAAz/wAzADMzMzMzZjMzmTMzzDMz/zMzAGYzM2YzZmYzmWYzzGYz/2YzAJkz M5kzZpkzmZkzzJkz/5kzAMwzM8wzZswzmcwzzMwz/8wzM/8zZv8zmf8zzP8z//8zAABmMwBmZgBm mQBmzABm/wBmADNmMzNmZjNmmTNmzDNm/zNmAGZmM2ZmZmZmmWZmzGZmAJlmM5lmZplmmZlmzJlm /5lmAMxmM8xmmcxmzMxm/8xmAP9mM/9mmf9mzP9m/wDMzAD/AJmZmTOZmQCZzACZAACZMzOZZgCZ zDOZ/wCZAGaZM2aZZjOZmWaZzGaZ/zOZM5mZZpmZmZmZzJmZ/5mZAMyZM8yZZsxmmcyZzMyZ/8yZ AP+ZM/+ZZsyZmf+ZzP+Z//+ZAADMMwCZZgDMmQDMzADMADOZMzPMZjPMmTPMzDPM/zPMAGbMM2bM ZmaZmWbMzGbM/2aZAJnMM5nMZpnMmZnMzJnM/5nMAMzMM8zMZszMmczMzMzM/8zMAP/MM//MZv+Z mf/MzP/M///MMwDMZgD/mQD/ADPMMzP/ZjP/mTP/zDP//zP/AGb/M2b/ZmbMmWb/zGb//2bMAJn/ M5n/Zpn/mZn/zJn//5n/AMz/M8z/Zsz/mcz/zMz//8z/M///Zv/Mmf//zP///2ZmZv9m//9mZmb/ /2b/Zv//pQAhX19fd3d3hoaGlpaWy8vLsrKy19fX3d3d4+Pj6urq8fHx+Pj4//vwoKCkgICA/wAA AP8A//8AAAD//wD/AP//////WCJOtwAAHhlJREFUeJztneuWqyyzRun99Rjc/91mvOuHu1UOVcVB 8FQYn7lWdxIURJkpxETaWAD0MMZOAGjxmQXUfhOA9wIBgSpOwF8AFICAQBUmoJn/m/n//Eu7auBp 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 NTCh1pur6pN4NidAQPYktpxag24KmL5Lkuo9Q8Bp3k8IyJ+kycmLi9khYFK/Rwg4fV4v4NJ7hZ7X iOSldZen6wuXbs21zSsEdNUzvq7Whifr8vgY9yZWdiQXuWerf68WcO29Qh9mZHLQz72wMelCpIC8 kr4y4SeuRyvJVx0E5tns39vPAUsCLlGENadoWzUBQ81CoGMR0NJ3T9iJYaCeLf69tws2VQFteDKY gCQ2+zqK9WiNR46Aq38QMBGQB5GhBTSy1rLG1p0WDgO5QSn491IBXcOIQQh5IiJg6NXsbQLy0Ucc hBjLqkKvA8o1xop/REDv36vPAYdFfBLSqZCpvtTFexb8e28XPDInCjhUBxwEjP5BwBH59s+CuX9v FFD7W8BbjF/DveRa44UCgpGAgECVWUDtb8qCN5PM2QHArfw/+qS4dBj5qH8AAAAASUVORK5CYIIA bh7wYhsAAH5xHlu3/+U8lmzvBJaT0Fz/iVBORw0KGgoAAAANSUhEUgAAAoAAAAHACAMAAAAFoyng AAAABGdBTUEAALGIlZj0pgAAAwBQTFRFAAAAgAAAAIAAgIAAAACAgACAAICAwMDAwNzApsrwBAQE CAgIDAwMERERFhYWHBwcIiIiKSkpVVVVTU1NQkJCOTk5/3yA/1BQ1gCTzOz/79bG5+fWramQMwAA ZgAAmQAAzAAAADMAMzMAZjMAmTMAzDMA/zMAAGYAM2YAZmYAmWYAzGYA/2YAAJkAM5kAZpkAmZkA zJkA/5kAAMwAM8wAZswAmcwAzMwA/8wAZv8Amf8AzP8AAAAzMwAzZgAzmQAzzAAz/wAzADMzMzMz ZjMzmTMzzDMz/zMzAGYzM2YzZmYzmWYzzGYz/2YzAJkzM5kzZpkzmZkzzJkz/5kzAMwzM8wzZswz mcwzzMwz/8wzM/8zZv8zmf8zzP8z//8zAABmMwBmZgBmmQBmzABm/wBmADNmMzNmZjNmmTNmzDNm /zNmAGZmM2ZmZmZmmWZmzGZmAJlmM5lmZplmmZlmzJlm/5lmAMxmM8xmmcxmzMxm/8xmAP9mM/9m mf9mzP9m/wDMzAD/AJmZmTOZmQCZzACZAACZMzOZZgCZzDOZ/wCZAGaZM2aZZjOZmWaZzGaZ/zOZ M5mZZpmZmZmZzJmZ/5mZAMyZM8yZZsxmmcyZzMyZ/8yZAP+ZM/+ZZsyZmf+ZzP+Z//+ZAADMMwCZ ZgDMmQDMzADMADOZMzPMZjPMmTPMzDPM/zPMAGbMM2bMZmaZmWbMzGbM/2aZAJnMM5nMZpnMmZnM zJnM/5nMAMzMM8zMZszMmczMzMzM/8zMAP/MM//MZv+Zmf/MzP/M///MMwDMZgD/mQD/ADPMMzP/ ZjP/mTP/zDP//zP/AGb/M2b/ZmbMmWb/zGb//2bMAJn/M5n/Zpn/mZn/zJn//5n/AMz/M8z/Zsz/ mcz/zMz//8z/M///Zv/Mmf//zP///2ZmZv9m//9mZmb//2b/Zv//pQAhX19fd3d3hoaGlpaWy8vL srKy19fX3d3d4+Pj6urq8fHx+Pj4//vwoKCkgICA/wAAAP8A//8AAAD//wD/AP//////WCJOtwAA F/xJREFUeJztneuWqyqzQMn5egzf/20z9vrBaaNAFRejopadzLn36iQEkI6zC/BC3ABgh3ODB7Di OQpo/UcA3wsCgimzgD8ABiAgmKIEdOP/bvx//GHdNPhrZLMLl78uc2gBnfuZ9JsMBNiGz8Z2+esy xzsBJ083tUHlL8umlHa9r3febFa8rZ5mzf19VWxx2y8E66kI6AIrBXRJwNHANSroJviWG0XKOQLq gkUlyHcm6wQcn08/TxKw/fLnCgEX/wAQ8ExqAs4vZAQc3XtZWAj48xPteygB/RRa5pfZQ/z5I3aw j0WyMj6EqVRl3ssnjVTpWh65kbzkXPPU/LjRbMO6+dDFSgGHKSKWAv64x2MW8BEiYNx12hvxEP+f 2uCjBGl/LxTVo7RQh6yh6FdjHl1fXlJtwJdbLNKhl7UCzr1wfRIyB8ApHsrIom2RamZ+ZEKECFQV MKbPdcZSWTBLW8020hSwtcXKnwL6HURvBHy4eRQ4xcGfZQF/fsQTuQtrAuavVNxpRsCWHtqdVgRs bbEUEAOPoXsM+NsF/3bCj1cHvCRgvk8Lx5qZU+jL0tXv8a4LXhQwK71CwEoTYA9+CNPeJQEXZsGP 1+jvEUaAWsCfNZOQkPyTjx1jmdA/ivRi73tRi6hTZZAbEZMQ0Vkv/x1kzTtqH3w1NQE3HAecjkM/ wgwYYCOdZ0Ie6SAMAsIO/FPh8tdlDh0Bf8d/YzWvOTDAZtwbyhz1y7EIgHAZXA8IpnBJPhiDgGAK AoIpCAimICCYogWcTpu4eA5PEk+yDJUMrpFe1NB8o1FyqUK3nGGh1lUVbisL+8gEzB4lTj91lTeX d1nbl2Vtd1S45u23JRDwCg4SsJa0UMHqd94XQ8C/TU3AV09adF9RzrmXLkOgG2LB+H+lgmbVoWSq JWxoKlEtFt+o16rLy5/LFbqp6MY+HDZTjgEnASu97LznhpRBvjvMyoX3qwJKxcqqB1U+1OIGVWe2 zbileq2pHe2asxIi/4qwDp20ImA5gnfpoTZPibs2zmPyPMKXemxM+ueaJC9qFYag1WxwUk/X1apQ zsUQ8FyaAhY51wooqtgmoAyi9TjV6jHLWKYbrFuWF663sB5V4WiWBNwUAcPeixpVd2+jCxY1y3+d XXB8WN0FZ/kR8Hw2TELCIHDqnpb6r6Eq4DAXXJqExGJ6KlOfhMSx48IkZBBbZBJyQzgTsgD2nY8S 0JUj+UG/19oly+/KLM0872vYVuGKJr2rEAHPhwgIpiAgmIKAYAoCgimzgE8AA6KAHsAAumA4j+ca sRAQzgIBwZTtAtb76fwbR/YlH7qNfZXdv9QVlV2xjd0C1nMcknzoNvZVdv9SV1R2XYMR8M+VQsDF rbjxyI3LklPi8/FMyY9Y/iHb9MUCPleUulDA+TDclgZPx+1EMbGNZ3hTVLZPwPxAYdqKvlhkThaJ j8cjJr+eD+mZ/gVfac6lsuI3qSQ7JxPzyrI3Q6lKsixV+SBW7n1VcbEtN6+/nZd6tnZcswkid9Hw //ul1fCfevIzS36Oq0WmZqxo8JjgnzI9bWNODseWwyaG99QEDGPJqYVJQP9v/C8TMCUKAcflzicD 52c1AcM4NhOwTI5DXedrAhZjX9dIVqVKZ1aq5HzRQjEWn5qYlfrdM4P//VifswZyx4mdlAmYdnPe hCUBX2uelcnBmpA8GdMSsNpgIWBh81zdVGe/gMnnJODv/vjnp38ublwlZhHwZWB4rAo47mNfRMAy eUoKiaWARYBsJOtS2aytUMnXVBJZZAQUZara/u7O1+54zvs37rhhQUAfd3PehAUB51X3Sptna6KA r/DSjIDVBgsBvd60ENAfIeBQi4CjAI+H+zd3aSFipEQp4GxejIQLEXBIpo1ZK8kpAg51AXWwiwLm ybrUL49dAkarq13w0IiAr7/oLAK+wozcF1rAmDtvQlvA6J9OnvTwKTkLgCsb/PuZDP6ZzNVd8Ovd 6exa/A3eszoC/n7M/0bXdEcnE5WAk3uxJ1a/4JQcQl3ajyowKgFDBGwJWBuXlcm61K9/j0dNwEdI fxMBhYBS2rLUK5wMY4c2OxUsGF8Xo+2Y8gpAZRP+TyAqe5H8U8nJv7hpHQBXN/iVw4eCYhtzomrw sRFwFODf9E91wSlRCzhI/1ZFwODljgiogp0QUCfrUrOBj5qAixGwLuBY1aMhoJ+7sue8U2bTXmlz bemTjkPwsEPXCTh6J/yTzjyLoJUHwHUNHp5yyjQMSvIpYc49v9ovYKhOd8H/3P/+N4YVsXGZqA7D DHImUnyIU197YASM/Wku4BzO6gKKd1dGwEezC379ttUuOO1sFeqeajYuBVT7Z6WAo3nSv2Ra8E+O AfMAuK7Bcl4stiFeHzQLFqgu2I+uFbPglPhQbVqIgHN1eSBpDQ1XRcA5mlUEbEfA8HYmoChUjh0G 1RjRBYeqahFwHuq9niTT1H6oC/jqBFcIKFb9jjvWi505Tg1SLCsC4KoGPwsDy5n2MbPgloD//nPu PzUGHGfBU+JrFiLbtDAGnKs7KgK6OQI+HkpAtzcCZl6KUo8YHGtd8GOhC566wnlqWXSP6pNWo8JX QFozCcn905X5ePxuUml8LQPgqgbLnlxuQ7w+U8DfHfqf++/3f32w4/e1fyUOWsDFWfCLoyJgnPBq Aefkh0iWpd4chlmIgM0ueGh0wYOaVAoBpyFWGvGlueY8Kgy5i8+uMgvO/EvDthD/ghx+FkwHrzUN TtbKnlmeG5mmwv0Czp9APgYMAspfcEz0vz+y33v5OOBU30HHAadgV0TAkOz9QgRsCrg0Bgzvbj4O GIxKv+6744C+9usO9cMw2r8k+WyND3K8Ylk2Al3Z4CmShhilu/n5RJ38i+kQ8DmEZ7IL9mNvW4wB Y+IzRcA3Z0Lm6qY91nsmROXQlS3NghWx4ZXk1rY2ngmZppbbzoTMMqwTcFD+Cclj1JKdqfZvbYOn oBR7Rymgn5zsF3A+DjNUBPzn//vvX3EcMCauPxc8VVccumslZ07UpKhXliUXTdAfRCN5xbbeajt3 gYPPIuCwGAGDQTsbHpLjoxDQ+zz3ugYLAUM4HYSA+i9m79UwcgioBBQOFHKMKVwNs1DKv3rAslRT wCHl3teEdrIe529q8BT5tBpxmuOPEVBeFLvvF6wlZ9uwqMy4lBdvG352Y7JXbGrwK3+mhg+JusFc kPrnSl0l4NnbmB+3C/iskX/z8L7kQ7exr7L7l7qisusavF1AdyKHbmNfZfcvdUVlV2xjr4AAB4KA YAoCgil2AvrbcPRvBkdzhoA32u3ufRYwRQj4iWHniYE3Jwl4mDcICOuJAh6nDQLCes4UUB3glLQT m0XK7KsyIuDdOVXA+CNjQcDm283ciyDg3SkFdOUTHWzSFxXWLbhOwPcg4N1ZJaB8oXd9bf8WArrw 1X9DfD4MRbIU0IVSzS8YjH8DTtQZv14w/sEg4N1ZK2AluXgxUxsDzk6Jr0ytJKciSSj9M31Np/Cu kXP+9TZ8FmBAXUA3BxYRbUTy4JI5TqgwZy9UflWUIpT87nLlTSqitJJayhwhWylgMhwB705VwJoV MjkFLhnWwo7PBcwFkUavFFBWqKuoCxhLIODd2SRgiFlpd7uKRO8EdBsFbHXBQ94FO5Vz/vUO/Kzg BDIBy5gifriUZYuAsq/NJiEyOe9glychQ/xbEO8yCfl7rBUw/VsvoAG5bwh4d/IueA5EehIinmQR MPR9bkBA2APngsEUBARTEBBMQUAw5YwvrLb+nQTPxtfpwS1wSUBrU+ALeSYBqyssAJyLTwJ2rsUA sJ1BCmgdjuELQUAwBQHBFAQEUxAQTEFAMAUBwRQEBFNqAlofHIevYEFA6xPU8BUsCHhZAIav5YmA YAkCgikICKYgIJiCgGAKAoIpawWcL1zdgsieP91Uk16Vxjn5dO9pmzPqhD2sF3DY6E1TQNcl4CCW /tivyhl1wh7uL6BeGyl/3McZdcIutgroxGJFxUP8KYuEAi6kOle8pV5nLUTAj2brGFD8Kx7i/6FI njVUJJb20+UqkXE25VBZzqgT9rEpAg6FVYNWs+h3awLKyKkErE4AEPCzOUJAlUV61hBwcPqtLHJq gt6v50cJeEKdsI9OAZtd8D4BSwnnQofOWM+oE3ayR8BVk5BwbK2chMhatH0VB4Ms2cYOEfDIOmEn nAkBUxAQTEFAMAUBwRQEBFMQEExBQDAFAcGURQGtb5qHL6At4LHf2ABQpy0gwFUgIJiCgGAKAoIp CAimICCYgoBgCgKCKU0Bty/J8S5/5b4P1sP4ehYEHGrOtGnc3ltWun8T8HkcK+C2PLgH7wVcvSSH uE1Y5Ir3YDr1UJQo8+va4UOpXg3zSxwDrr0fWIhXz5w9DFG0t9uwvmwDumi655oCjlcqyMCWe9NY kiPefO6UZEsCqvrLjFMW66s2oI8U7RTPBQGFWDUBhW7aQDEROUZAxol/HnF5s77QeZ+A7S64aZLT RQenqy6KuXwb8Jc5QsA0vMseBqFTSK5k1l1qUkp15ll+JiEfwl4Bz2ONU3j3MdxNwHUxDQE/hkLA sGvNIiB8FbmAMQIhIFxBJmA6/4+AcAVaQJcuckFAuIL+SYj1qRxL8oP6zI02c4CA7msZfO0zgy0c IeBVJw1vBwL2c4iAPyuxFuZoELAfYVM2vkHAtyBgP8mmcoQzrBbQ+5deQbHZtvQzvvgsELAf1QXr /6a0rQJm6iEgLJJsyv3zU+JeAccd9C0COnXwHrZwWgQcdxACwjuOioAvxBgw2IiAsMhZEfCLBExz NgTczlljwGkPfYWA6QoOBNzOSREwToG/QUC64A5OioBCwJGPU28iHoZR11DCFo6JgJwJmT+KM3fV Z3JMBETA+aM4d2d9IodEwG8FAfs5JAJ+KwjYDxGwAwTs54AIeFlb74f3lUvYYAv9EdA6DJlSu4QN ttAfAQE66I+AAB0QAcEUIiCYQgQEU4iAYAoREEw54EzIF1McFrxor30QR5wL/lo4FdcP54I7QMB+ uBqmAwTshwjYAQL2c0wEdKOEzoWT897Pz/ycLHJ8EgjYzzERUAiYP4kCOgSEksMjoHzi/RQJ/YcL 6LgtczenRkDvpYAOAaHgqAg4D/niGDC4FmREQKhydgRMAoZY+EGwNkw/Z48BU2icx4GfBGvD9HPy LDgeg/lkAemCOzgrAs7HAZWAHzsGZG2Y/XAmpAOOA/bDueAOELAfImAHCNgPEbADBOyHCNgBAvbD 2jA9sDZMN6wN00VxkT5shLviwBTuCwZTiIBgChEQTCECgilEQDCFCAimsDZMD8VhwYv22gfB2jAd cCquH84Fd4CA/XA1TAcI2A8RsAME7OestWHki0+7FSSCgP2ce1+w/PmBIGA/594X/CUCOm7L3A0R sAME7OfctWEQEN5ABOyAtWH6YQzYAWvD9EME7IAuuJ9rIuA8MPw0WBumH86EdMBxwH44F9wBAvZD BOwAAfshAnaAgP0QATtAwH5YG6YH1obphrVhuigu0oeNcFccmMJ9wWAKERBMIQKCKURAMKVt00s4 BIRzkV2w4omAcAFqDKjeWCugzaos96A4LHjqvvpIDhDwhEVX/giciuvnCAGvOu1wOxCwHwTsAAH7 QcAOELCfYwSsrw2jv7X6A+9NQsB+Dhew9uRTb45DwH4uEfBFjISfA7dl9oOAHSBgP0cJOI/92mPA T1woEAH7OT0CepHwmQKGo9IIuIcLBfy8Ppi1YfoRNmXnOY+dBX/kRJguuJ9kU3mmc+gQ0MeAFwaH 3n+sgKwNs5/+6wE5EyI+imN3zjfQfz0gAoqP4tR99ZFwLrgDBOwHATtAwH4QsAME7OcAAU9t371h bZhutIDiAMxqAa3DkCm1Q1ewhSwCpk+Ru+LgCvIuOP4VIyBcQTEGDJ4hIFxB/yQEoAMEBFMQEEzZ JeBlS1/A57P9esDvPvIHRxO0Wn09IMBlICCYgoBgCgKCKQgIpiAgmIKAYAoCgilNARevvwxvcI0m dLIg4JBEy5nTF/MArKBfQIAO3gs49bKhsw2vUp7piZNv/f4T+a/8deCvUb0a5hc1BpyEmh6G8BDT k3VZjljE4BIMuA1N9xYux/JeRTcpVHw1qCjZEHDKYn05BpiSop3izQWpIvpVQ99KARknfjt7r4hu C6g9rHTBKmJi4JfTK6DugvUkJA4Uxfwk5mcSAiNG94TgHUwgIJjCjelgCktzgCksTgSm9C/PBtDB AQtU/inyw/BMhow5YonePwSL6t6NL1sjGgHvBgKCKcd8V9yfAQHvxlHfFTfil740zsVHKYQr3p0r Sl8zLB+6v2wOAe+G6oL1f1PaSgFz75z4pkz15a25gF58mWb9SzbTAwJ+Hsmm3D8/JR4iYJJro4De KwFDIOwW0KnD7WDHiRHQISC85agIWI4BVwooxn4+q0gUcJX6EPATOC8Cqm+qbgtYeSyHj/NbRwmY ZlkIaM15Y0AxDuwQUBVPc+Q+AdM1FwhozYkRUAi4PAteEDANA+P4r8tAuuC7cXAE9HIMp1OigDKK JfFcoWscG8oh5UEChutuEdCaYyLgn4HjgHfjmAi4Gdc/nNsFAt4NIiCYYhQBrUDAu0EEBFMOiICX tfUIvK9cdAZ29EdA66C2kdpFZ2BHfwQE6KA/AgJ0QAQEU4iAYAoREEwhAoIpREAw5YAzIX+K4rDg RZ8zNDjiXPAfglNxd4NzwWAKV8OAKURAMOW8+4K9un1jzhEz6ptHvL7/I0soKkPAz+H0tWGigOmh uH2u8rPMg4Afyelrw7wXMPy4UkDHbZk34fS1YRAQljh9bZgoYDCtktFlAjYzI+DHcfraMFHA9FCZ aVwbAcNRaQS05/S1Yd4L6LNFDy7ogoN/CGjO6WvD3FJAuuDbcP7aMHUBdcY3AsbMhwnI2jB3gTMh YMrZ54LFFOMOIODdIAKCKVwNA6YQAcEU1oYBU1gbBkzhrjgwhfuCwRQiIJhCBARTiIBgChEQTCEC gimsDQOmsDYMmMK5YDCFq2HAFCIgmHLx2jDFo/expHxAwG/h0rVhxL3q2e1z2QMCfg2Xrg2zIKD3 lwrouC3zJly6NgwCQs6la8OEnD4roe4HPnUQiIB34+K1YRYiYMx8voDhqDQC2nPx2jBtAVPeCyJg 8A8Bzbl4bZjFWbDPVTxNQLrg23Dx2jBiLChL6DHief551oa5G5wJAVNYGwZMIQKCKVwNA6YQAcEU 1oYBU1gbBkzhrjgwhfuCwRQiIJhCBARTiIBgStuml3AICOciu2DFEwHhAtQYUL2BgHABCAimICCY goBgCgKCKQgIpiAgmIKAYAoCgikICKYgIJiCgGCKsOlZuV0HAeFckk3ld2oMCAhnw/WAYArXA4Ip TELAFAQEUxAQTEFAMEULKA7AICBcQRYB03o9CAhXkHfBcb0oBIQrKMaAwTMEhCtgEgKmICCYgoBg yi4BnwBHsf16wL+2KjTcm6DV6usBAS4DAcEUBARTEBBMQUAwBQHBFAQEUxAQTEFAMAUBwRQEBFMQ EExBQDAFAcEUBARTEBBMQUAwBQHBFAQEUxAQTBECWjcFvpEkoPW9U/CdRAEBbEBAMOULBTRZIWA9 /vYt3EvVs28U0LoBy3zulBABJ26+exHw0xl3b1qsOKOd2CxSZl+bscosoCtaU6vTxY29zWpP4dmY 8K0CDkNrj7YSm0XauXfxVkCn0lxtY39DQD/+ngioOUrA/ewQsNjknxDQPxFwWrV97MeG+HwYimQp oAulsp/hhxDFiTpjX/m2d/ZFC1Mr5h9xtXkn8sU3wguX3r8H2rPJv68VMI3TZqeCJiGXTk5FklD6 p1M2LOdcJBdwUK1IVbj0vti+/C3WbO1KlGejf98+BhzmgJEiVNx1InlIO3l+UDs5ailzxJg0aCnW CLEkYGiX2GqxtSBeyLr7czoc6dnLv2/vgktBhElrBRwGXe6dgG+NWBAwD6KuyBezrI23VyI8m/xD wOre3SBgqwse8i7YrVdirYCqrUUXHENm32d1KGLB8ujflwso+9psEqK7vVRk0qv8OaS9LTq/+O7m SYiefaRJiMvaKpqX57hX/BMCBv++eAxowFoXsjMhGxVyiy9tCZ5F/764CzbAQMBbdcBRwOQfAt6R Tz8XrP37RgGtrwJ+x/1buJfa3vhCAeFOICCYMgpofaUsfDPFd3gBXMr/AytpMnjLvXB4AAAAAElF TkSuQmCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAABIADwAKAAEAWwAPAAIAAAAAAAAAJAAAQPH/AgAkAAAABgBOAG8A cgBtAGEAbAAAAAIAAAAEAG1ICQQAAAAAAAAAAAAAAAAAAAAAAAA8AEFA8v+hADwAAAAWAEQAZQBm AGEAdQBsAHQAIABQAGEAcgBhAGcAcgBhAHAAaAAgAEYAbwBuAHQAAAAAAAAAAAAAAAAAAAAAAAUA AAAGAAAMAAAAAP////8ABAAABQQAAAMAAAAABAAABQQAAAQAAAAABAAABQQAAAUAAAAPAADwmAAA AAAABvAYAAAAAggAAAIAAAADAAAAAQAAAAEAAAAEAAAALwAB8FgAAABiAAfwJAAAAAYGZ9iyXDVw fV3XlOtuy9AqXP8AhyEAAAEAAAAeDAAAAAAAAGIAB/AkAAAABgZ+cR5bt//lPJZs7wSWk9Bc/wBq GwAAAQAAAKUtAAAAAAAAQAAe8RAAAAD//wAAAAD/AICAgAD3AAAQAA8AAvAaAQAAEAAI8AgAAAAD AAAAAwQAAA8AA/C4AAAADwAE8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAAAAACAArwCAAAAAAE AAAFAAAADwAE8DwAAACyBArwCAAAAAIEAAAACgAAIwAL8AwAAAAEQQEAAAD/AQAACAAAABDwBAAA AAAAAAAAABHwBAAAAAEAAAAPAATwPAAAALIECvAIAAAAAwQAAAAKAAAjAAvwDAAAAARBAgAAAP8B AAAIAAAAEPAEAAAAAQAAAAAAEfAEAAAAAQAAAA8ABPBCAAAAEgAK8AgAAAABBAAAAA4AAFMAC/Ae AAAAvwEAABAAywEAAAAA/wEAAAgABAMJAAAAPwMBAAEAAAAR8AQAAAABAAAAAAAAAAMAAAAFAAAA AgQAAAAAAAAAAAAAwCEAAKAXAAA0AAAAAAADBAAAAAAAAAAAAADAIQAAoBcAADQAAAAAAAAAAAAD AAAABAAAAAcAAAAHAAQABwAAAAAAAwAAAAcAAAAHAAQA//8CAAAACgBIAEUATgBSAFkAIABXAEEA RABFABkAQwA6AFwATQB5ACAARABvAGMAdQBtAGUAbgB0AHMAXABhAHUAZABpAHQALgBkAG8AYwD/ QAGAAQAEAAAABAAAALAXdAAAAAAABAAAAAAAAAAEAAAAAAAAAAIQAAAAAAAAAAUAAABgAAAIAEAA AAMAAABHFpABAAACAgYDBQQFAgMEAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAVABpAG0AZQBzACAA TgBlAHcAIABSAG8AbQBhAG4AAAA1FpABAgAFBQECAQcGAgUHAAAAAAAAABAAAAAAAAAAAAAAAIAA AAAAUwB5AG0AYgBvAGwAAAAzJpABAAACCwYEAgICAgIEAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA QQByAGkAYQBsAAAAIgAEAPEIiBgAANACAABoAQAAAAAzaipGNGoqRgAAAAABAAEAAAAAAAAABAAA AAEAAQAAAAQAAxABAAAAAAAAAAAAAAABAAEAAAABAAAAAAAAACEDAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAKUGwAe0ALQAgAByMAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAD/ /xIAAAAAAAAAAAAAAAAAAAAKAEgARQBOAFIAWQAgAFcAQQBEAEUACgBIAEUATgBSAFkAIABXAEEA RABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAD+/wAABAACAAAAAAAAAAAAAAAAAAAAAAABAAAA4IWf8vlPaBCrkQgAKyez2TAA AABcAQAAEAAAAAEAAACIAAAAAgAAAJAAAAADAAAAnAAAAAQAAACoAAAABQAAALwAAAAHAAAAyAAA AAgAAADcAAAACQAAAPAAAAASAAAA/AAAAAoAAAAYAQAADAAAACQBAAANAAAAMAEAAA4AAAA8AQAA DwAAAEQBAAAQAAAATAEAABMAAABUAQAAAgAAAOQEAAAeAAAAAQAAAAAAcwAeAAAAAQAAAAAAcwAe AAAACwAAAEhFTlJZIFdBREUAAB4AAAABAAAAAEVOUh4AAAALAAAATm9ybWFsLmRvdAAAHgAAAAsA AABIRU5SWSBXQURFAAAeAAAAAgAAADEATlIeAAAAEwAAAE1pY3Jvc29mdCBXb3JkIDguMAAAQAAA AABGwyMAAAAAQAAAAACKA0bB9r0BQAAAAADQxmnB9r0BAwAAAAEAAAADAAAAAAAAAAMAAAAEAAAA AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA/v8AAAQAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAALVzdWcLhsQk5cIACss+a5EAAAABdXN1Zwu GxCTlwgAKyz5rjgBAAD0AAAADAAAAAEAAABoAAAADwAAAHAAAAAFAAAAiAAAAAYAAACQAAAAEQAA AJgAAAAXAAAAoAAAAAsAAACoAAAAEAAAALAAAAATAAAAuAAAABYAAADAAAAADQAAAMgAAAAMAAAA 1QAAAAIAAADkBAAAHgAAAA4AAABDaXR5IG9mIFRlbXBlADIAAwAAAAEAAAADAAAAAQAAAAMAAAAE AAAAAwAAAOgQCAALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAB4QAAABAAAAAQAAAAAM EAAAAgAAAB4AAAAGAAAAVGl0bGUAAwAAAAEAAAAAmAAAAAMAAAAAAAAAIAAAAAEAAAA2AAAAAgAA AD4AAAABAAAAAgAAAAoAAABfUElEX0dVSUQAAgAAAOQEAABBAAAATgAAAHsAMAA3AEEARAA1AEQA NgAwAC0ANgAyADcAQQAtADEAMQBEADIALQBBADMAOABDAC0AMAA4ADAAMAAwADkARAA4AEIAMwBD ADkAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAC AAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAA AAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAA AB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAAP7///8mAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAA /v///y4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAD+////NgAAADcAAAA4AAAAOQAAADoAAAA7 AAAAPAAAAP7////9////PwAAAP7////+/////v////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////UgBvAG8A dAAgAEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABYABQH//////////wMAAAAGCQIAAAAAAMAAAAAAAABGAAAAAEDmO3bB9r0BgNCsdsH2vQFBAAAA gAAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAADgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAACUAAAAAEAAAAAAAAFcAbwByAGQARABvAGMAdQBtAGUAbgB0AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAIBBQAAAP//////////AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9JAAAAAAAABQBTAHUAbQBtAGEAcgB5AEkAbgBm AG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAgECAAAABAAAAP// //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAAAAABAAAAAAAAAFAEQAbwBj AHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAA OAACAf///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUAAAAA EAAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAASAAIBAQAAAAYAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAGoAAAAAAAAATwBiAGoAZQBjAHQAUABvAG8AbAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAQD///////////////8AAAAAAAAAAAAAAAAA AAAAAAAAAIDQrHbB9r0BgNCsdsH2vQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD+//// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////AQD+/wMKAAD/ ////BgkCAAAAAADAAAAAAAAARhgAAABNaWNyb3NvZnQgV29yZCBEb2N1bWVudAAKAAAATVNXb3Jk RG9jABAAAABXb3JkLkRvY3VtZW50LjgA9DmycQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= ------ =_NextPart_000_01BDF6D1.DDB56FF8 Content-Type: application/msword; name="PROC.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="PROC.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAAkgAAAAAAAAAA EAAAlAAAAAEAAAD+////AAAAAJAAAACRAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAWQAJBAAAABK/AAAAAAAAEAAAAAAABAAAOgQAAA4AYmpiavNX81cAAAAAAAAAAAAAAAAAAAAA AAAJBBYA5+4AAJE9AQCRPQEAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAF0AAAAAAMYAAAAAAAAAxgAAAMYA AAAAAAAAxgAAAAAAAADGAAAAAAAAAMYAAAAAAAAAxgAAABQAAAAAAAAAAAAAANoAAAAAAAAA2gAA AAAAAADaAAAAAAAAANoAAAAAAAAA2gAAAAwAAADmAAAADAAAANoAAAAAAAAATgYAALYAAAD+AAAA AAAAAP4AAAAAAAAA/gAAAAAAAAD+AAAAAAAAAP4AAAAAAAAAOQUAAAAAAAA5BQAAAAAAADkFAAAA AAAAEwYAAAIAAAAVBgAAAAAAABUGAAAAAAAAFQYAAAAAAAAVBgAAAAAAABUGAAAAAAAAFQYAACQA AAAEBwAA9AEAAPgIAABSAAAAOQYAABUAAAAAAAAAAAAAAAAAAAAAAAAAxgAAAAAAAAA5BQAAAAAA AAAAAAAAAAAAAAAAAAAAAACBBAAAuAAAADkFAAAAAAAAOQUAAAAAAAA5BQAAAAAAADkGAAAAAAAA WQUAAAAAAADGAAAAAAAAAMYAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAACDAwAA/gAAAAAAAABZ BQAAAAAAAFkFAAAAAAAAWQUAAAAAAAA5BQAACgAAAMYAAAAAAAAA/gAAAAAAAADGAAAAAAAAAP4A AAAAAAAAEwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2gAAAAAAAADaAAAAAAAAAMYAAAAAAAAAxgAA AAAAAADGAAAAAAAAAMYAAAAAAAAAOQUAAAAAAAATBgAAAAAAAFkFAAC6AAAAWQUAAAAAAAAAAAAA AAAAABMGAAAAAAAAxgAAAAAAAADGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwYAAAAAAAD+AAAAAAAAAPIAAAAMAAAAIOGo7cX2 vQHaAAAAAAAAANoAAAAAAAAAQwUAABYAAAATBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA0I DQgNDVBFUjAyOSBTVFVGRiBBQk9WRQ0NDQ1QRVIwMjlBIFNUVUZGIEZPTExPV1MNDQgNCA0IDQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA AQQAAAIEAAADBAAABAQAAAUEAAAGBAAAGwQAADMEAAA0BAAANQQAADYEAAA3BAAAOAQAADkEAAA6 BAAA+gD6APoA9gD2+vb69vr2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNQiBQ0oYAAkDagAAAABVCAEADwAEAAAC BAAABAQAAAYEAAAHBAAAGgQAABsEAAAcBAAAHQQAADMEAAA0BAAANgQAADgEAAA6BAAA/QAAAAAA AAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD7AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAEAAAANAAQAAAIE AAAEBAAABgQAAAcEAAAaBAAAGwQAABwEAAAdBAAAMwQAADQEAAA2BAAAOAQAADoEAAD+AAAAAAAA APsAAAD+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUCAQAFAAIBAQ0cAB+w0C8g sOA9IbAIByKwCAcjkKAFJJCgBSWwAAAAbh7wuCUAAGApe4EalZX/E2xWFpFdl2P/iVBORw0KGgoA AAANSUhEUgAAAoAAAAHACAMAAAAFoyngAAAABGdBTUEAALGIlZj0pgAAAwBQTFRFAAAAgAAAAIAA gIAAAACAgACAAICAwMDAwNzApsrwBAQECAgIDAwMERERFhYWHBwcIiIiKSkpVVVVTU1NQkJCOTk5 /3yA/1BQ1gCTzOz/79bG5+fWramQMwAAZgAAmQAAzAAAADMAMzMAZjMAmTMAzDMA/zMAAGYAM2YA ZmYAmWYAzGYA/2YAAJkAM5kAZpkAmZkAzJkA/5kAAMwAM8wAZswAmcwAzMwA/8wAZv8Amf8AzP8A AAAzMwAzZgAzmQAzzAAz/wAzADMzMzMzZjMzmTMzzDMz/zMzAGYzM2YzZmYzmWYzzGYz/2YzAJkz M5kzZpkzmZkzzJkz/5kzAMwzM8wzZswzmcwzzMwz/8wzM/8zZv8zmf8zzP8z//8zAABmMwBmZgBm mQBmzABm/wBmADNmMzNmZjNmmTNmzDNm/zNmAGZmM2ZmZmZmmWZmzGZmAJlmM5lmZplmmZlmzJlm /5lmAMxmM8xmmcxmzMxm/8xmAP9mM/9mmf9mzP9m/wDMzAD/AJmZmTOZmQCZzACZAACZMzOZZgCZ zDOZ/wCZAGaZM2aZZjOZmWaZzGaZ/zOZM5mZZpmZmZmZzJmZ/5mZAMyZM8yZZsxmmcyZzMyZ/8yZ AP+ZM/+ZZsyZmf+ZzP+Z//+ZAADMMwCZZgDMmQDMzADMADOZMzPMZjPMmTPMzDPM/zPMAGbMM2bM ZmaZmWbMzGbM/2aZAJnMM5nMZpnMmZnMzJnM/5nMAMzMM8zMZszMmczMzMzM/8zMAP/MM//MZv+Z mf/MzP/M///MMwDMZgD/mQD/ADPMMzP/ZjP/mTP/zDP//zP/AGb/M2b/ZmbMmWb/zGb//2bMAJn/ M5n/Zpn/mZn/zJn//5n/AMz/M8z/Zsz/mcz/zMz//8z/M///Zv/Mmf//zP///2ZmZv9m//9mZmb/ /2b/Zv//pQAhX19fd3d3hoaGlpaWy8vLsrKy19fX3d3d4+Pj6urq8fHx+Pj4//vwoKCkgICA/wAA AP8A//8AAAD//wD/AP//////WCJOtwAAIABJREFUeJztndmS4yyzRanzVwTv/7aOry84ZUtAZjII ZFBq2LurPSAmwVIySGBjIUhPxlgHQVp6vQHUvgig5woAQqpaAfyFIAUBQEhVDEDz/jPvv/eLdtag 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 HurKcxb4e3ATfGINBPBUDXAAMPIHAM+ou98L5vw9EUDtp4C3dP4c7lWuNh4IIHQmAUBIVW8AtZ+U hZ6sZM8OCDpU/w+aTZhBT9M/AgAAAABJRU5ErkJgggBuHvCOJQAAlEbb3BZQGCYhymqT7AEnE/+J UE5HDQoaCgAAAA1JSERSAAACgAAAAcAIAwAAAAWjKeAAAAAEZ0FNQQAAsYiVmPSmAAADAFBMVEUA AACAAAAAgACAgAAAAICAAIAAgIDAwMDA3MCmyvAEBAQICAgMDAwREREWFhYcHBwiIiIpKSlVVVVN TU1CQkI5OTn/fID/UFDWAJPM7P/v1sbn59atqZAzAABmAACZAADMAAAAMwAzMwBmMwCZMwDMMwD/ MwAAZgAzZgBmZgCZZgDMZgD/ZgAAmQAzmQBmmQCZmQDMmQD/mQAAzAAzzABmzACZzADMzAD/zABm /wCZ/wDM/wAAADMzADNmADOZADPMADP/ADMAMzMzMzNmMzOZMzPMMzP/MzMAZjMzZjNmZjOZZjPM ZjP/ZjMAmTMzmTNmmTOZmTPMmTP/mTMAzDMzzDNmzDOZzDPMzDP/zDMz/zNm/zOZ/zPM/zP//zMA AGYzAGZmAGaZAGbMAGb/AGYAM2YzM2ZmM2aZM2bMM2b/M2YAZmYzZmZmZmaZZmbMZmYAmWYzmWZm mWaZmWbMmWb/mWYAzGYzzGaZzGbMzGb/zGYA/2Yz/2aZ/2bM/2b/AMzMAP8AmZmZM5mZAJnMAJkA AJkzM5lmAJnMM5n/AJkAZpkzZplmM5mZZpnMZpn/M5kzmZlmmZmZmZnMmZn/mZkAzJkzzJlmzGaZ zJnMzJn/zJkA/5kz/5lmzJmZ/5nM/5n//5kAAMwzAJlmAMyZAMzMAMwAM5kzM8xmM8yZM8zMM8z/ M8wAZswzZsxmZpmZZszMZsz/ZpkAmcwzmcxmmcyZmczMmcz/mcwAzMwzzMxmzMyZzMzMzMz/zMwA /8wz/8xm/5mZ/8zM/8z//8wzAMxmAP+ZAP8AM8wzM/9mM/+ZM//MM///M/8AZv8zZv9mZsyZZv/M Zv//ZswAmf8zmf9mmf+Zmf/Mmf//mf8AzP8zzP9mzP+ZzP/MzP//zP8z//9m/8yZ///M////ZmZm /2b//2ZmZv//Zv9m//+lACFfX193d3eGhoaWlpbLy8uysrLX19fd3d3j4+Pq6urx8fH4+Pj/+/Cg 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 H6zW/op1amtyT3wjo59vANS+aFXVS++YGO4AAAIcSURBVHyjvBsAvJlkkxBKDKvipmijvAFgmH8G gFO0Ud4AMJ4AgDOEhelCAPBYAUAhAHisAKAQADxWuwAcvXvDqRSLQZzoA1Al71dUvbxzAN59Vstf 5jfPA969jEaqWt5ZACHoKAFASFUAEFIVAIRURQDUzgr0REUAtcdK0DMVAIQgHQFASFUPBFDljkC7 3OlzuFdZzp4IoHYG6rrvkBAALjp59QLAu+tdvc13f4U/Ex7pNeFlsFYA0/hziZmQwU2v+ko4ezs8 FUBr26rJMH9H1PImgOkXIsnJNQB07+sEgHVxjycFMMnKJQB0vwDw3XotTRh/9S+EA7P4/VT55+Ny sLqzMN9JAGhCzkzMhI3tLnk3wXvM15lYFItZP/w9FkBDK8jIV0OrlnsL+AV/xGlEdUsASc6sJcmY eJ5kOXofl6NRYpy9+Xt6H1BUMMWS+giGSNSxqPBRlV0DMGQiZpRaQEu/KCG/pxHl7MPf05vgFEBr 4ztvgk30XwZwSG1XACRmOGSO+6OZO7MFXPgDgG1NMLcsZQCnN8EsGSMzKDO32MHvMzRMZIFS4A8A bg1CTPwgLGBo6uzQ6vYT0Wz0EQchxrJU6Tyg9HEu+0cA9Pw9uA94Yok7IZ0Imeqhrjxngb8HN8En 1kAAT9UABwAjfwDwjLr7vWDO3xMB1H4KeEvnz+Fe5WrjgQBCZxIAhFT1BlD7SVnoyUr27ICgQ/X/ Znqq02h0WxsAAAAASUVORK5CYIIAbh7wACYAAKxSgOFdytEpeWde3cqjCi7/iVBORw0KGgoAAAAN SUhEUgAAAoAAAAHACAMAAAAFoyngAAAABGdBTUEAALGIlZj0pgAAAwBQTFRFAAAAgAAAAIAAgIAA AACAgACAAICAwMDAwNzApsrwBAQECAgIDAwMERERFhYWHBwcIiIiKSkpVVVVTU1NQkJCOTk5/3yA /1BQ1gCTzOz/79bG5+fWramQMwAAZgAAmQAAzAAAADMAMzMAZjMAmTMAzDMA/zMAAGYAM2YAZmYA mWYAzGYA/2YAAJkAM5kAZpkAmZkAzJkA/5kAAMwAM8wAZswAmcwAzMwA/8wAZv8Amf8AzP8AAAAz MwAzZgAzmQAzzAAz/wAzADMzMzMzZjMzmTMzzDMz/zMzAGYzM2YzZmYzmWYzzGYz/2YzAJkzM5kz ZpkzmZkzzJkz/5kzAMwzM8wzZswzmcwzzMwz/8wzM/8zZv8zmf8zzP8z//8zAABmMwBmZgBmmQBm zABm/wBmADNmMzNmZjNmmTNmzDNm/zNmAGZmM2ZmZmZmmWZmzGZmAJlmM5lmZplmmZlmzJlm/5lm AMxmM8xmmcxmzMxm/8xmAP9mM/9mmf9mzP9m/wDMzAD/AJmZmTOZmQCZzACZAACZMzOZZgCZzDOZ /wCZAGaZM2aZZjOZmWaZzGaZ/zOZM5mZZpmZmZmZzJmZ/5mZAMyZM8yZZsxmmcyZzMyZ/8yZAP+Z M/+ZZsyZmf+ZzP+Z//+ZAADMMwCZZgDMmQDMzADMADOZMzPMZjPMmTPMzDPM/zPMAGbMM2bMZmaZ mWbMzGbM/2aZAJnMM5nMZpnMmZnMzJnM/5nMAMzMM8zMZszMmczMzMzM/8zMAP/MM//MZv+Zmf/M zP/M///MMwDMZgD/mQD/ADPMMzP/ZjP/mTP/zDP//zP/AGb/M2b/ZmbMmWb/zGb//2bMAJn/M5n/ Zpn/mZn/zJn//5n/AMz/M8z/Zsz/mcz/zMz//8z/M///Zv/Mmf//zP///2ZmZv9m//9mZmb//2b/ Zv//pQAhX19fd3d3hoaGlpaWy8vLsrKy19fX3d3d4+Pj6urq8fHx+Pj4//vwoKCkgICA/wAAAP8A //8AAAD//wD/AP//////WCJOtwAAIABJREFUeJztnem2qyyzhcn51hjc/91mvPsHJ4kCVUUjKFo2 c+610yA9jwWoEGMhSE/GWAdBWnp/AdQ+CaDnCgBCqpoB/IMgBQFASFUMQPP9M9+/74t21qCrScwu jPye+uAAGvM34TcRCEF9cmJsJ7+nPpYAnDjtygPzn4aNLuV4f0eqyXbnK/H/+ZZkpa+kUKIMgMar EUATAfwSuIyCzIJj/vcDcFu+0rCAb4DaAPx+nl53ArD89U8VwOqZAQAHKAfg/IVawC97PwoTAP/+ An0vBqCbLMj8VbyF1z/Sji4EEWGct0YxStmbRlpY6IyPvnyR43M+nP/252SOeHioRY0A2skipgD+ mddrBvDlLWBoIc4NeQt/Ux5caOvYrJWgfDDm46AxJN3nmnzRKJk3l2YlcYca1Qrg3AvnJyGzAZzs ITUgnBaKgOCDABPbMzF9wn2OM4QSNium+kfTa84XAbCUlQzGwK9PWy3gy8yjwMkO/tUb+u+PfKAt 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 Ezb2u+TdBO8xX2diUSxm/fH3WAANbSAjXw1tWu4t4Bf8EacRzS0BJDmzliRj4nGS5eh9XI5GiXH2 5e/pY0DRwBRL6iMYItHGosFHNXYNwJCJmFFqAS09UUJ+TyPK2Y+/p3fBKYDWxnfeBZvovwzgkNau AEjMcMgc90czd2YLOPEHANu6YG5ZygDu3gWzZIzMoMzcZAe3Z2iYyAKlwB8AXJqEmPhBWMDQ1dmh ze0vRLPZR5yEGMtSpdcBpY9z2T8CoOfvwWPAE0vcCelEyFS/6spzFvh7cBd8Yg0E8FQdcAAw8gcA z6i73wvm/D0RQO2ngJd0/hyuVa41HgggdCYBQEhVXwC1n5SFnqxkzw4IOlT/D+nEseBN67V5AAAA AElFTkSuQmCCAG4e8OMlAABANxDxijB/Jv+u8zo0oiJo/4lQTkcNChoKAAAADUlIRFIAAAKAAAAB wAgDAAAABaMp4AAAAARnQU1BAACxiJWY9KYAAAMAUExURQAAAIAAAACAAICAAAAAgIAAgACAgMDA wMDcwKbK8AQEBAgICAwMDBERERYWFhwcHCIiIikpKVVVVU1NTUJCQjk5Of98gP9QUNYAk8zs/+/W xufn1q2pkDMAAGYAAJkAAMwAAAAzADMzAGYzAJkzAMwzAP8zAABmADNmAGZmAJlmAMxmAP9mAACZ ADOZAGaZAJmZAMyZAP+ZAADMADPMAGbMAJnMAMzMAP/MAGb/AJn/AMz/AAAAMzMAM2YAM5kAM8wA M/8AMwAzMzMzM2YzM5kzM8wzM/8zMwBmMzNmM2ZmM5lmM8xmM/9mMwCZMzOZM2aZM5mZM8yZM/+Z MwDMMzPMM2bMM5nMM8zMM//MMzP/M2b/M5n/M8z/M///MwAAZjMAZmYAZpkAZswAZv8AZgAzZjMz ZmYzZpkzZswzZv8zZgBmZjNmZmZmZplmZsxmZgCZZjOZZmaZZpmZZsyZZv+ZZgDMZjPMZpnMZszM Zv/MZgD/ZjP/Zpn/Zsz/Zv8AzMwA/wCZmZkzmZkAmcwAmQAAmTMzmWYAmcwzmf8AmQBmmTNmmWYz mZlmmcxmmf8zmTOZmWaZmZmZmcyZmf+ZmQDMmTPMmWbMZpnMmczMmf/MmQD/mTP/mWbMmZn/mcz/ mf//mQAAzDMAmWYAzJkAzMwAzAAzmTMzzGYzzJkzzMwzzP8zzABmzDNmzGZmmZlmzMxmzP9mmQCZ zDOZzGaZzJmZzMyZzP+ZzADMzDPMzGbMzJnMzMzMzP/MzAD/zDP/zGb/mZn/zMz/zP//zDMAzGYA /5kA/wAzzDMz/2Yz/5kz/8wz//8z/wBm/zNm/2ZmzJlm/8xm//9mzACZ/zOZ/2aZ/5mZ/8yZ//+Z /wDM/zPM/2bM/5nM/8zM///M/zP//2b/zJn//8z///9mZmb/Zv//ZmZm//9m/2b//6UAIV9fX3d3 d4aGhpaWlsvLy7KystfX193d3ePj4+rq6vHx8fj4+P/78KCgpICAgP8AAAD/AP//AAAA//8A/wD/ /////1giTrcAACAASURBVHic7Z3rtqMss4XJ/tYY3P/dZrz9g51EgariIBiwNM7Zq5OInHlSgAox FoL0ZIx1EKSl5xtA7S8BdF8BQEhVK4B/EKQgAAipigFo3n/m/fd+0c4adDWJ2YWRx6kPDqAxfwt+ C4EQ1CcnxnbyOPWxBeDCaVcemP80bHQpx/s5U022O1+J/9dRkpW+kkKJMgAar0YATQTwTeA2CjIL jvmfB+B3+UrDAr4BagPw/Xl5nQRg+fBPFcDqNwMADlAOwPWAWsA3ex8KEwD//gJ9DwagWyzIeije wusfaUcXgogwzlujGKXsTSMtLHTGR1++yPk1H84f/TmZIx4ealEjgHaxiCmAf+bxWAF8eAsYWohz Q97C35IHF9o6NmslKB+M+ThoDEn3uSdfNErmzaVZSdyhRrUCuPbC+UnIagAXe0gNCKeFIiD4IMDE 9kxMn3Bf4wyhhM2Kqf7R9JrzRQAsZSWDMfDr07cW8GHWUeBiB//qDf33Rz7QlsoBKI9S8/THIyDx ZijozhezgKWspACCwC59PQZ8dcGvTvjx6YBrANa7uprnaPqE