Any ABL/4GL gurus out there


(system) #1
You ARE a genius. Using the exclusive-lock and NOT using the update buffer did the trick. I don't know why that would have changed - but I am going to update my code.

Thanks again for all the help.

Dave Olender (DaveO)

--- In vantage@yahoogroups.com, Greg Payne <gpayne@...> wrote:
>
> Not that I am a guru, but since you are in a DD you also have the option of not using updatebuffer. Also, have you checked the appserver log for error messages during the transaction? I use message statements to write into the appserver log so I don't have to deal with popups.
>
> is the If inside of the case needed? it seems redundant.
>
> If you find PartCost and lock it, then update it from the tt buffer it would look like this.
>
> find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' exclusive-lock no-error.
>
> if available PartCost Then do:
> PartCost.StdLaborCost = ttPartCost.StdLaborCost.
> PartCost.StdBurdenCost = ttPartCost.StdBurdenCost.
> End.
>
>
>
> Good Luck
>
> Greg
>
> From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com] On Behalf Of DaveO
> Sent: Friday, October 18, 2013 1:24 PM
> To: vantage@yahoogroups.com
> Subject: [Vantage] Any ABL/4GL gurus out there
>
>
>
> I have had 4GL code that has been working for years - all of a sudden break on me.
>
> This is BPM 4GL in a DataDirective for the PartCost table. When certain parts have their cost updated - we would like to update a separate independent part (not related to anything). So in my example if the PartCost.StdLaborCost for part "19465" is changed I would like to write the same number into part "08465".
>
> I put an information message in the code to make sure im making it into the Case - When. And that works. However the PartCost.StdLaborCost field is NOT being updated in "08465". Also there are no error messages however after the "save" the Form shows the updated cost. However, if I refresh and reload the "19465" the old cost number is displayed not the new number I put in.
>
> If I comment out the section of the find first . . . PartCost.PartNum = "08465" then the PartCost.StdLaborCost does seem to work.
>
> Any suggestions out there?
>
> Here is the 4GL (I stripped out all the other parts for brevity)
>
> ************************************** ABL / 4GL *********************
> /* UPDATE FOR LABOR AND BURDEN COSTS FOR EXIDE LEAD SWAP PARTS AND THEIR RELATED BILLING PARTS*/
> DEFINE variable txtStdLaborCost as character.
> DEFINE variable decStdLaborCost as decimal format ">>>,>>>.99999".
> DEFINE variable decStdLaborCostSubtract as decimal format ">>>,>>>.99999".
> DEFINE variable decStdLaborCostBase as decimal format ">>>,>>>.99999".
> DEFINE variable txtStdBurdenCost as character.
> DEFINE variable decStdBurdenCost as decimal format ">>>,>>>.99999".
> DEFINE variable decStdBurdenCostSubtract as decimal format ">>>,>>>.99999".
> DEFINE variable decStdBurdenCostBase as decimal format ">>>,>>>.99999".
> DEFINE VARIABLE delaytime as INTEGER INIT 0.
>
> /* FINDS THE RECORD OF THE PART TO BE UPDATED */
> find first ttPartCost where ttPartCost.Company = "WGC67967" no-lock no-error.
>
> /* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
> /* txtStdLaborCost = string(ttPartCost.StdLaborCost,'>>>>9.99999').
> {lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}. */
>
> /* CASE WORKS LIKE AN IF STATEMENT SO WE CAN LIST EACH PART WE WANT TO BE UPDATED USING A "WHEN...THEN DO" STATEMENT */
> CASE ttPartCost.PartNum:
> WHEN '19465' THEN DO:
> IF ttPartCost.PartNum = '19465' THEN DO:
> decStdLaborCost = ttPartCost.StdLaborCost.
> decStdBurdenCost = ttPartCost.StdBurdenCost.
>
> /* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
> txtStdLaborCost = string(decStdLaborCost,'>>>>9.99999').
> {lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}.
>
> find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' no-lock no-error.
>
> /* Update Billing Part Cost */
> if available PartCost Then do:
> Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdLaborCost', decStdLaborCost).
> Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdBurdenCost', decStdBurdenCost).
> end.
>
> end. /* IF ttPartCost.PartNum = '19465' THEN DO: */
> End. /* End WHEN */
>
> END. /* End CASE */
>
>
> ******************************* end ABL / 4GL **********************
>
> Thanks if anyone can help me on this one.
>
> Dave Olender
> Ph: 651-246-3281
>
>
> ________________________________
> CONFIDENTIALITY NOTICE
>
> The information contained in this communication, including attachments, is privileged and confidential. It is intended only for the exclusive use of the addressee. If the reader of this message is not the intended recipient, or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us at 727-578-6280 and immediately delete the communication.
>
> "This (document/presentation) may contain technical data as defined in the International Traffic In Arms Regulations (ITAR) 22 CFR 120.10. Export of this material is restricted by the Arms Export Control Act (22 U.S.C. 2751 et seq.) and may not be exported to foreign persons without prior approval form the U.S. Department of State."
>

(system) #2
I have had 4GL code that has been working for years - all of a sudden break on me.

This is BPM 4GL in a DataDirective for the PartCost table. When certain parts have their cost updated - we would like to update a separate independent part (not related to anything). So in my example if the PartCost.StdLaborCost for part "19465" is changed I would like to write the same number into part "08465".

I put an information message in the code to make sure im making it into the Case - When. And that works. However the PartCost.StdLaborCost field is NOT being updated in "08465". Also there are no error messages however after the "save" the Form shows the updated cost. However, if I refresh and reload the "19465" the old cost number is displayed not the new number I put in.

If I comment out the section of the find first . . . PartCost.PartNum = "08465" then the PartCost.StdLaborCost does seem to work.

Any suggestions out there?

Here is the 4GL (I stripped out all the other parts for brevity)



************************************** ABL / 4GL *********************
/* UPDATE FOR LABOR AND BURDEN COSTS FOR EXIDE LEAD SWAP PARTS AND THEIR RELATED BILLING PARTS*/
DEFINE variable txtStdLaborCost as character.
DEFINE variable decStdLaborCost as decimal format ">>>,>>>.99999".
DEFINE variable decStdLaborCostSubtract as decimal format ">>>,>>>.99999".
DEFINE variable decStdLaborCostBase as decimal format ">>>,>>>.99999".
DEFINE variable txtStdBurdenCost as character.
DEFINE variable decStdBurdenCost as decimal format ">>>,>>>.99999".
DEFINE variable decStdBurdenCostSubtract as decimal format ">>>,>>>.99999".
DEFINE variable decStdBurdenCostBase as decimal format ">>>,>>>.99999".
DEFINE VARIABLE delaytime as INTEGER INIT 0.

/* FINDS THE RECORD OF THE PART TO BE UPDATED */
find first ttPartCost where ttPartCost.Company = "WGC67967" no-lock no-error.

/* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
/* txtStdLaborCost = string(ttPartCost.StdLaborCost,'>>>>9.99999').
{lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}. */

/* CASE WORKS LIKE AN IF STATEMENT SO WE CAN LIST EACH PART WE WANT TO BE UPDATED USING A "WHEN...THEN DO" STATEMENT */
CASE ttPartCost.PartNum:
WHEN '19465' THEN DO:
IF ttPartCost.PartNum = '19465' THEN DO:
decStdLaborCost = ttPartCost.StdLaborCost.
decStdBurdenCost = ttPartCost.StdBurdenCost.

/* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
txtStdLaborCost = string(decStdLaborCost,'>>>>9.99999').
{lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}.

find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' no-lock no-error.

/* Update Billing Part Cost */
if available PartCost Then do:
Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdLaborCost', decStdLaborCost).
Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdBurdenCost', decStdBurdenCost).
end.

end. /* IF ttPartCost.PartNum = '19465' THEN DO: */
End. /* End WHEN */

END. /* End CASE */


******************************* end ABL / 4GL **********************


Thanks if anyone can help me on this one.

Dave Olender
Ph: 651-246-3281

(system) #3

Code doesn’t usually just stop working.  Your data was probably something “unexpected” (Not that users would do that mind you) You probably just need to account for that.  You might need an IF NOT AVAILABLE  That allows you to control the error situation not shown because of the “no-error”.

 

Brenda

 

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com] On Behalf Of DaveO
Sent: Friday, October 18, 2013 1:24 PM
To: vantage@yahoogroups.com
Subject: [Vantage] Any ABL/4GL gurus out there

 

 

I have had 4GL code that has been working for years - all of a sudden break on me.

This is BPM 4GL in a DataDirective for the PartCost table. When certain parts have their cost updated - we would like to update a separate independent part (not related to anything). So in my example if the PartCost.StdLaborCost for part "19465" is changed I would like to write the same number into part "08465".

I put an information message in the code to make sure im making it into the Case - When. And that works. However the PartCost.StdLaborCost field is NOT being updated in "08465". Also there are no error messages however after the "save" the Form shows the updated cost. However, if I refresh and reload the "19465" the old cost number is displayed not the new number I put in.

If I comment out the section of the find first . . . PartCost.PartNum = "08465" then the PartCost.StdLaborCost does seem to work.

Any suggestions out there?

Here is the 4GL (I stripped out all the other parts for brevity)

************************************** ABL / 4GL *********************
/* UPDATE FOR LABOR AND BURDEN COSTS FOR EXIDE LEAD SWAP PARTS AND THEIR RELATED BILLING PARTS*/
DEFINE variable txtStdLaborCost as character.
DEFINE variable decStdLaborCost as decimal format ">>>,>>>.99999".
DEFINE variable decStdLaborCostSubtract as decimal format ">>>,>>>.99999".
DEFINE variable decStdLaborCostBase as decimal format ">>>,>>>.99999".
DEFINE variable txtStdBurdenCost as character.
DEFINE variable decStdBurdenCost as decimal format ">>>,>>>.99999".
DEFINE variable decStdBurdenCostSubtract as decimal format ">>>,>>>.99999".
DEFINE variable decStdBurdenCostBase as decimal format ">>>,>>>.99999".
DEFINE VARIABLE delaytime as INTEGER INIT 0.

/* FINDS THE RECORD OF THE PART TO BE UPDATED */
find first ttPartCost where ttPartCost.Company = "WGC67967" no-lock no-error.

/* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
/* txtStdLaborCost = string(ttPartCost.StdLaborCost,'>>>>9.99999').
{lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}. */

/* CASE WORKS LIKE AN IF STATEMENT SO WE CAN LIST EACH PART WE WANT TO BE UPDATED USING A "WHEN...THEN DO" STATEMENT */
CASE ttPartCost.PartNum:
WHEN '19465' THEN DO:
IF ttPartCost.PartNum = '19465' THEN DO:
decStdLaborCost = ttPartCost.StdLaborCost.
decStdBurdenCost = ttPartCost.StdBurdenCost.

/* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
txtStdLaborCost = string(decStdLaborCost,'>>>>9.99999').
{lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}.

find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' no-lock no-error.

/* Update Billing Part Cost */
if available PartCost Then do:
Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdLaborCost', decStdLaborCost).
Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdBurdenCost', decStdBurdenCost).
end.

end. /* IF ttPartCost.PartNum = '19465' THEN DO: */
End. /* End WHEN */

END. /* End CASE */


******************************* end ABL / 4GL **********************

Thanks if anyone can help me on this one.

Dave Olender
Ph: 651-246-3281


(system) #4

Not that I am a guru, but since you are in a DD you also have the option of not using updatebuffer. Also, have you checked the appserver log for error messages during the transaction? I use message statements to write into the appserver log so I don’t have to deal with popups.

 

is the If inside of the case needed? it seems redundant.

 

If you find PartCost and lock it, then update it from the tt buffer it would look like this.

 

find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' exclusive-lock no-error.

 

if available PartCost Then do:

PartCost.StdLaborCost = ttPartCost.StdLaborCost.

PartCost.StdBurdenCost = ttPartCost.StdBurdenCost.
End.

 

 

 

Good Luck

 

Greg

 

From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com] On Behalf Of DaveO
Sent: Friday, October 18, 2013 1:24 PM
To: vantage@yahoogroups.com
Subject: [Vantage] Any ABL/4GL gurus out there

 

 

I have had 4GL code that has been working for years - all of a sudden break on me.

This is BPM 4GL in a DataDirective for the PartCost table. When certain parts have their cost updated - we would like to update a separate independent part (not related to anything). So in my example if the PartCost.StdLaborCost for part "19465" is changed I would like to write the same number into part "08465".

I put an information message in the code to make sure im making it into the Case - When. And that works. However the PartCost.StdLaborCost field is NOT being updated in "08465". Also there are no error messages however after the "save" the Form shows the updated cost. However, if I refresh and reload the "19465" the old cost number is displayed not the new number I put in.

If I comment out the section of the find first . . . PartCost.PartNum = "08465" then the PartCost.StdLaborCost does seem to work.

Any suggestions out there?

Here is the 4GL (I stripped out all the other parts for brevity)

************************************** ABL / 4GL *********************
/* UPDATE FOR LABOR AND BURDEN COSTS FOR EXIDE LEAD SWAP PARTS AND THEIR RELATED BILLING PARTS*/
DEFINE variable txtStdLaborCost as character.
DEFINE variable decStdLaborCost as decimal format ">>>,>>>.99999".
DEFINE variable decStdLaborCostSubtract as decimal format ">>>,>>>.99999".
DEFINE variable decStdLaborCostBase as decimal format ">>>,>>>.99999".
DEFINE variable txtStdBurdenCost as character.
DEFINE variable decStdBurdenCost as decimal format ">>>,>>>.99999".
DEFINE variable decStdBurdenCostSubtract as decimal format ">>>,>>>.99999".
DEFINE variable decStdBurdenCostBase as decimal format ">>>,>>>.99999".
DEFINE VARIABLE delaytime as INTEGER INIT 0.

/* FINDS THE RECORD OF THE PART TO BE UPDATED */
find first ttPartCost where ttPartCost.Company = "WGC67967" no-lock no-error.

/* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
/* txtStdLaborCost = string(ttPartCost.StdLaborCost,'>>>>9.99999').
{lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}. */

/* CASE WORKS LIKE AN IF STATEMENT SO WE CAN LIST EACH PART WE WANT TO BE UPDATED USING A "WHEN...THEN DO" STATEMENT */
CASE ttPartCost.PartNum:
WHEN '19465' THEN DO:
IF ttPartCost.PartNum = '19465' THEN DO:
decStdLaborCost = ttPartCost.StdLaborCost.
decStdBurdenCost = ttPartCost.StdBurdenCost.

/* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
txtStdLaborCost = string(decStdLaborCost,'>>>>9.99999').
{lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}.

find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' no-lock no-error.

/* Update Billing Part Cost */
if available PartCost Then do:
Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdLaborCost', decStdLaborCost).
Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdBurdenCost', decStdBurdenCost).
end.

end. /* IF ttPartCost.PartNum = '19465' THEN DO: */
End. /* End WHEN */

END. /* End CASE */


******************************* end ABL / 4GL **********************

Thanks if anyone can help me on this one.

Dave Olender
Ph: 651-246-3281



CONFIDENTIALITY NOTICE

The information contained in this communication, including attachments, is privileged and confidential. It is intended only for the exclusive use of the addressee. If the reader of this message is not the intended recipient, or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us at 727-578-6280 and immediately delete the communication.

"This (document/presentation) may contain technical data as defined in the International Traffic In Arms Regulations (ITAR) 22 CFR 120.10. Export of this material is restricted by the Arms Export Control Act (22 U.S.C. 2751 et seq.) and may not be exported to foreign persons without prior approval form the U.S. Department of State."

(system) #5
Mr. Greg: Thank you for the suggestion - I thought I HAD to use the update buffer. I will try it direct with a lock.

Thanks for the suggestion.

DaveO

--- In vantage@yahoogroups.com, Greg Payne <gpayne@...> wrote:
>
> Not that I am a guru, but since you are in a DD you also have the option of not using updatebuffer. Also, have you checked the appserver log for error messages during the transaction? I use message statements to write into the appserver log so I don't have to deal with popups.
>
> is the If inside of the case needed? it seems redundant.
>
> If you find PartCost and lock it, then update it from the tt buffer it would look like this.
>
> find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' exclusive-lock no-error.
>
> if available PartCost Then do:
> PartCost.StdLaborCost = ttPartCost.StdLaborCost.
> PartCost.StdBurdenCost = ttPartCost.StdBurdenCost.
> End.
>
>
>
> Good Luck
>
> Greg
>
> From: vantage@yahoogroups.com [mailto:vantage@yahoogroups.com] On Behalf Of DaveO
> Sent: Friday, October 18, 2013 1:24 PM
> To: vantage@yahoogroups.com
> Subject: [Vantage] Any ABL/4GL gurus out there
>
>
>
> I have had 4GL code that has been working for years - all of a sudden break on me.
>
> This is BPM 4GL in a DataDirective for the PartCost table. When certain parts have their cost updated - we would like to update a separate independent part (not related to anything). So in my example if the PartCost.StdLaborCost for part "19465" is changed I would like to write the same number into part "08465".
>
> I put an information message in the code to make sure im making it into the Case - When. And that works. However the PartCost.StdLaborCost field is NOT being updated in "08465". Also there are no error messages however after the "save" the Form shows the updated cost. However, if I refresh and reload the "19465" the old cost number is displayed not the new number I put in.
>
> If I comment out the section of the find first . . . PartCost.PartNum = "08465" then the PartCost.StdLaborCost does seem to work.
>
> Any suggestions out there?
>
> Here is the 4GL (I stripped out all the other parts for brevity)
>
> ************************************** ABL / 4GL *********************
> /* UPDATE FOR LABOR AND BURDEN COSTS FOR EXIDE LEAD SWAP PARTS AND THEIR RELATED BILLING PARTS*/
> DEFINE variable txtStdLaborCost as character.
> DEFINE variable decStdLaborCost as decimal format ">>>,>>>.99999".
> DEFINE variable decStdLaborCostSubtract as decimal format ">>>,>>>.99999".
> DEFINE variable decStdLaborCostBase as decimal format ">>>,>>>.99999".
> DEFINE variable txtStdBurdenCost as character.
> DEFINE variable decStdBurdenCost as decimal format ">>>,>>>.99999".
> DEFINE variable decStdBurdenCostSubtract as decimal format ">>>,>>>.99999".
> DEFINE variable decStdBurdenCostBase as decimal format ">>>,>>>.99999".
> DEFINE VARIABLE delaytime as INTEGER INIT 0.
>
> /* FINDS THE RECORD OF THE PART TO BE UPDATED */
> find first ttPartCost where ttPartCost.Company = "WGC67967" no-lock no-error.
>
> /* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
> /* txtStdLaborCost = string(ttPartCost.StdLaborCost,'>>>>9.99999').
> {lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}. */
>
> /* CASE WORKS LIKE AN IF STATEMENT SO WE CAN LIST EACH PART WE WANT TO BE UPDATED USING A "WHEN...THEN DO" STATEMENT */
> CASE ttPartCost.PartNum:
> WHEN '19465' THEN DO:
> IF ttPartCost.PartNum = '19465' THEN DO:
> decStdLaborCost = ttPartCost.StdLaborCost.
> decStdBurdenCost = ttPartCost.StdBurdenCost.
>
> /* IF YOU WANT TO SEE WHAT THE LOGIC IS DOING, THE TWO LINES BELOW WILL DISPLAY A MESSAGE WHEN THE TRANSACTION HAPPENS SO YOU CAN SEE */
> txtStdLaborCost = string(decStdLaborCost,'>>>>9.99999').
> {lib/PublishInfoMsg.i &InfoMsg="'The cost will be changed to: ' + txtStdLaborCost"}.
>
> find first PartCost where PartCost.Company='WGC67967' and PartCost.PartNum='08465' no-lock no-error.
>
> /* Update Billing Part Cost */
> if available PartCost Then do:
> Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdLaborCost', decStdLaborCost).
> Run lib\UpdateTableBuffer.p(input BUFFER PartCost:HANDLE, 'StdBurdenCost', decStdBurdenCost).
> end.
>
> end. /* IF ttPartCost.PartNum = '19465' THEN DO: */
> End. /* End WHEN */
>
> END. /* End CASE */
>
>
> ******************************* end ABL / 4GL **********************
>
> Thanks if anyone can help me on this one.
>
> Dave Olender
> Ph: 651-246-3281
>
>
> ________________________________
> CONFIDENTIALITY NOTICE
>
> The information contained in this communication, including attachments, is privileged and confidential. It is intended only for the exclusive use of the addressee. If the reader of this message is not the intended recipient, or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us at 727-578-6280 and immediately delete the communication.
>
> "This (document/presentation) may contain technical data as defined in the International Traffic In Arms Regulations (ITAR) 22 CFR 120.10. Export of this material is restricted by the Arms Export Control Act (22 U.S.C. 2751 et seq.) and may not be exported to foreign persons without prior approval form the U.S. Department of State."
>