ibmi-brunch-learn

Announcement

Collapse
No announcement yet.

New to mid range computers, need lots of help.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • New to mid range computers, need lots of help.

    I have recently started working for a wholesale food distribution company of about 120 employees that uses an AS/400 with canned software & a jumble of Windows programs, to run most of their business operations. Apparently, the company that wrote most of their software has repeatedly merged with larger companies, and the quality of their code and support has gone downhill over the years to the point where we need to replace them. The owner wants to get us back to writing all our software in house like we did 40+ years ago.

    There's a few problems I'm having and doubt anyone can solve them completely, but I figured I'd write a short description and hope someone can point me in the right direction.

    I am one of only two people in our IT department now that the woman training me has retired, my boss also wants to retire as soon as I feel comfortable running everything on my own. She plans on that being about two years from now, so I will be on my own before I can completely create and transition to a new system. Therefore, I need solutions that are easiest to learn and manage yourself, not necessarily what would be the industry standard, most scalable, or most resource efficient.

    My background is more in web development, most of what I have used after college is PHP, MySQL, HTML, CSS, & JavaScript, in college I did a lot of C++ console & win API programming, but no experience with mid-range computers. Originally my boss wrote all our software in RPG back when we used punch cards, most of that was carried over when they started using midrange IBM machines, and even now that code had been maintained and modded into the canned software we use. Our system only has RPG and COBOL available for programming languages, as my boss and the woman I replaced are trained in RPG, COBOL, FORTRAN, & ASSMBLER. Currently I've been learning and using COBOL for writing simple things like customer specific file exports, and using the system I navigators SQL interface to export xml files of data I need for more complex reports, importing that to excel, and using its built-in VBA editor.

    My boss tells me that the AS/400 can run any languages I want, and just need to let her know what I want and she will get the licenses and have them installed. But I'm not sure what would be the best for me to use. Eventually we want our entire system to be web based. What combinations of languages tend to work best for that on the AS/400?

    The software we have now is broken and needs to be replaced ASAP. We have found another software development company that has a better system for a price we are comfortable with, and will be switching to it. But ownership still wants to build our own after that, so we are not paying over $250k a year for the various licenses, support, and modifications needed to keep some very old and broken programs running. Which is the situation we have now. As such anything I write now needs to be able work with each new software solution. Our current system is written on mostly COBOL and some RPG, the next one I'm told is mostly C & RPG.

    Right now, there are a lot of reports I need to create, that I want to work regardless of what software solution we implement down the line. I would prefer to only be changing SQL statements, table, & column names. I shouldn't need to push anything to the existing database tables, but will need a few to save my own data in. I really need a good user friendly front end for our customers and employees to run these from so I'm not having to do it all myself. I think MS Access with and ODBC connection to our DB2 system would work well, and should survive the transition from each software system. But it requires the user to have MS access and dose not fulfill my web based requirement. Is it possible for me to set up one of our virtual servers as a web server that I can make a PHP site on that works the same way as I would deal with a MySQL database?

    Can I run other databases on the AS/400, and if so do I have to choose just one or can I have them run parallel. I've been considering MEAN stack development and the mongo DB looks attractive to me. Our main item sales history file is 18 million rows for the last year and has over 200 columns. But most items use only 30-50 of those columns. We have all the others for specific reporting requirements that are unique to each of our vendors. That leave 150+ columns filled with spaces, zeros, n/a ect. It seems like a huge waste of space. If I understand mongo correctly I could have objects in the same document with different properties. If we sold and Item without a discount we won?t record it as zero, we would just not have a discount field. When I search for items with a discount, and the object doesn?t have that field I would get some type of error and handle it as it were zero. The new software company we will be going with doesn?t think that saving 50-75% disk space is valuable. As they say storage is cheap and we won't see a improvement in performance from reducing disk space. That may be true for programs running locally with the AS/400 emulator. But I would think that once we are using a web interface and doing more work off site having a smaller amount of data to transmit would be a huge benefit.

    Is there any good IDEs like visual studio for the AS/400? I hate coding in the green screen and am wasting a lot of time tracking down logical errors because I must rely on data dumps instead of setting breakpoints and watches.

    Currently we have no version control, or documentation, for the programs we do write in house, they just copy the program being modded and rename it slightly, so for one report that I run monthly there?s 10+ versions out there that I have no clue what they do or if we need them anymore. Are there any good version control solutions on the AS/400, is it possible to use Git & GitHub with it?
    I know this is a ton of problems I?m dumping out here and really appreciate any bit of I that you have advice for.

  • #2
    Hi Cbauer,

    Welcome to the world of IBM i!

    First, I hope that your organization is not running an AS/400. It?s been a long time since IBM made the last of those. The modern version of the system runs the IBM i operating system on POWER hardware. To call these systems AS/400?s is something like referring to a PC that runs Windows 10 as a DOS machine.

    Second, these systems are as modern or as antiquated as you want them to be. You can still develop green-screen applications with RPG and COBOL, or you can build GUI interfaces using any one of many tools. The platform now includes newer languages such as PHP, Ruby and node.js on the server. You can run any language you wish on client systems.

    Third, if you want to use SQL as your database interface, you are in luck. Whereas you have to install a database management system on other systems (mainframe, Unix, Windows, Linux, whatever), the database is integrated into the system.

    Fourth, if you want a good IDE, get RDi. It?s not the greatest IDE I?ve ever used, but it beats SEU by a long shot.

    Fifth, IBM i does not include anything for version control. There are third-party solutions that you can license, or you can build something of your own. My experience is that version control has less to do with the package you use and more to do with everyone adhering to proper change-control standards.

    IBM i is a great system for business, and this forum is full of knowledgeable people who can help you. I?ll stop now and let others add their comments.

    Comment


    • #3
      AS/400 was discontinued in 2000. So I hope you're really referring to running the IBM i operating system on Power Systems hardware? This is the successor to the AS/400, and can run all of the old software, but of course can run lots of newer stuff.

      IBM i comes with the Apache HTTP server, WebSphere if you like Java, and also supports nginx. For Node.js users, of course, there's Express.js. There are a plethora of languages, but PHP runs really well and is widely used. Java, Python, Node.js and Ruby are all being used today, so you can pretty much take your pick of today's languages (aside from Microsoft stuff, that is.) For more traditional programming, RPG, Cobol, C, C++ and REXX. The OS includes it's own extremely powerful and capable version of IBM's DB2 database. As I'm sure you know, DB2 is one of the major players in the database market (alongside Oracle and SQL Server) so you've already got a great database here that is fully supported from all the aforementioned languages. MySQL, MariaDB and Postgres are also available if you prefer an open source option.

      Hopefully you can see, this system is very versatile with lots of choices for modern coding.

      You are asking "which combination of languages". To me, that's very much like asking "which combination of toppings should I put on my ice cream?" It really depends on what works best for you. My opinion is that RPG is the best language for writing business rules (I'm not a Cobol fan... and most other languages are not business oriented, and so aren't quite as elegant for business rules.) SQL, of course, is the best way to go for database work. And I'm really liking Node.js for other stuff -- it's a more elegant language than PHP, IMHO. It also has a really great environment of open source modules that you can pull into your programs with a really nice package manager to manage them all, keep track of dependencies, keep things up to date, etc.

      The company I work for is investing heavily in Node.js right now, and are adding a lot of the business capabilities that RPG and Cobol have into the Node.js environment, as well as writing tools to make it easier to rapidly build screens, ways to gradually migrate from older Cobol/RPG/etc programs towards Node.js, etc. We are in the business of helping people modernize their code, you see... so this is something you might consider if you're interested in going that route. www.profoundlogic.com

      But, those are my opinions... as you can see, you can choose just about anything you want.

      So what are the advantages of running this stuff on IBM i vs. moving to another platform?

      1) Stability. Our system is extremely stable, with almost no downtime. You certainly can't say that about Window servers :-)

      2) Scalability. A single system can support upwards of 10000 concurrent users in hundreds of applications at once. Hardware for most other platforms (aside from perhaps mainframes) does not scale that high. Of course, you can achieve scalability using clustering, but that greatly complicates the maintenance of the environment.

      3) Integration. The OS, hardware, and most programming languages are all designed from the ground up to be used together. For example, the people who built the hard disks and/or SSDs knew they would be using them with DB2 databases, and optimized them accordingly. Same with the OS and related software... it was designed for business and business workloads. That means that there's lot less maintenance needed in the database than other platforms. You almost never run into compatiblity problems or weird quirks with hardware/software compatiblity. Everything "just works" for the most part. (Obviously, compontents do wear out and fail occasionally... but, less so than other platforms.)

      So... those are my thoughts on your situation.

      But, the main take-away is... don't look back on some really old applications that you have and think that's all this system can do. It can still run the older stuff, but it can do the modern stuff as well.

      Comment


      • #4
        Sorry... forgot to say... there are several IDEs, but the most popular is IBM's Rational Developer for i (RDi for short) which is based on the extremely widely used Eclipse IDE. It's very powerful, I'd say moreso than Visual Studio.

        And, yes, of course you can do git/github. We use that all day every day where I work. There are also lots of other options, including some really good commercial ones.

        Comment


        • #5
          Just a thought - at the risk of sounding like a commercial.

          But if you really want to know what IBM i can do and what your programming and tooling options are - perhaps you can persuade your boss to send you to the upcoming RPG & DB2 Summit in Minneapolis. Details here: https://www.systemideveloper.com/index.html

          The focus is modernization and I believe we have the best set of sessions on the topic you can find anywhere. We are completely focussed on programming and database. All of the major vendors in the IBM i source and version control space will be there along with many application tool builders such as Profound and Look.

          You could also go to the fall COMMON event but there are less programming and database oriented topics there and more systems management type stuff, which Summit does not cover.

          You'll also get a chance to meet the two gentlemen (Scott and Ted) who replied earlier in this thread.

          Comment


          • #6
            Just saw this thread and I have little to add that hasn't been touched on. However, some points might need clarification or amplification.

            You wrote "AS/400" and also "let her know what I want and she will get the licenses and have them installed". I don't think those can quite be correct together. You might indeed have an older system that would be an "AS/400", but I don't know if any "licenses" can still be obtained for them (too old, out of software support). You might, however, have one of the systems that came after the "AS/400" systems. If so, and you have RPG/COBOL compiler licenses, then it's possible that you only need to install C/C++ for example, without needing to obtain any additional "license". Installing C/C++ is likely the only language you'd want to install other than perhaps various open source languages for which licensing is hardly an issue (e.g., PHP, Python, etc.)

            For "IDE", ideally you'll get at least one (and hopefully one-per developer) license for RDi. But you might get a little lucky, depending on exactly what system you currently have, what the OS version is and what product options have been installed and/or licensed. If the server is just barely old enough and developer tools are part of it, you might have WDSC lying around on a CD/DVD somewhere. Best you could hope for is WDSC 7, but it could possibly be installed on a PC for no additional cost. WDSC is a precursor to RDi and is missing a number of later features. Still, if it fits your OS level, it might be the best starting point. My newest server currently runs IBM i 6.1, though I have 7.1 ready to install. (Hope to pick up a newer system at end-of-year to run later OS releases; I simply haven't needed later features yet.)

            For me, WDSC 7 does practically everything I want from an IDE. It also fits with my two even older V5R3 servers that still perform admirably. But when I go to i 7.1 and later, I'll add RDi because I'll want to use some of the newer features. Further, I keep an old Win XP laptop around to run WDSC, and I want RDi to run on Linux. (Actually, two Win XP laptops... one for backup. Hope to leave Windows totally behind with RDi.)

            For you, it might just be a way to get an immediate start with a usable IDE, and it's possible that it actually fits the current environment. Carefully note that this is not a recommendation to rely on WDSC. It shouldn't be anything more than something that might be useful in the very short term but with immediate results IF you can dig up a copy.

            After that... debug. While it's easily possible to use the debugger just via green-screen (and I wouldn't be surprised if most developers do), you have a couple options available without any relationship to any IDE. First, the iSeries (or System i) Navigator has the 'Run SQL scripts' option. It's not immediately obvious, but that has a menu option that brings up a graphical debug interface, not necessarily directly tied to SQL debugging. And second, there is the System i5 Debugger. I've used it for quite a few years with plenty of success. (I've been especially happy since it runs fine on my Linux workstations.) More or less the same GUI interface comes up in both cases. I've also used it from within WDSC, and it's also accessed from within RDi.

            Finally,... database. As previously mentioned, you're going to need to learn DB2. As a start, you should become as accomplished as you can with writing SQL procedures and functions, not to mention logical views and indexes. Even if you eventually choose to continue with Excel/VBA for some reason, that may be significantly simplified by useful processing in the database before any exports. Of course, the more that's done within DB2, the less will be needed for any future interfaces such as via the web.

            Along with that, you should verify that your server has the SQL Developer Kit product installed. Much becomes possible if that's available. A part that you should become very familiar with is the SQL Query Manager. You'll want to learn both the creation of QM queries and the creation and use of QM forms (report writer). There might be numerous reports that can be relatively easy with no exports. An appropriate stored proc feeding a QM query and QM form could be the end of it for many reports.

            Back some 30 or so years ago, I did a bunch of work for Portland Wholesale Grocery, Co., which then merged with CFS Continental. (Now a SysCo company.) I've had some good jobs, five years in the western U.S. data center for a multi-billion-dollar, multi-national, and three years as a systems programmer on-site at the largest PC manufacturing facility in the world, and other interesting jobs. But that new site after the PWG/CFS merger was the tops. The cafeteria was incredible. It actually had a real chef in charge who could prepare to order, and the available variety was mind-boggling. If other food distributors have comparable perks, I envy you for that.

            But when I hear (or read) about tables with 150+ columns (that might have been originally created as far back as System/34 days)? Some of the envy fades. I have some mostly buried memories of some of the seemingly unique 'problems' of the industry. I don't know if a high enough rate could be offered to get me back in there unless it was for a serious database modernization project.

            For now, I can do little more than wish you luck.
            Tom

            There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.

            Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth?

            Comment

            Working...
            X