newbie to Progress but an "old" programmer, where

Posted by Sean John on 14-Jul-2016 15:24

Our company used to use Oracle system but recently decided to move to Apprise (7.5), which uses Progress OpenEdge 11.1.  I checked 11.1 is kind of old but we have NO control. Apprise installs OpenEdge into 3  machines, I was told 2 are application servers and one is the RDBMS?  I looked into the installation, there is no easy way to tell which machine installs database, which one is the application server , most  menus like "Database Administration Console"  are identical in all 3  servers.  I did find 11.1 documentation and read some of them, to me , it's not easy to get  started with  Progress , I hope some one could enlighten  me  on some of the basics of progress:

1. where to find ad-hoc SQL query  tools? such as "mysql" in Mysql and "sql*plus" in Oracle?

2. Database Administration Console is like Sql*server's  Enterprise manager? but it doesn't allow me to create a physical database.

3. I assume ABL to progress is PL/sql to Oracle?  PL/sql can run inside RDBMS and Application server Forms services ( can be different version but mostly the same). Does  ABL run inside the  database? why is Application server   required ?

To practice I downloaded OpenEdge 11.6 and installed on windows server (both RDBMS and Studio), but I can't find an easy way to play with data like other database systems ( i.e, like Oracle I'll have sql*plus and it tells me some users like scott/tiger to select sample table right away).  Please enlighten me the proper way to get  started with Progress and become  a progress programmer ( Apprise has all API in .r files) , thank you.

Sean 

Posted by Paul Koufalis on 14-Jul-2016 15:36

1. Squirrel: squirrel-sql.sourceforge.net/

2. OpenEdge Explorer is the DB Admin Console but most non-Windows database deployments simply use the command line tools. They are quite easy to master. Newer versions of OpenEdge have more and more DB Admin Tools in OE Explorer. 11.1 is REALLY old and probably doesn't have that much.

3. The Progress ABL is Progress' language and is much more than PL/SQL..but the analogy is ok. No code runs "inside" the database other than Java stored procedures. All Progress ABL code is executed by one of the many clients: prowin32.exe for Windows; _progres[.exe] is the character client; _proapsv[.exe] is the AppServer agent.

With 11.6 you should have quite a few tools in OE Explorer for playing around with the database.

Do you want to acquire DBA skills or programmer skills? For programming, Progress offers a one month super-intense boot camp at their offices in Atlanta. The price is essentially free: $1000 IIRC.

If you want to acquire DBA skills, you can take one of the DBA classes at Progress but you may be better off working with  a company like ours (White Star Software) as we can train, mentor and support you within the context of your environment. Contact me offline if you want more information.

Regards,

Posted by smat-consulting on 11-Aug-2016 11:13

WRT: "I feel the whole OE  system architecture and deployment are more complex than software like Sql*server"

It is the actually easiest system I know:

1. open ProEnv

2. enter: prodb sean sports

3. enter: prowin32 sean -1

Voila. There's your DB, you're connected to it in single user, you're in the editor to write some sample programs  (for example: FOR EACH customer: DISPLAY customer. END.). Press F2 to execute the program.

Doesn't get any less complex than that...

Once you want to do production type stuff, with tons of users connected to the system, spread it all out over multiple machines, and so on it get's more complicated, of course. But, it still is easy enough that one person has a chance to know all about it. Show me another system where this is possible... :)

WRT: "ABL is funky".

Analogy: For somebody who is used to drive a horse and buggy a car is funky! :D

I wish you much joy and fun exploring this new language, DB, and environment! May you look back to this time years from now and think: Shoot! Should have known about that sooner!!! :) (y)

Posted by Keith Sudbury on 10-Aug-2016 11:05

OE is indeed very different from SQL Server and Oracle. Some of the differences you will learn to like.. some probably not so much.

The core ABL (4GL) is very easy to use and you can do everything that you could do in cursor based PL-SQL or T-SQL. Bulk processing is where you will notice the big differences.

There are also UI elements in the ABL that allow you to write GUI/CHUI screens. Quite a few vendors are starting to use .NET/Java/Web for the UI components though. Writing modern UIs in the ABL is much harder than just using a modern UI tool that can call ABL procedures.

The full on IDE tools (like Developer Studio//Appbuilder) are not required to write ABL code. Some of us just use Notepad ++, VIM or other editors to write the code. Depending on how you think this may or may not be easier for you.

Thinking of the OE appservers as traditional appservers and stored procedures is probably best conceptually. Not exactly the same thing but the use cases are the same. For a smaller install this can complicate things compared to SQL Server but any decent sized SQL application should have a similar tiered approach for security/scaling.

I would certainly take Kevin up on his offer. If they already expose common functions via an API it will make your life much easier. Always better to be supported than not. The less you have to go outside of the box the better, especially when it comes time to upgrade your ERP to the latest version.

All Replies

Posted by Paul Koufalis on 14-Jul-2016 15:36

1. Squirrel: squirrel-sql.sourceforge.net/

2. OpenEdge Explorer is the DB Admin Console but most non-Windows database deployments simply use the command line tools. They are quite easy to master. Newer versions of OpenEdge have more and more DB Admin Tools in OE Explorer. 11.1 is REALLY old and probably doesn't have that much.

3. The Progress ABL is Progress' language and is much more than PL/SQL..but the analogy is ok. No code runs "inside" the database other than Java stored procedures. All Progress ABL code is executed by one of the many clients: prowin32.exe for Windows; _progres[.exe] is the character client; _proapsv[.exe] is the AppServer agent.

With 11.6 you should have quite a few tools in OE Explorer for playing around with the database.

Do you want to acquire DBA skills or programmer skills? For programming, Progress offers a one month super-intense boot camp at their offices in Atlanta. The price is essentially free: $1000 IIRC.

If you want to acquire DBA skills, you can take one of the DBA classes at Progress but you may be better off working with  a company like ours (White Star Software) as we can train, mentor and support you within the context of your environment. Contact me offline if you want more information.

Regards,

Posted by Sean John on 14-Jul-2016 16:12

Thank you Paul,

I'm interested in becoming a Progress programmer, our ERP vendor maintains  OpenEdge and their ERP software, I can't change data structure but we want extend its functionalities.

1.  is there a huge difference between 11.1 and 11.6?  I'm talking about programming like  ABL.

2. in order to use ABL, I have to install one  RDBMS and one Application server?  If I want visual ABL  design, then I have to install OpenEdge studio?  this sounds I need   3 computers to finish a  demo Progress system, right?  Here we are using Windows only, required by the  ERP vendor. The downloaded  OE have 5 or 6 install components.

Your advice is much appreciated

Sean

Posted by Bill Wood on 14-Jul-2016 16:20

There is not a lot of difference between 11.1 and 11.6 on the basics of ABL programming. For learning, the later environment would be better.

You only need to install Progress Developer Studio for OpenEdge - this includes the Eclipse-based IDE, and development licenses (and executables) for the or database , the application servers, and all you need for a one-machine install.

Posted by Mike Fechner on 14-Jul-2016 16:23

There's even a free version, the class room edition: www.progress.com/.../classroom-edition

Posted by Thomas Mercer-Hursh on 14-Jul-2016 16:31

How important the difference is between the two versions depends on what you want to do.  You will find that a lot of the code from many Progress vendors came from Version 6 ... but it still works ... and that was from the late 80s.  As Bill says, you can do all the development on a single Windows box.  I would go for PDSOE, not the older product called Studio.  There is now a free 11.6 version of this available as the Classroom edition of the OpenEdge Developers Kit.  There is nothing to stop you writing and testing in 11.6 as long as you avoid new syntax and recognize that you will need to compile for the target market.  The one hitch may be that this product includes PAS for OE, the newer (and better) version of the application server and I don't know what issues there might be about testing with it and porting back to classic AppServer.

BTW, it is very common for Progress ISVs to say that they support only up to a certain version even though there is no reason the code won't run on the latest version.  They don't want the trouble of testing an older version of their application against a new version of Progress.  There are sometimes minor changes required, but often it is load and go.  But, persuading them to let you can be a major problem.

Posted by Brian K. Maher on 15-Jul-2016 03:22

Sean,
 
11.1 is older (relatively) but it is the version that Apprise is certified and supported on so you /really/ need to stick with that.
 
There are differences between 11.1 and 11.6 but again you need to stay with what they certify (unless, of course, that doesn’t matter to you and your company /and/ you have you your resume updated <smile>).
 
Open up the Procedure Editor for starters and get used to it.  That is the basic shell for writing ABL programs and executing them interactively.  Of course, the product is much, much more than just that but start out slow and go from there.
 
Brian

Posted by Brian K. Maher on 15-Jul-2016 03:24

This is true but be aware that if you expect to write code and hang it off of their existing application then you need to stick with 11.1.
 
Please don’t accept all these suggestions to use 11.6.  Stick with 11.1 where you will be supported by your application vendor.

Posted by Sean John on 15-Jul-2016 08:14

Thank you all for these great suggestions and advices. OpenEdge license is not a problem for us because the ERP vendor  takes care of  that. Version 11.1 stays until our ERP vendor upgrades their version.

My area of concern is how to use their API ( .r files ), I was told I can wrap .r files into DLL then use  Visual studio  or just use ABL. I'm interested in the  ABL way but unfamiliar with it, hence I posted this question.  I can't practice ABL on a production system, so I'm thinking that I install another  demo Progress system for myself , getting experience with ABL etc, then come back with the real system.  I can only download Open Edge 11.6 (for testing), but I did find 11.1 documentation which has lot of  books, I'm kind of getting lost there.

Once again, great appreciation for everyone of you and I'm grateful for your advices

Posted by Brian K. Maher on 15-Jul-2016 08:26

Sean,
 
Download the PDF doc set (or the installer for the docs) then start wit the ABL Essentials and Database Essentials books (ABL more then Database since I expect that Apprise handles the database configuration and performance optimizations).
 
Once you have read at least the ABL Essentials book look through the main page for the doc set and pick other stuff to learn more on.  There are lots of programming related stuff under the “ABL” section.
 
OpenEdge is a big product with lots of features.  Some things you will run into (particularly in the ABL Reference book) are more “old style” stuff that is there for compatibility purposes so be aware of that.
 
Brian

Posted by gus bjorklund on 15-Jul-2016 09:06

To get started with the 4GL, you should have a look at the “Programming Handbook”.

It is no longer part of the doc set, but you can find the book here:

community.progress.com/.../1791.9-1e-programming-handbook

Posted by smat-consulting on 15-Jul-2016 09:10

Just to addd a little...

In other environments you need a different product for the various parts - language, db, app servers, ... OpenEdge includes many, many of these parts - thus so many books in the doc. Don't let that scare you off... Here's a link for the 11.6 doc that Brian mentioned: documentation.progress.com/.../

 Also, if you like to program in OO style, you can do that with ABL. If you prefer procedural, ABL is good for that as well. And you can mix the two.You're not forced into a scheme, but can use the style you're most comfortable with.

 If you want to build a browser-based UI using HTML/JS, you can do that as well, using the WebSpeed feature of OpenEdge...

 A big difference between SQL and ABL, in my experience, is that a SQL query essentially denormalizes the data-structures - you get all data mashed together into a single record in your result-set. The ABL is record oriented (rather than result-set oriented as SQL). The data-structures remain normalized as in the DB (or the temporary data-structures you may define), and you can access the records of the individual tables within your queries directly... It is so much easier to work in that system than in SQL... you'll see, once you get the hang of it...

 One word of caution, though: Once you are familiar with OpenEdge you might be very unhappy if/when you have to work with anything else! It is so easy and quick to get high quality programs done in ABL, other languages and systems will become tedious, difficult and frustrating...

 Welcome to the club! :)

Posted by Brian K. Maher on 15-Jul-2016 09:12

ABL Essentials is basically the same thing
 

Posted by bkozak on 15-Jul-2016 09:42

[quote user="smat-consulting"]

 One word of caution, though: Once you are familiar with OpenEdge you might be very unhappy if/when you have to work with anything else! It is so easy and quick to get high quality programs done in ABL, other languages and systems will become tedious, difficult and frustrating...

 Welcome to the club! :)

[/quote]
Most definitely!!
You unfortunately missed the PUG Challenge/Exchange this year by a few weeks.   http://pugchallenge.org/index.html  It's the absolute BEST resource for OpenEdge information in the America's anywhere -- all for a ridiculously low price.  Put it on your calendar for next year!
[mention:cc09feab3621421d87a3c87b3a60d051:e9ed411860ed4f2ba0265705b8793d05] and Alan Estrada from Progress did a talk called " Why use the ABL? Why is the Progress 4GL More Productive than Alternatives?" this year and it underscored why the ABL/Progress 4GL is so nice.  
You can watch the downloads section for the 2016 slides to appear at the PUG Challenge's site, or perhaps Bill could send to you earlier! :)

Posted by Thomas Mercer-Hursh on 15-Jul-2016 09:51

A .r is the compiled version of a .p or .cls source code file.  By "compiled" we mean that it is converted to p-code, vaguely similar to Java, which must be interpreted by a run time engine.  So, no, you can't wrap it into a DLL.  Modern versions of Progress, which include your 11.1 also have a CLR bridge which allows direct use of .NET components ... with some limitations such as only the top thread if the component is multi-threaded.  But, it works very well, either for UI or for certain types of back end processing which would be hard to do in ABL.

Posted by Bill Wood on 15-Jul-2016 10:04

WRT

>> Bill Wood and Alan Estrada from Progress did a talk called " Why use the ABL? " [which]  underscored why the 4GL is so nice.

Thanks for the complement.... Alan and I had a great time writing that.   We have submitted the slides to the PUG Challenge team for publishing.   There is a github project for the associated ABL, C#, Python, and Java files (which we are updating now based on some great pull requests from people who 'suggested' improvements to our coding at 
  github.com/.../WhyABL

Posted by wrpkm2 on 15-Jul-2016 10:05

I am thinking that the comment about "wrap it into a DLL" may have been referring to the "Proxy Generator".

Posted by Sean John on 15-Jul-2016 11:14

Yes, "wrap it into a DLL"  is indeed referring to "proxy Generator".  I quoted from the ERP API doc(myself doesn't know such thing yet). The doc also says "unwrapped  DLL" too.  

I suppose .r files expose method signatures to  ABL coding if I include them?  The API doc doesn't mention how to use .r files directly by ABL, I think maybe they(ERP people) assume everyone knows and no need to mention?  I have not started yet but I need know the .r files can be used as library for ABL programs too.

Thank you

Posted by Brian K. Maher on 15-Jul-2016 11:22

Sean,
 
The Proxy Generator tool takes .r code, looks at the signatures (parameter lists) for the .r itself and for any exposed internal procedures or functions and generates C# code which is compiled down to a DLL.  The resulting DLL can be included (along with two runtime DLL’s) into a Visual Studio project and from there you can instantiate your proxy, connect to the AppServer and execute the different .r programs and their available internal procedures or functions on the AppServer.
 
Basically it makes .r code into method calls on an object.
 
Brian

Posted by Thomas Mercer-Hursh on 15-Jul-2016 11:26

.r files are run in the AVM - ABL Virtual Machine.   This can happen any of several ways.  And ABL client can start Progress and designate a starting program which then calls all other program.  Similarly with a batch client.  Or, one can be initiated in an AppServer agent, which is an AVM, by a call from any one of a number of client types, including OpenClient where the client process can be Java or .NET.

As noted, both procedural .p files and object-oriented .cls files compile to .r.  The .p is either just run (and can call other programs in turn) or it can be called persistently.  If persistent, then the calling program can execute public (i.e., not private) internal procedures.  There are two forms of persistent.  The regular one require you to have a handle to the persistent procedure to reference in calling one of its internal procedure.  A superprocedure you can just run the IP and it will find the appropriate persistent procedure up the call stack.  There are some complicated ways of layering these, but I would avoid that.   For a .r from a .cls, it has methods like most OO languages which are public, private, protected like other languages.  For a normal class, you must instantiate it and reference those methods via the instance reference.  For static methods, you can just reference the name and the instance will be created on the fly if needed, but that instance will never go away until the session holds, so use with caution.

Posted by Bill Wood on 15-Jul-2016 11:36

*.r files are compiled ABL. They are ABL execution byte-code.

You compile ABL source (.p, .w) files and both create .r files (sometimes called r-code)

An analogy is .java files. Those are source, but compile to Java bytecode in a .class file.

The analogy is not perfect because the ABL runtime can run source (like an interpreter) as well as compiled bytecode.

By convention, you would "RUN file.p" even it a compiled version exists. The RUN statement will first look for file.r and run it. Only if it does not exist will it look for file.p.

Posted by KevinRyer on 25-Jul-2016 13:34

Hi Sean,

  I work for Apprise, can I ask you to reach out to your implementation person (and/or log an Apprise Care ticket) and we can jump on a quick call together to figure out how we can help. As everyone mentioned above there are a number of free options available but depending on what you are trying to do , I might suggest different starting points.  

Using our existing APIs in a third party programming language is one set of skills

Writing general queries in the ABL is a different set of skills

Constructing a new screen in our tool set is... (you get the idea )

Thanks

Kevin

Posted by scott_auge on 25-Jul-2016 16:22

Here is some code so you can see the source in action.  Sometimes it can be easier to go from something to the docs and see what is going on:

www.amduus.com/.../

Some  videos here:

http://amduus.com/training/

And a book on OOP with the ABL here:

www.amduus.com/.../Discussions Of Object Oriented Programming In OpenEdge Distribution.pdf

Posted by Marco Mendoza on 08-Aug-2016 10:54

https://github.com/progress/WhyABL

I don't know why I always feel itchy when I see FINDs and FORs without NO-LOCK or EXCLUSIVE-LOCK.  ;)

Posted by Stefan Drissen on 08-Aug-2016 11:40

[quote user="Marco Mendoza"]

https://github.com/progress/WhyABL

I don't know why I always feel itchy when I see FINDs and FORs without NO-LOCK or EXCLUSIVE-LOCK.  ;)

[/quote]

As long as compiling is automated and compile sessions are started with -NL there is little to worry about. Less noise, more productivity.

Posted by ChUIMonster on 09-Aug-2016 15:27

Those are two awfully big assumptions.  And you know what they say about assumptions...

Posted by bronco on 09-Aug-2016 15:35

Not my cup of tea either. Always state your intentions explicitly.

Posted by Mike Fechner on 09-Aug-2016 15:40

+1
 
Gesendet von meinem Windows 10 Phone
 
Von: bronco
Gesendet: Dienstag, 9. August 2016 22:36
An: TU.OE.General@community.progress.com
Betreff: RE: [Technical Users - OE General] newbie to Progress but an "old" programmer, where to start?
 
Update from Progress Community
bronco

Not my cup of tea either. Always state your intentions explicitly.

View online

 

You received this notification because you subscribed to the forum.  To unsubscribe from only this thread, go here.

Flag this post as spam/abuse.

Posted by smat-consulting on 09-Aug-2016 16:30

Had to find so many hard-to-find bugs over the years that where caused by un-tidy code, relying on defaults, abbreviating stuff and such, I am a stickler for following coding conventions. Each of these bugs caused a rule in these conventions. always specify the lock is just one of them...

On the other hand, these samples are just supposed to give you an idea about the basics. If one would do everything as one would in a real application, the concept that is intended to be shown might get lost in the rest...

I wonder, if it would make sense to have some central spot where such best-practice coding-conventions could be published, and where people could make comments about how they would adjust these conventions. That way, a "newbie" could read a little about these ideas every so often and save her/him-self the bloody noses that inspired the various topics...

The problem with this idea is, of course, that every experienced programmer has her/his own favorite ways of doing things, and such a best-practices collection might quickly turn into a religious war-zone, where the original intent is no longer fulfilled...

@Sean: I'm happy to share my conventions with you, if you like. And I am sure, others would do the same...

Posted by Sean John on 10-Aug-2016 09:33

Thank you everyone for sharing your deep knowledge and great experience with OpenEdge with me. I had to deal with some problems coming up with current ERP so I haven't studied much  on  OE. I just came back and downloaded  the classroom edition. From a very initial glance, OE acts different than others, such as Application Server is almost a "must have" ( our newly installed ERP has  2 AppServers), the  ABL is funky, it acts more like an IDE than just a language. Our current ERP uses Providex, which has its own Advanced Business Logic language which we don't like ( easy to have exception ).  Our new ERP vendor coded their software in  2 layers: the database side is ABL, the user interface is VB.NET.  While I'm not qualified to   say anything about how good(or not so good) about ABL, I feel the whole OE  system architecture and deployment are more complex than software like Sql*server. it really feels good that I can get help from knowledgable people like you.

Posted by Brian K. Maher on 10-Aug-2016 09:38

I think complex is the wrong word.  Flexible is the word I would use.  <smile>

Posted by Keith Sudbury on 10-Aug-2016 11:05

OE is indeed very different from SQL Server and Oracle. Some of the differences you will learn to like.. some probably not so much.

The core ABL (4GL) is very easy to use and you can do everything that you could do in cursor based PL-SQL or T-SQL. Bulk processing is where you will notice the big differences.

There are also UI elements in the ABL that allow you to write GUI/CHUI screens. Quite a few vendors are starting to use .NET/Java/Web for the UI components though. Writing modern UIs in the ABL is much harder than just using a modern UI tool that can call ABL procedures.

The full on IDE tools (like Developer Studio//Appbuilder) are not required to write ABL code. Some of us just use Notepad ++, VIM or other editors to write the code. Depending on how you think this may or may not be easier for you.

Thinking of the OE appservers as traditional appservers and stored procedures is probably best conceptually. Not exactly the same thing but the use cases are the same. For a smaller install this can complicate things compared to SQL Server but any decent sized SQL application should have a similar tiered approach for security/scaling.

I would certainly take Kevin up on his offer. If they already expose common functions via an API it will make your life much easier. Always better to be supported than not. The less you have to go outside of the box the better, especially when it comes time to upgrade your ERP to the latest version.

Posted by smat-consulting on 11-Aug-2016 11:13

WRT: "I feel the whole OE  system architecture and deployment are more complex than software like Sql*server"

It is the actually easiest system I know:

1. open ProEnv

2. enter: prodb sean sports

3. enter: prowin32 sean -1

Voila. There's your DB, you're connected to it in single user, you're in the editor to write some sample programs  (for example: FOR EACH customer: DISPLAY customer. END.). Press F2 to execute the program.

Doesn't get any less complex than that...

Once you want to do production type stuff, with tons of users connected to the system, spread it all out over multiple machines, and so on it get's more complicated, of course. But, it still is easy enough that one person has a chance to know all about it. Show me another system where this is possible... :)

WRT: "ABL is funky".

Analogy: For somebody who is used to drive a horse and buggy a car is funky! :D

I wish you much joy and fun exploring this new language, DB, and environment! May you look back to this time years from now and think: Shoot! Should have known about that sooner!!! :) (y)

Posted by Sean John on 15-Aug-2016 08:58

Thanks,

Last weekend I just finished the Classroom tutorial.  I agree that ABL is easy on data access and the app server is kind of Unique and it's a plus. I still need some guidances on the following area:

1. ABL good for general programming? such as complex algorithm,web service consumption (i.e interact with credit card transactions which typically are exposed as  web services) and EDI?

2. GUI: we have to stick with 11.1, which  doesn't have something like Teleric but it it does have GUI for .NET.  The whole thing .NET comes into play is  that ABL GUI is not strong enough for windows users?  ( I used to code Oracle Forms 6i which works for database entries but its GUI is just basic). For me, should I just  use 11.1  appBuilder or just use 11.1 .NET GUI( visual designer)? I believe these 2 IDEs are separate GUI development tools?

3. We got all OE software as a bundle from the ERP company( including RDBMS 11.1 , app servers 11.1 and  developer tools 11.1), I'm not sure how Progress prices its software:  is the developer studio free?if It's free and backwards compatible with older database version, can I just use the 11.6 version Developer Studio ( or AppBulider or Visual Designer)?

Once again thank you for the great advices.

Posted by Brian K. Maher on 15-Aug-2016 11:01

Sean John,
 
Give me a call at 781-280-3075.  I work in support and can answer some of these questions but they would be best answered verbally as the answers will, I am sure, prompt other questions.
 
Brian Maher

This thread is closed