RE: [U2] Automatic Invoice - PO Matching Software

2008-11-18 Thread Les Hewkin
Forgot to mention we use 1mage for our image storage.  


Les Sherlock Hewkin 
Project Manager
Group Financial Systems
I.T. Department
Rye Hill House
T 01604 592289 
M 07917 856195

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Tom Dodds
Sent: 17 November 2008 19:38
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Automatic Invoice - PO Matching Software

You might want to check out 1mage at http://www.1mage.com/.  They can do
the whole nine yards of paperless office all in UniVerse.

Tom 


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Morawa, Hans
Sent: Monday, November 17, 2008 4:28 AM
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Automatic Invoice - PO Matching Software

Hi Tony,

To put my enquiry into perspective I simply looking for a electronic
invoice processing system. The product needs to able to scan invoices
regardless how they are delivered, whether they arrive electronically,
or by fax or by email or mail, and then automatically match them to
purchase orders based on captured information. This product needs to be
able to integrate seamlessly with UniVerse. Regardless of how invoices
are delivered they all need to be handled in the same way. There are
products out there servicing the SAP and Oracle systems of the world and
I'm looking for similar functionality without having a massive issue of
integrating it with UniVerse. Hence my question to our fellow list
members.

Cheers,
Hans

 

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Tony G
Sent: Monday, 17 November 2008 6:35 PM
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Automatic Invoice - PO Matching Software

 From: Hans Morawa
 We are looking for a electronic invoice processing system that
matches
 invoice with purchase orders automatically and works on/or with
a
 UniVerse platform and is available in Australia.

( Really hoping I'm not missing something obvious. *gulp* )

Hans, I don't understand the request.  Are you looking for bar coding or
image processing so that you can scan documents and have them match up
with other documents?  Can you give us an example of your business flow
so that we can recommend something that fits?

Tony Gravagno
Nebula Research and Development
TG@ remove.pleaseNebula-RnD.com
Nebula RD sells mv.NET and other Pick/MultiValue products worldwide,
and provides related development and training services
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/

_
This e-mail has been scanned for viruses by MessageLabs.

---
This email and any files transmitted with it are confidential to the
intended recipient and may be privileged. If you have received this
email inadvertently or you are not the intended recipient, you may not
disseminate, distribute, copy or in any way rely on it. Further, you
should notify the sender immediately and delete the email from your
computer.
Whilst we have taken precautions to alert us to the presence of computer
viruses, we cannot guarantee that this email and any files transmitted
with it are free from such viruses.
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/

__ Information from ESET NOD32 Antivirus, version of virus
signature database 3617 (20081117) __

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/

html
head
meta http-equiv=Content-type content=text/html; charset=UTF-8
/head
body
P style=MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0ptSPAN 
style=FONT-SIZE: 8.2pt; FONT-FAMILY: 'MS Sans Serif'This e-mail and any 
attachments are confidential and intended solely for the use of the addressee 
only. If you have received this message in error, you must not copy, distribute 
or disclose the contents; please notify the sender immediately and delete the 
message. /SPAN/P
P style=MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0ptSPAN 
style=FONT-SIZE: 8.2pt; FONT-FAMILY: 'MS Sans Serif'This message is 
attributed to the sender and may not necessarily reflect the view of Travis 
Perkins plc or its subsidiaries (Travis Perkins). Agreements binding Travis 
Perkins may not be concluded by means of e-mail communication. /SPAN/P
P style=MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0ptSPAN 
style=FONT-SIZE: 8.2pt; FONT-FAMILY: 'MS Sans Serif'E-mail transmissions are 
not secure and Travis Perkins accepts no responsibility for changes made to 
this 
message after it was sent. Whilst steps have been taken to ensure that this 
message is virus free, Travis Perkins accepts no liability for infection and 
recommends that you scan this e-mail and any attachments. /SPAN/P
P style=MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0ptSPAN 
style=FONT-SIZE: 8.2pt; 

RE: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread Anthony Youngman
If you're going to do it that way, I wouldn't bother with putting the @VMs back 
(or may the @SM's too, depending on what you're doing.

Get CUST.NUM and CUST.DESC from your modified IN.LINE as follows ...

CUST.NUM = FIELD( IN.LINE, CHAR(9), 1, 1)
CUST.DESC = FIELD( IN.LINE, CHAR(9), 1, 1)

Cheers,
Wol

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dave Laansma
Sent: 17 November 2008 20:19
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Speeding up processing through large dynamic table

That is what I was afraid of.  Okay.  So after listening to all of your
comments (thus far since there is an annoying delay in these messages),
here is what I like the best:

SWAP CHAR(9) WITH  IN IN.TAB
SWAP CHAR(10) WITH  IN IN.TAB

SWAP @VM WITH CHAR(9) IN IN.TAB
SWAP @SM WITH CHAR(10) IN IN.TAB

REPEAT
  REMOVE IN.LINE FROM IN.TAB SETTING MARK
  SWAP CHAR(9) WITH @VM IN IN.LINE
  SWAP CHAR(10) WITH @SM IN IN.LINE
  (do my thing with IN.LINE)
UNTIL MARK DO
REPEAT

Any objections, concerns or better suggestions for using CHAR(10) as the
temporary substitute for the @SM?  I just picked it because it came
right after CHAR(9) on my handy-dandy ASCII chart!  Been using it since
the 70's.  Some things just never go out of style!

David Laansma
IT Manager
Hubbard Supply Co.
Direct: 810-342-7143
Office:810-234-8681
Fax: 810-234-6142
www.hubbardsupply.com
Delivering Products, Services, and Innovative Solutions


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David Wolverton
Sent: Monday, November 17, 2008 2:52 PM
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Speeding up processing through large dynamic table

If you don't want to 'swap' all the other markers with 'strings' (SWAP
@VM
WITH VM IN RECORD) then you have to 'build' the line item up --
keep
removing until you see the remove hit the @AM and then process the
line...

DW

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of Dave Laansma
 Sent: Monday, November 17, 2008 1:24 PM
 To: u2-users@listserver.u2ug.org
 Subject: RE: [U2] Speeding up processing through large dynamic table

 Oh my goodness!  This is incredible.

 Okay, now I have a mixture of @VM and @AM in the table.  The
 REMOVE 'stops' at every @VM and @AM.  I only want it to
 'stop' at @AMs.  How do I do that?

 David Laansma
 IT Manager
 Hubbard Supply Co.
 Direct: 810-342-7143
 Office:810-234-8681
 Fax: 810-234-6142
 www.hubbardsupply.com
 Delivering Products, Services, and Innovative Solutions
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Setting return code when a Universe process terminates

2008-11-18 Thread Symeon Breen
 So the client browser requests a page from the IIS server and the IIS 
 server requests myPage.php from the U2 server which causes the PHP 
 processor on the U2 server to make the exec call to the UniBasic program.

 How do you normally make the page request from IIS?

Using whatever programming language you run to power your iis web site
asp/asp.net/php etc. Or your iis web server dishes up static html which has
a script it in that contacts the u2 server via ajax.

Having said that - if you want to call a unidata program from your iis
powered web server I would do it in asp.net using uniobjects.net. But
sometimes you want to bypass that layer and go direct which is why I have
this little php script which is used for unit testing the backend part of
our apps separate from the front end asp.net side.


Symeon.
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


Re: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread Mecki Foerthmann
Well, in that case you will have to convert the VMs first to something 
else like suggested in other posts.

CONVERT or SWAP are fast even on large arrays.
I've actually never tried SELECT and READNEXT with multi-valued 
attributes before.


And isn't there another syntax of the REMOVE command like IN.LINE = 
REMOVE(IN.TABLE,1,0,0) that would return a multi-valued array?



Mecki

George Gallen wrote:

0001: TESTDYN=
0002: TESTDYN-1=HELLO:CHAR(253):THERE
0003: TESTDYN-1=UNTIL:CHAR(253):ANOTHER
0004: SELECT TESTDYN
0005: LOOP
0006: READNEXT ID ELSE EXIT
0007: PRINT ID
0008: REPEAT
0009: STOP
0010: END

This only returns
HELLO
UNTIL

My first test did not have @vm's and it looked like it worked
but when I put in @vm's, anything after them is ignored.

George

  

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of 
Marvin R. Fisher

Sent: Monday, November 17, 2008 3:00 PM
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Speeding up processing through large dynamic table


But it is not a file - it's an array.

Marvin R. Fisher
Technical Resource Group
A Pipeline Group Company
2850 Red Hill Ave.
Suite 110
Santa Ana, CA 92705
Tel (949) 296-8380 ext. 620
Fax (949) 756-0029
Pipeline Software Statement: This email message is 
confidential and may be legally privileged. The contents 
contained within, including any attached files, are intended 
solely for the addressee(s). Access by anyone other than the 
addressee(s) is unauthorized. If you are not the intended 
recipient, any disclosure, copying, distribution or any 
action, taken or not taken, in reliance on it, is prohibited 
and may be unlawful. If you believe that you have received 
this email message in error, please contact the sender. Any 
views expressed within are those of the individual sender, 
except where the sender specifies and with authority, states 
them to be the views of Pipeline-Software, Inc., Santa Ana, CA.


(The contents of this email message have been scanned for the 
presence of computer viruses.)



-Original Message-
From: [EMAIL PROTECTED] 


[mailto:[EMAIL PROTECTED] On Behalf Of Mecki Foerthmann
Sent: Monday, November 17, 2008 11:21 AM
To: u2-users@listserver.u2ug.org
Subject: Re: [U2] Speeding up processing through large dynamic table

READNEXT could be an option

SELECT IN.TAB
LOOP WHILE READNEXT IN.LINE DO
   CUST.NUM=IN.LINE1,1
   CUST.DESC=IN.LINE1,2
REPEAT

this should be lightning-fast regardless how big IN.TAB is.

David Laansma wrote:
  

Is there a way to speed up spinning through a very large dynamic table?  Here is
a sample of my program:

A11 = DCOUNT(IN.TAB,@AM)

FOR A1 = 1 TO A11
  IN.LINE = IN.TABA1
  SWAP @VM WITH @AM IN IN.LINE
  CUST.NUM  = IN.LINE1
  CUST.DESC = IN.LINE2
NEXT A1

A11 is 85,000+ and as this loop goes on, this thing get really slow.  Any tips
on speeding this up?
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/

---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


Re: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread MAJ Programming
This may have been offered but I didn't see it in the replies:

If you have half an idea on the max num of atts, try using DIM X(30) or
some large number and simply FOR.NEXT your way thru until you get to a
logical end like a null value.

I digest EDI records often in the neighborhood of 200,000 rows or more this
way.

Mark Johnson
- Original Message -
From: Colin Alfke [EMAIL PROTECTED]
To: u2-users@listserver.u2ug.org
Sent: Monday, November 17, 2008 4:24 PM
Subject: RE: [U2] Speeding up processing through large dynamic table


 Oh my - I'm not sure with all that swapping that you'll come out much
ahead.

 You're missing the point of remove. If your array is well built your
code
 simply becomes:

 LOOP
 REMOVE CUST.NUM FROM IN.TAB SETTING MARK
 REMOVE CUST.DESC FROM IN.TAB SETTING MARK
 (do your thing)
 WHILE MARK DO REPEAT

 If you do have to worry about having more attributes or sub-values in the
 array then you need to test the MARK variable after each remove and keep
 removing until the line is exhausted. Here is how MARK (delimiter) is
set:
 Delimiter Code Description ASCII Value*
 0 array end
 1 record mark 255
 2 attribute mark  254
 3 value mark  253
 4 subvalue mark   252
 5 text mark   251
 6 not used; nonprinting   250
 7 not used; nonprinting   249

 Someone else sent an example of how to keep checking MARK so I won't
 bother. You could even throw it in a subroutine to keep your processing
 clean.

 Hth
 Colin Alfke
 Calgary, Canada

  -Original Message-
  From: Dave Laansma
 
  That is what I was afraid of.  Okay.  So after listening to all of your
  comments (thus far since there is an annoying delay in these messages),
  here is what I like the best:
 
  SWAP CHAR(9) WITH  IN IN.TAB
  SWAP CHAR(10) WITH  IN IN.TAB
 
  SWAP @VM WITH CHAR(9) IN IN.TAB
  SWAP @SM WITH CHAR(10) IN IN.TAB
 
  REPEAT
REMOVE IN.LINE FROM IN.TAB SETTING MARK
SWAP CHAR(9) WITH @VM IN IN.LINE
SWAP CHAR(10) WITH @SM IN IN.LINE
(do my thing with IN.LINE)
  UNTIL MARK DO
  REPEAT
 
  Any objections, concerns or better suggestions for using CHAR(10) as
  the
  temporary substitute for the @SM?  I just picked it because it came
  right after CHAR(9) on my handy-dandy ASCII chart!  Been using it since
  the 70's.  Some things just never go out of style!
 
  David Laansma
 
  -Original Message-
  From: David Wolverton
 
  If you don't want to 'swap' all the other markers with 'strings' (SWAP
  @VM
  WITH VM IN RECORD) then you have to 'build' the line item up --
  keep
  removing until you see the remove hit the @AM and then process the
  line...
 
  DW
 ---
 u2-users mailing list
 u2-users@listserver.u2ug.org
 To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Setting return code when a Universe process terminates

2008-11-18 Thread Charles_Shaffer
 Using whatever programming language you run to power your iis web site
 asp/asp.net/php etc. Or your iis web server dishes up static html which 
has
 a script it in that contacts the u2 server via ajax.
. 
I appreciate your patience.  I'm relatively new to AJAX.   I am interested 
in finding a way to get to the U2 data more directly than we do currently, 
which is using a Java Bridge and Uniobjects for Java.

I've done XMLHttpRequests from clients using JavaScript.  In this case, 
the IIS server is doing an XMLHttpRequest to the U2 server, right?  It 
takes the request response from the U2 server and incorporates it into a 
page that is returned to the client.  Is this server side JavaScript, or 
is there a way to do an XMLHttpRequest from ASP/PHP?

Charles Shaffer
Senior Analyst
NTN-Bower Corporation
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread Andy Baum
Look at MATPARSE

A11 = DCOUNT(IN.TAB,@AM)
DIM RECS(A11)
MATPARSE RECS FROM IN.TAB, @AM

FOR A1 = 1 TO A11
  CUST.NUM  = RECS(A1)1,1
  CUST.DESC = RECS(A1)1,2
NEXT A1

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of David Laansma
Sent: 17 November 2008 18:10
To: u2-users@listserver.u2ug.org
Subject: [U2] Speeding up processing through large dynamic table

Is there a way to speed up spinning through a very large dynamic table?  Here is
a sample of my program:

A11 = DCOUNT(IN.TAB,@AM)

FOR A1 = 1 TO A11
  IN.LINE = IN.TABA1
  SWAP @VM WITH @AM IN IN.LINE
  CUST.NUM  = IN.LINE1
  CUST.DESC = IN.LINE2
NEXT A1

A11 is 85,000+ and as this loop goes on, this thing get really slow.  Any tips
on speeding this up?
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/



-
**
The contents of this e-mail are subject to contract in all cases
and
William Hill PLC, its subsidiaries or affiliates make no
contractual
commitment save where confirmed by hard copy.

The contents of this e-mail do not necessarily represent the views
of William Hill PLC, its subsidiaries or affiliates. We accept no
liability, including liability for negligence, in respect of any
statement in this e-mail.

This e-mail and any files transmitted with it are confidential,
may
be subject to legal privilege and intended solely for the use of
the
individual or entity to which they are addressed. If you are not
the
intended recipient, you are hereby notified that any use or
dissemination of this communication is strictly prohibited. If you
have received this e-mail in error, please notify us immediately,
then delete this e-mail.

Please note that William Hill can accept no responsibility for
viruses and it is your responsibility to scan any emails and their
attachments.

This message was from William Hill PLC whose registered office is
Greenside House, 50 Station Road, Wood Green, London N22 7TP.
Company Registration Number: 4212563 England.
*
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Setting return code when a Universe process terminates

2008-11-18 Thread Symeon Breen
Hi 

Any javascript will run in the browser and not on the server. What the
javascript calls using XMLHttpRequest will exist on a server somewhere.
XMLHttpRequest is the javascript DOM API that is the keystone of AJAX.

You probably use that now to contact a webservice written in asp.net that
then uses uniobjects to connect to u2. The same XMLHttpRequest call could
also use my example php code to do a similar thing, but the php is fairly
unsophisticated compared to uniobjects and will not work well if you have
heavy load, no licences left etc + does not manage any pooling or device
licencing.

If you want to connect to a web page/service direct from within your asp.net
- well here is a very simple example vb.net function to do just that - tho
there are of course many ways to do this

   Private Function getWeb(ByVal url As String) As String
Dim URI As Uri = New Uri(url)
Dim webPage As String = String.Empty
Dim WebRequest As HttpWebRequest = HttpWebRequest.Create(URI)
WebRequest.Timeout = 8000
Try
Dim WebResponse As WebResponse = WebRequest.GetResponse()
Dim Stream As Stream = WebResponse.GetResponseStream()
Dim StreamReader As StreamReader = New StreamReader(Stream)
webPage = StreamReader.ReadToEnd

Catch ex As WebException
Err = ex.ToString
End Try


Return webPage
End Function

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: 18 November 2008 14:46
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Setting return code when a Universe process terminates

 Using whatever programming language you run to power your iis web site
 asp/asp.net/php etc. Or your iis web server dishes up static html which 
has
 a script it in that contacts the u2 server via ajax.
. 
I appreciate your patience.  I'm relatively new to AJAX.   I am interested 
in finding a way to get to the U2 data more directly than we do currently, 
which is using a Java Bridge and Uniobjects for Java.

I've done XMLHttpRequests from clients using JavaScript.  In this case, 
the IIS server is doing an XMLHttpRequest to the U2 server, right?  It 
takes the request response from the U2 server and incorporates it into a 
page that is returned to the client.  Is this server side JavaScript, or 
is there a way to do an XMLHttpRequest from ASP/PHP?

Charles Shaffer
Senior Analyst
NTN-Bower Corporation
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
No virus found in this incoming message.
Checked by AVG - http://www.avg.com 
Version: 8.0.175 / Virus Database: 270.9.3/1786 - Release Date: 17/11/2008
17:24
No virus found in this outgoing message.
Checked by AVG - http://www.avg.com 
Version: 8.0.175 / Virus Database: 270.9.3/1786 - Release Date: 17/11/2008
17:24
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread David Wolverton
As I recall, you will get IN.FIELD when MARK is set to '0' - showing it is
the 'last item' in the group.

You will want to add that on I think -- I don't have a way to confirm this
-- but I thought if you got a 0 or 1, the 'remove' still had something in it
to 'share' -- See my example from yesterday... I think you'll miss the last
segment with this version of the logic -- you need to treat 0 or 1 the same
as a 2, except knowing it's the last iteration...

DW

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On Behalf Of Dave Laansma
 Sent: Tuesday, November 18, 2008 10:04 AM
 To: u2-users@listserver.u2ug.org
 Subject: RE: [U2] Speeding up processing through large dynamic table
 
 All right!  Well, after evaluating the overwhelming response 
 to this seemingly simple question, I have experimented and 
 decided on the following approach.
 
 Embracing the risk of opening myself up to scrutiny of fellow 
 professionals with both greater and lesser wisdom than 
 myself, this is the path I have chosen.  Feel free to provide 
 constructive criticism and/or blatant flaws in logic and 
 reason, and I'll take it into consideration.
 
 First, write a subroutine (I supposed it could have been a 
 FUNCTION) that performs the REMOVE for me.  This subroutine 
 looks like this:
 
 SUBROUTINE HUB.REMOVE (IN.TAB,OUT.LINE,MARK)
 
 OUT.LINE = 
 MARK = 
 
 LOOP
   REMOVE IN.FIELD FROM IN.TAB SETTING MARK
 
   BEGIN CASE
 CASE MARK = 0
   EXIT
 
 CASE MARK = 2 ; * @AM
   OUT.LINE := IN.FIELD
   EXIT
 
 CASE MARK = 3 ; * @VM
   OUT.LINE := IN.FIELD : @VM
 
 CASE MARK = 4 ; * @SM
   OUT.LINE := IN.FIELD : @SM
 
   END CASE
 REPEAT
 
 
 
 RETURN
 
 END
 
 * IN.TAB is the whole table
 * OUT.LINE is the attribute with all VM and SM in tact
 * MARK = 0 is the flag to the CALLING program that we are finished.
 
 The calling program looks like this:
 
 LOOP
   CALL HUB.REMOVE (IN.TAB,IN.REC,MARK)
   IF MARK = 0 THEN EXIT
   (do my thing with IN.REC)
 REPEAT
 
 Conclusions I have arrived at:
 
 1. LOOP/REMOVE/REPEAT is absolutely faster than FOR/NEXT 
 loop, especially as the size of the table grows into the 10's 
 of thousands 2. SWAP is a non-issue in regards to performance.
 3. It appears as though nesting REMOVEs would be bad.
 4. The 'pointer' the OS keeps track of is indeed maintained 
 to and from the CALL to my subroutine.  This is good.
 5. This virtual users group is an EXCELLENT source for U2 
 Software Engineers to learn more about the toolbox provided 
 by the UNIBASIC commands, theories and especially techniques 
 for accomplishing specific, targeted objectives.
 6. U2UG in Atlanta was very good.  Still room for 
 improvement, but that will come as it evolves.
 
 Thank you ALL for your input.  It certainly has been an 
 eye-opening exercise.  There certainly are some 'interesting' 
 ideas out there.
 
 So, have it folks!  I'll be watching!
 
 David Laansma
 IT Manager
 Hubbard Supply Co. 
 Direct: 810-342-7143
 Office:810-234-8681
 Fax: 810-234-6142
 www.hubbardsupply.com
 Delivering Products, Services, and Innovative Solutions
 
 
 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of David Laansma
 Sent: Monday, November 17, 2008 1:10 PM
 To: u2-users@listserver.u2ug.org
 Subject: [U2] Speeding up processing through large dynamic table
 
 Is there a way to speed up spinning through a very large 
 dynamic table?
 Here is
 a sample of my program:
 
 A11 = DCOUNT(IN.TAB,@AM)
 
 FOR A1 = 1 TO A11
   IN.LINE = IN.TABA1
   SWAP @VM WITH @AM IN IN.LINE
   CUST.NUM  = IN.LINE1
   CUST.DESC = IN.LINE2
 NEXT A1
 
 A11 is 85,000+ and as this loop goes on, this thing get really slow.
 Any tips
 on speeding this up?
 ---
 u2-users mailing list
 u2-users@listserver.u2ug.org
 To unsubscribe please visit http://listserver.u2ug.org/
 ---
 u2-users mailing list
 u2-users@listserver.u2ug.org
 To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread Israel, John R.
My 2 cents:
I only use FOR/NEXT loops if I am dealing with data that I know is small. 
Technically, LOOP/REMOVE are faster, but for something small I just keep it 
simple.

I would think the LOOP/REMOVE or basic SELECT would both be very fast. The 
SELECT has the advantage of not needing to test the delimiter, so it might 
actually be faster depending on what you are doing.

In your snippet of code, I do not see it doing anything (I'm sure for 
simplicity sake), but based on the size of data you are dealing with, I would 
not want the overhead of an external subroutine.  You will get better 
performance if you keep all the code in a single piece of code.

I also thought about using DIM array (MATPARSE) as was previously mentioned.  
This takes extra time to set up, but will move fastest once it is set up.  The 
more work you do with the data, the better it is to use DIM arrays.  Again, 
because I do not know exactly what you are doing, I can only give loose advise. 
 In this case, I would guess it would not be the way to go, but you might want 
to play with the following options to get the best results:
LOOP/REMOVE
SELECT
DIM array

Again, keep it all in one piece of code unless you want the overhead of passing 
huge data back and forth and the overhead of the 2nd subroutine.


John Israel
Sr. Programmer/Analyst
Dayton Superior Corporation
721 Richard St.
Dayton, OH  45342
937-866-0711 x44380

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dave Laansma
Sent: Tuesday, November 18, 2008 11:04 AM
To: u2-users@listserver.u2ug.org
Subject: RE: [U2] Speeding up processing through large dynamic table

All right!  Well, after evaluating the overwhelming response to this
seemingly simple question, I have experimented and decided on the
following approach.

Embracing the risk of opening myself up to scrutiny of fellow
professionals with both greater and lesser wisdom than myself, this is
the path I have chosen.  Feel free to provide constructive criticism
and/or blatant flaws in logic and reason, and I'll take it into
consideration.

First, write a subroutine (I supposed it could have been a FUNCTION)
that performs the REMOVE for me.  This subroutine looks like this:

SUBROUTINE HUB.REMOVE (IN.TAB,OUT.LINE,MARK)

OUT.LINE = 
MARK = 

LOOP
  REMOVE IN.FIELD FROM IN.TAB SETTING MARK

  BEGIN CASE
CASE MARK = 0
  EXIT

CASE MARK = 2 ; * @AM
  OUT.LINE := IN.FIELD
  EXIT

CASE MARK = 3 ; * @VM
  OUT.LINE := IN.FIELD : @VM

CASE MARK = 4 ; * @SM
  OUT.LINE := IN.FIELD : @SM

  END CASE
REPEAT



RETURN

END

* IN.TAB is the whole table
* OUT.LINE is the attribute with all VM and SM in tact
* MARK = 0 is the flag to the CALLING program that we are finished.

The calling program looks like this:

LOOP
  CALL HUB.REMOVE (IN.TAB,IN.REC,MARK)
  IF MARK = 0 THEN EXIT
  (do my thing with IN.REC)
REPEAT

Conclusions I have arrived at:

1. LOOP/REMOVE/REPEAT is absolutely faster than FOR/NEXT loop,
especially as the size of the table grows into the 10's of thousands
2. SWAP is a non-issue in regards to performance.
3. It appears as though nesting REMOVEs would be bad.
4. The 'pointer' the OS keeps track of is indeed maintained to and from
the CALL to my subroutine.  This is good.
5. This virtual users group is an EXCELLENT source for U2 Software
Engineers to learn more about the toolbox provided by the UNIBASIC
commands, theories and especially techniques for accomplishing specific,
targeted objectives.
6. U2UG in Atlanta was very good.  Still room for improvement, but that
will come as it evolves.

Thank you ALL for your input.  It certainly has been an eye-opening
exercise.  There certainly are some 'interesting' ideas out there.

So, have it folks!  I'll be watching!

David Laansma
IT Manager
Hubbard Supply Co.
Direct: 810-342-7143
Office:810-234-8681
Fax: 810-234-6142
www.hubbardsupply.com
Delivering Products, Services, and Innovative Solutions


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David Laansma
Sent: Monday, November 17, 2008 1:10 PM
To: u2-users@listserver.u2ug.org
Subject: [U2] Speeding up processing through large dynamic table

Is there a way to speed up spinning through a very large dynamic table?
Here is
a sample of my program:

A11 = DCOUNT(IN.TAB,@AM)

FOR A1 = 1 TO A11
  IN.LINE = IN.TABA1
  SWAP @VM WITH @AM IN IN.LINE
  CUST.NUM  = IN.LINE1
  CUST.DESC = IN.LINE2
NEXT A1

A11 is 85,000+ and as this loop goes on, this thing get really slow.
Any tips
on speeding this up?
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Setting return code when a Universe process terminates

2008-11-18 Thread Charles_Shaffer
Symeon,

Thanks.  I'll check it out.

Charles Shaffer
Senior Analyst
NTN-Bower Corporation
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread George Gallen
But is it much faster than what you had to start with? Since both
methods work, one might not be any better than the other. Although
if your planning on using the HUB.REMOVE from multiple programs,
then that course if most likely the best for your need.

George

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] Behalf Of Dave Laansma
 Sent: Tuesday, November 18, 2008 11:04 AM
 To: u2-users@listserver.u2ug.org
 Subject: RE: [U2] Speeding up processing through large dynamic table
 
 
 All right!  Well, after evaluating the overwhelming response to this
 seemingly simple question, I have experimented and decided on the
 following approach.
 
 Embracing the risk of opening myself up to scrutiny of fellow
 professionals with both greater and lesser wisdom than myself, this is
 the path I have chosen.  Feel free to provide constructive criticism
 and/or blatant flaws in logic and reason, and I'll take it into
 consideration.
 
 First, write a subroutine (I supposed it could have been a FUNCTION)
 that performs the REMOVE for me.  This subroutine looks like this:
 
 SUBROUTINE HUB.REMOVE (IN.TAB,OUT.LINE,MARK)
 
 OUT.LINE = 
 MARK = 
 
 LOOP
   REMOVE IN.FIELD FROM IN.TAB SETTING MARK
 
   BEGIN CASE
 CASE MARK = 0
   EXIT
 
 CASE MARK = 2 ; * @AM
   OUT.LINE := IN.FIELD
   EXIT
 
 CASE MARK = 3 ; * @VM
   OUT.LINE := IN.FIELD : @VM
 
 CASE MARK = 4 ; * @SM
   OUT.LINE := IN.FIELD : @SM
 
   END CASE
 REPEAT
 
 
 
 RETURN
 
 END
 
 * IN.TAB is the whole table
 * OUT.LINE is the attribute with all VM and SM in tact
 * MARK = 0 is the flag to the CALLING program that we are finished.
 
 The calling program looks like this:
 
 LOOP
   CALL HUB.REMOVE (IN.TAB,IN.REC,MARK)
   IF MARK = 0 THEN EXIT
   (do my thing with IN.REC)
 REPEAT
 
 Conclusions I have arrived at:
 
 1. LOOP/REMOVE/REPEAT is absolutely faster than FOR/NEXT loop,
 especially as the size of the table grows into the 10's of thousands
 2. SWAP is a non-issue in regards to performance.
 3. It appears as though nesting REMOVEs would be bad.
 4. The 'pointer' the OS keeps track of is indeed maintained 
 to and from
 the CALL to my subroutine.  This is good.
 5. This virtual users group is an EXCELLENT source for U2 Software
 Engineers to learn more about the toolbox provided by the UNIBASIC
 commands, theories and especially techniques for 
 accomplishing specific,
 targeted objectives.
 6. U2UG in Atlanta was very good.  Still room for 
 improvement, but that
 will come as it evolves.
 
 Thank you ALL for your input.  It certainly has been an eye-opening
 exercise.  There certainly are some 'interesting' ideas out there.
 
 So, have it folks!  I'll be watching!
 
 David Laansma
 IT Manager
 Hubbard Supply Co. 
 Direct: 810-342-7143
 Office:810-234-8681
 Fax: 810-234-6142
 www.hubbardsupply.com
 Delivering Products, Services, and Innovative Solutions
 
 
 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of David Laansma
 Sent: Monday, November 17, 2008 1:10 PM
 To: u2-users@listserver.u2ug.org
 Subject: [U2] Speeding up processing through large dynamic table
 
 Is there a way to speed up spinning through a very large 
 dynamic table?
 Here is
 a sample of my program:
 
 A11 = DCOUNT(IN.TAB,@AM)
 
 FOR A1 = 1 TO A11
   IN.LINE = IN.TABA1
   SWAP @VM WITH @AM IN IN.LINE
   CUST.NUM  = IN.LINE1
   CUST.DESC = IN.LINE2
 NEXT A1
 
 A11 is 85,000+ and as this loop goes on, this thing get really slow.
 Any tips
 on speeding this up?
 ---
 u2-users mailing list
 u2-users@listserver.u2ug.org
 To unsubscribe please visit http://listserver.u2ug.org/
 ---
 u2-users mailing list
 u2-users@listserver.u2ug.org
 To unsubscribe please visit http://listserver.u2ug.org/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Setting return code when a Universe process terminates

2008-11-18 Thread Charles_Shaffer
That is similar to what we are doing now, wxcept the web server is Linux 
so I use XMLHttpRequests to call a PHP module that calls a Java routine 
that uses Uniobjects for Java to get the results from Unidata.  An open 
source product called JavaBridge is used to allow php to call Java. Works 
well, but pretty complex to setup.

Thanks for the info.

Charles Shaffer
Senior Analyst
NTN-Bower Corporation
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Setting return code when a Universe process terminates

2008-11-18 Thread Tony G
 From: Charles_Shaffer
 I am interested in finding a way to get to the U2 data 
 more directly than we do currently, which is using a 
 Java Bridge and Uniobjects for Java.

Charles, you may be interested in mvExec.  It will execute any
command or program on any MV system from anywhere in your
network.  In your case, you don't need to be concerned about
connectivity.  All exchanges with Universe are done by executing
a local command and reading local files that contain the results.
This can be used by any language or tools that you choose and
there is no need to learn any new language or protocol.  Example:

DOS Command: mvexec mvreaditem
Uses configuration file mvreaditem.mv0 in a local windows
directory to read a customer record from a production server
account.  Results are stored in \temp.
Config file has 4 lines written at runtime:
  productionserver--- name any server here
  EXEC.GET.ITEM   --- call your own program here
  |CUSTOMERS|12345--- data for the program
  c:\temp\mvreaditem.mv1  --- store results here

Software download and full documentation with code samples is on
our Freeware page:
   remove.pleaseNebula-RnD.com/freeware 
mvExec is completely free and can be used by anyone who already
has mv.NET installed.

[AD] If you don't have mv.NET you can purchase a single license
from Nebula RD or any other mv.NET reseller.  Once you have an
inexpensive license it can be used for many other purposes.

HTH

Tony Gravagno
Nebula Research and Development
TG@ remove.pleaseNebula-RnD.com
Nebula RD sells mv.NET and other Pick/MultiValue products
worldwide, and provides related development and training services
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread Charles_Shaffer
I still like the SELECT approach.  It can be used on dynamic arrays and 
doesn't even need to wait to finish to make elements available.  I tried 
using dynamic arrays one time and the speed was awful.  Ever since, I use 
SELECT lists whenever possible.  A MAT array might be faster since it is 
more like a traditional array, but SELECT is easy and fast.

Here is the first part of the UniBasic HELP.


*
Help Information For: UNIBASIC SELECT Page: 1/7

SELECT

Syntax

SELECT file.var [TO {list.num.expr | list.var.expr}] [ON ERROR statements]
SELECT dyn.array [TO {list.num.expr | list.var.expr}] [ON ERROR 
statements]

Description

The UniBasic SELECT command creates an active select list of all
record IDs in a file. Records appear in the list in the order in
which they are stored in the file.
You can access the select list with a READNEXT statement.
The UniBasic SELECT command differs from EXECUTE SELECT ..., which
executes the UniQuery SELECT command. The UniBasic SELECT command
immediately makes available to READNEXT one group of IDs at a time.
The program does not have to wait for the entire ID list to be 
constructed.
.
.
.***

Charles Shaffer
Senior Analyst
NTN-Bower Corporation
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


[U2] Speeding up processing through large dynamic table [ U2U comment]

2008-11-18 Thread Wally Terhune
Dave:
You wrote:
U2UG in Atlanta was very good.  Still room for improvement, but that
will come as it evolves.

1) I trust you provided detailed feedback to the U2 marketing folks so we 
can make the right improvements for next year. If not - I'm happy to 
forward your thoughts along.

2) I am aware of at least 2 sessions at U2U that included a dramatic 
example of how the use of REMOVE can boost your application performance 
and reduce cpu time.
I know it was not possible to attend all sessions.  :-(

Cheers


Wally Terhune
U2 Support Architect
IBM Information Management Software
Tel: (303) 773-7969 T/L 656-7969
Mobile: (303) 807-6222
Email: [EMAIL PROTECTED]
http://www.ibm.com/software/data/u2/support
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Setting return code when a Universe process terminates

2008-11-18 Thread Charles_Shaffer
Thanks Tony. 

I'll check it out.

Charles Shaffer
Senior Analyst
NTN-Bower Corporation
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


Re: [U2] Pentaho/ETL Tools

2008-11-18 Thread Louie Bergsagel
I saw a fairly impressive webinar from Kore Technologies the other day, but
they port UniVerse to Microsoft SQL, so I don't know if you'd be interested
in them.  It seemed like they had a pretty clean interface.
http://www.koretech.com/kore_integrator.asp
[EMAIL PROTECTED]

We also use MITS, but it is not designed as a data warehouse.  It could be
configured as such, but there are currently some built-in limitations, such
as a maximum of 16 identifiers that you can use to drill-down into the data
(e.g. customer, salesman, product, etc.).

You could construct additional hypercubes to take care of additional
identifiers, but like I said, it isn't designed as a data warehouse.  I
think it could be, and should be, but that's for the development team to
tackle.

-- Louie In Seattle (caveat: former MITS employee, current MITS Discover and
MITS Report user)
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


[U2] {UD} SAVEDLISTS list expansion

2008-11-18 Thread Dean.Armbruster
Is there any way to expand the number of items stored in a SAVEDLISTS
list?

We've hit our system's limit on savedlists size.  The limits of 1000
sublist files and 34,815 bytes per sublist are not enough to hold some
of our savedlists.  Is there any way to expand the sublist file range
from 3 to 4 digits to have 10,000 sublist files, or allow more bytes in
each sublist file?

34,815 is an interesting number for a limit, it being one less than 34k.
I don't see anything in the configuration for it.

I was unable to find anything related to this in the UniData docs, nor
in the U2 Knowledge bases.

UniData: 7.1.10
HP-UX 11.11


Dean Armbruster
System Analyst
Wolseley North American Division * 12500 Jefferson Avenue * Newport News
* VA * 23602-4314 USA
T: +1(757) 989-2839 * F: +1(757)989-2801 * E:
[EMAIL PROTECTED]

www.wolseley.com blocked::http://www.wolseley.com/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Speeding up processing through large dynamic table

2008-11-18 Thread Boydell, Stuart
That behaviour could be fixed by converting VM to SM which
select/readnext leaves alone... Still pretty quick. I just did a test
using the code below on an 85000 att array and it took .086 seconds on a
low spec dev machine.

   convert @vm to @sm in IN.TAB
   select IN.TAB
   loop while readnext IN.LINE do
 CUST.NUM  = IN.LINE1,1,1
 CUST.DESC = IN.LINE1,1,2
   repeat

Stuart Boydell

-Original Message-
My first test did not have @vm's and it looked like it worked
but when I put in @vm's, anything after them is ignored.
READNEXT could be an option

 
**
This email message and any files transmitted with it are confidential and 
intended solely for the use of addressed recipient(s). If you have received 
this communication in error, please reply to this e-mail to notify the sender 
of its incorrect delivery and then delete it and your reply.  It is your 
responsibility to check this email and any attachments for viruses and defects 
before opening or sending them on. Spotless collects information about you to 
provide and market our services. For information about use, disclosure and 
access, see our privacy policy at http://www.spotless.com.au 
Please consider our environment before printing this email. 
** 
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


RE: [U2] Unix nfiles phantoms

2008-11-18 Thread John Jenkins
Phantoms (and also Connection Pool licenses) are still concurrent UniVerse
sessions - so in calculating any system-wide parameters for the Operating
System you should account for all processes including PHANTOM and CP usage.
 
If you use VERY large numbers of PHANTOMS this is something you need to be
very aware of indeed.

On per-user parameters of course the same does not apply.

Regards

JayJay
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


[U2] Counting records

2008-11-18 Thread T Stokes
I am trying to remember a Universe function that returns the number of
records in a file.
Something like this.

OPEN 'SOMEFILE' TO SOMEFILE ELSE STOP 201,SOMEFILE

NUM.OF.RECORDS = UNKNOWNFUNCTION(SOMEFILE)
-- 
View this message in context: 
http://www.nabble.com/Counting-records-tp20569376p20569376.html
Sent from the U2 - Users mailing list archive at Nabble.com.
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/


Re: [U2] {UD} SAVEDLISTS list expansion

2008-11-18 Thread Wally Terhune
hmm...
per the readme - the following should have been fixed at 7.1.3.  Testcase??

Issue 8594 - Problem Description

UniData -- When the SAVE.LIST command created an item in the.
_SAVEDLISTS_ directory that contained more than 10,000 parts,
for example list001, list002, and so forth, a GET.LIST command to
retrieve that list only returned the first 9,999 parts. This
problem has been resolved.


Wally Terhune
U2 Support Architect
IBM Information Management Software
Tel: (303) 773-7969 T/L 656-7969
Mobile: (303) 807-6222
Email: [EMAIL PROTECTED]
http://www.ibm.com/software/data/u2/support



  From:   [EMAIL PROTECTED]

  To: u2-users@listserver.u2ug.org

  Date:   11/18/2008 02:58 PM

  Subject:[U2] {UD} SAVEDLISTS list expansion






Is there any way to expand the number of items stored in a SAVEDLISTS
list?

We've hit our system's limit on savedlists size.  The limits of 1000
sublist files and 34,815 bytes per sublist are not enough to hold some
of our savedlists.  Is there any way to expand the sublist file range
from 3 to 4 digits to have 10,000 sublist files, or allow more bytes in
each sublist file?

34,815 is an interesting number for a limit, it being one less than 34k.
I don't see anything in the configuration for it.

I was unable to find anything related to this in the UniData docs, nor
in the U2 Knowledge bases.

UniData: 7.1.10
HP-UX 11.11


Dean Armbruster
System Analyst
Wolseley North American Division * 12500 Jefferson Avenue * Newport News
* VA * 23602-4314 USA
T: +1(757) 989-2839 * F: +1(757)989-2801 * E:
[EMAIL PROTECTED]

www.wolseley.com blocked::http://www.wolseley.com/
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/

[demime 1.01d removed an attachment of type image/gif which had a name of 
graycol.gif]

[demime 1.01d removed an attachment of type image/gif which had a name of 
ecblank.gif]
---
u2-users mailing list
u2-users@listserver.u2ug.org
To unsubscribe please visit http://listserver.u2ug.org/