Archive

Archive for July, 2011

Bob Cancilla on IBM i › IBM i in IBM 2010 Financials

July 29th, 2011 Comments off
I just came across a break out of IBM Revenue posted by Bob Djurdjevic on his Annex Research web site.  The link above is the data source that I obtained from his site and added the percentages.

The URL for the full report from Annex Research is:
http://djurdjevic.com/2011/Bulletins2011/ibmseg10.pdf


This report is extremely significant.  It shows that IBM i revenue has dropped to 3/10ths of 1% of IBM total revenue or 282 Million out of 99.9 Billion in revenue.  Note that hardware sales once what IBM was all about has dropped to number 3 at 18% of total sales below Software 22.5% and Global Services 56.5%.

A statistic that IBM remains very quiet about is the fact that xSeries or Windows based Intel compatible servers dominate server sales with a whopping 5.4 Billion or 30.5% of server revenue.  Contrast that to IBM i based hardware sales of 6/10ths of 1%.  Note that sale of disk storage surpasses IBM's System z sales and System p is behind z.

This does not bode well at all for the future of IBM i as I have been saying for nearly a year now.
Believe what you will, but note that IBM has become a consulting company.  When IBM withdraws support for IBM i, they will be most happy to sell you services to move your applications to Windows on System x or Linux on System p. 

IBM is Microsoft's biggest service provider!  It is also IBM's biggest business partner!  Go figure...



Read the original at Bob Cancilla on IBM i.

Categories: Blogs Tags:

Young i Perspectives › New Article: Time To Start Tweeting with TweetMe4i, Part 2

July 21st, 2011 Comments off

Here is part 2 in the TweetMe4i article series.  It’s always amazing for me to learn what piques peoples interest.  Seems tweeting from the IBMi is definitely intriguing to people because many have been in touch with me with setup questions, and when I ask them what they are planning on doing with it, many say they are just wanting to try it out.  To that I say “GREAT”!  It is GREAT hearing people are still interesting in doing new and modern things with our beloved machine.

What else do you think we should be doing on IBMi?

AaronBartell.com


Read the original at Young i Perspectives.

Young i Perspectives › New Article: You Can Handle RPG OA

July 18th, 2011 Comments off

A year after OAR (IBM’s Open Access for RPG) was officially announced I finally have my first article out on it.

These days I am mostly interested in doing RPG to web and RPG to mobile so the article focuses on how to utilize OpenRPGUI APIs and OAR to communicate with the browser.

This article is the first time I have ever been the cover story, so I am eating a frozen strawberry bar in celebration:-)

Take a read and let me know your thoughts!

AaronBartell.com


Read the original at Young i Perspectives.

Categories: Blogs Tags:

i-Series Blogs › SQL Query with CASE keyword

July 16th, 2011 Comments off
SQL example CASE WHEN

SQL CASE is a very unique conditional statement providing if/then/else logic for any ordinary SQL command. It then provides when-then-else functionality (WHEN this condition is met THEN do_this).
CASE can be used with both SELECT Clause and WHERE Clause
Select Name,DOB,
        Case
          When Substr( Digits( DOB ), 4, 2 ) = '01' Then 'JAN'
          When Substr( Digits( DOB ), 4, 2 ) = '02' Then 'FEB'
          When Substr( Digits( DOB ), 4, 2 ) = '03' Then 'MAR'
          When Substr( Digits( DOB ), 4, 2 ) = '04' Then 'APR'
          When Substr( Digits( DOB ), 4, 2 ) = '05' Then 'MAY'
          When Substr( Digits( DOB ), 4, 2 ) = '06' Then 'JUN'
          When Substr( Digits( DOB ), 4, 2 ) = '07' Then 'JUL'
          When Substr( Digits( DOB ), 4, 2 ) = '08' Then 'AUG'
          When Substr( Digits( DOB ), 4, 2 ) = '09' Then 'SEP'
          When Substr( Digits( DOB ), 4, 2 ) = '10' Then 'OCT'
          When Substr( Digits( DOB ), 4, 2 ) = '11' Then 'NOV'
          When Substr( Digits( DOB ), 4, 2 ) = '12' Then 'DEC'
        End , DeptMst.DeptManager
   From EmpData, DeptMst
Where DeptMst.Dept =
        Case
          When Substr( EMPID , 1, 1 ) = 'P' Then 'Purchase'
          When Substr( EMPID , 1, 1 ) = 'Q' Then 'Quality'
          Else ‘Sale’
          End

The above query will provide data from Employee Data file and Department Master File. It will have 4 columns as Employee Name, Date of Birth, Month of Birth and Department Manager’s Name. The query gets department Id from first Character of Employee ID.

Do write me @ iSeriesblogs@gmail.com for any query or you can simply post comments below.

Happy Learning


Read the original at i-Series Blogs.

Categories: Blogs Tags:

Mike's IBM i PHP blog and more... › Is Ajax a spice or an entree?

July 15th, 2011 Comments off

A recent trip to visit a customer site had me thinking about food. No, it wasn’t the great big burrito I had for lunch. It was the use of technology in the application. We were invited to this customer site to examine a PHP application that was not performing well. This is not unusual for IBM i, Linux or Windows based PHP applications as no one is immune from challenges with coding practices and I for one can write bad code in more than 10 languages! Frequently, customers ask us a couple of standard questions like “where is the problem”. In many cases there isn’t just one problem but a handful of poor practices or as in this case some really good practices, poorly applied.

Now it is not unusual for PHP to “take it on the chin” for the sins of poorly applied technologies like Dojo, ExtJS and others. Frequently, we at Zend are in the trenches of a “This PHP application performs like $@#%” war and have to explain that the PHP is perfectly fine. In many cases the lack of indexes on SQL calls, tuning of the FastCGI or overuse of ajax can contribute to poor application performance. This is why the Application Audit from Zend becomes EXTREMELY valuable. Forgive me as I am not trying to turn this into an advertisement for our canned services as much as relating a recent experience.

After we finished the application audit, our auditor creates a summary. Sometimes in as few as 20 pages and others have shot well past 100. The length of the document really depends on what we find and the overall size and complexity of the application. Once the summary is completed we schedule a conference call with the auditor, customer and maybe a couple of carefully selected folks from Zend. For example, it would not be unusual to have someone from the ZF team join the call for a customer who is using ZF and needs direction on how best to optimize it. We went into the call for this customer with our punch list and I got to drive the discussion.

Like many of my discussions, I tend to think on the fly. The combination of ADD, diverse cultural experience and IT training gives me a unique ability pull analogies out of thin air. Some at Zend have referred to this as the “Pavlakian Response”. I was honored when they named it…I think. Regardless, I got on a bit of a roll with this customer as I started down a food analogy. Everybody can relate to food! We all have to eat, we’ve all had good meals and we’ve all had meals that left us a little less impressed. In this case, I chose to attack the application issues using the spicing analogy.

The meat and potatoes of most PHP applications are typically made up of the PHP code, HTML and database access. In most transaction based applications THIS IS ALL YOU NEED. Now stop with the torches and pitchforks regarding ZF, CSS, JavaScript, etc. I’m not saying those technologies are not valuable; in fact it is quite the contrary. I think JavaScript is EXTREMELY valuable and would encourage everyone to get educated. But just like with food, a balanced approach can make for an ideal experience. Different applications require different solutions much like food may differ based upon the environment. You simply cannot compare a buffet at a conference to a seven course meal at a fine steak house, yet I have enjoyed the experience of both.

Clearly this application was using JavaScript more like an entrée than as a spice and was causing significant problems with latency and unnecessary page rebuilds. For example, somewhere along the line they forgot that the A in ajax stands for asynchronous. Instead they were building everything serially, every time the page was built! This is nice for graphical applications or high level summaries where the data may not change very often. But in transaction processing you do not want to make the data entry folks wait for a summary element to be built before they can continue keying. As IBM i programmers we know this. As web designers become transaction based application developers, a little time in the kitchen working on how to make a balanced meal is in order!

These analogies come in handy because sometimes you never quite know who you are talking to on the phone. The audience for this call was very diverse as everyone on the phone understood what the application was supposed to do but each person possesses a very different level of technical expertise. While opening up the code might work for the developers in the room the business analysts and executives who may not have seen code in a few years might not appreciate the level of detail and potentially tune out. The food analogy helped all of the people in the room relate the fundamental issue and communicate at a common level. While nothing communicates value like a shared understanding we all can relate to a really good meal!

So, I ask you, are you using Ajax or other technologies as a spice or as an entrée?


Read the original at Mike's IBM i PHP blog and more....

Categories: Blogs Tags:

i-Series Blogs › XML host Variable in ILE RPG

July 15th, 2011 Comments off
Hi Guys,

In Continuation of my previous post.

The ILE RPG precompilers support an XML host variable type:

To exchange XML data between the database server and an embedded SQL application, you need to declare host variables in your application source code.
To declare XML host variables in embedded SQL applications, in the declaration section of the application declare the XML host variables AS LOB data types

Read more »


Read the original at i-Series Blogs.

i-Series Blogs › Host Variable

July 15th, 2011 Comments off
Host Variable Usage

Host variables are used in SQL statements to pass values between the database and the application program.

Using Variables in Statements
Host variables may be used:
·         to receive information from the database (SELECT INTO, FETCH, CALL and SET statements)
·         to assign values to columns in the database (CALL, INSERT and UPDATE statements)
·         to manipulate information taken from the database or contained in other variables (in expressions)
·         in dynamic SQL statements.

In all these contexts, the data type of the host variable or database column must be compatible with the data type of the corresponding database value or host variable.

Note: The colon is not part of the host variable name, and should not be used when the variable is referenced in host language statements.

Do write me @ iSeriesblogs@gmail.com for any query or you can simply post comments below.

Happy Learning


Read the original at i-Series Blogs.

Categories: Blogs Tags:

i-Series Blogs › Whats new in Embedded SQL Programming for V7.1

July 14th, 2011 Comments off
Hi Guys,

I just thought of sharing the new components added by IBM for Embedded SQL Programming in V7.1. I would be covering each below point as a separate blog.


The ILE RPG precompilers support an XML host variable type:
ILE RPG does not have variables that correspond to the SQL data type for XML. In V7.1 IBM has extended the usage of SQLTYPE for declaring XML Host variable.
XML can be define as
1.        XML_BLOB
2.        XML_CLOB
3.        XML_DBCLOB

The ILE RPG precompilers support result set locator host variable type:
ILE RPG does not have variables that correspond to the SQL data type for Result Set. In V7.1 IBM has extended the usage of SQLTYPE for declaring Result Set variable using keyword “Result_Set_Locator”.

The DBGENCKEY (Debug encryption key) parameter is passed to the compiler for ILE programs and service programs.
The DBGENCKEY value from the CRTSQLxxx command is specified on the CRTxxxMOD or CRTBNDxxx commands.

Do write me @ iSeriesblogs@gmail.com for any query or you can simply post comments below.

Happy Learning


Read the original at i-Series Blogs.

Pete's Wordshop › Summer fun

July 11th, 2011 Comments off

It’s summertime, summertime, sum, sum, summertime…..

Right!  Time for fun in the sun!  Given the time lapse since my last post, you’d think that I had gone on vacation.  Not so!  I have been busy, mostly with some challenging projects both in the tech world and outside it.  I have been to Italy and back attending the Common Europe Congress in Milan.  I have written a lengthy magazine article which forced me to grow my mobile app development skills.  I have been invited to present a mobile application development workshop at the Common Fall Conference along with presenting on Open Source Report Writing tools and using Open Office with IBM i data.  So, it looks like there is no rest to come this fall.  Add travel, a couple of pro-bono jobs (like I can afford to give away my time…) and I can see the summer gone in a flash.

Anything new besides the same ol, same ol?  Yes.  I have been playing with Liferay which is a pretty cool and easy to use portal application (if there is such a thing).  I have been trying to sort out the CMS and the portal plugin pieces because they would be of the most use to me directly.  Redesigning the valadd.com and the petesworkshop.com sites along with assap.com and the opensource4i.com (and it’s variations) sites is HIGH on my list, I just can’t afford to hand rewrite all of them. I was hoping to “portalize” them and consolidate them into a few portlets.  We’ll see.  The summer is quickly fading…

IBM seems to have fixed the SWMA mysteries and I am very hopeful that my next round of renewals (next year) will be problem free…

Still much to do.  I have an exam to pass to get certified as a GIAC Secure Software Programmer-Java and my time is running out.  I’ll update you by August 12th (if not sooner).


Read the original at Pete's Wordshop.

Categories: Blogs Tags:

i-Series Blogs › SQL where Clause (Row Value Expressions)

July 8th, 2011 Comments off

Hi Guys,


Again thanks to Issak (my linkedin Friend) who made me re-call the new feature which was introduce in V5R4 for SQL Where clause
Quoting his words.
SQL WHERE clause usually checks if a condition is true, false or unknown. In the past, each condition was evaluated for a single value. Starting with V5R4 groups or "rows" of values can be evaluated at once. These groups of values are called "row value expressions." 


Below is a simple example with constants: 

SELECT * FROM DEPTBL WHERE (DEPT, BRANCH)=('Shipping', '0012M')

The number of columns must be equal and of compatible data types. 

Statement provides the same result as 

SELECT * FROM DEPTBL WHERE DEPT='Shipping' AND BRANCH='0012M' 


Please note the parentheses usage in first example. 

The same technique applies to IN (SELECT…) predicate. However a constant list is not allowed when using a row value expression in this case. 

This saves some coding, but could look confusing in the beginning. It is just the matter of preferences.



Do write me @ iSeriesblogs@gmail.com for any query or you can simply post comments below.

Happy Learning



Read the original at i-Series Blogs.