Jun 01

Website issues


It looks like our website was inadvertently screwed up when we added the latest updates, the test server was incorrectly set as the server for the navigation links which was obviously wrong. It has now been corrected and we are sorry for any inconvenience it may have caused.

Chris..

Jan 07

New look for the Blog

If you have visited before you will probably notice a big change? We took the opportunity to update the Theme and Widgets while doing an update of the base software this week.

We have added a couple of new features such as the announcements widget and new Google Ads. The Theme allows for lots of user configuration which has resulted in what we feel is a nice new look for the site. The rotating header image allows us to additional information about our products which removes the old flash banner we used to use.

Let us know what you think about the new look and functionality, we will change it again for sure….

Chris…

Dec 22

Happy Holidays.

I am sure most of you are now winding down ready for the holidays and a well earned rest. I know for some this is not going to be a good time, the economy and rising employment is causing many to have a less than happy event.
I hope that even for those who have been unfortunate enough to loose their jobs that the holidays are as happy as can be in the circumstances and that 2009 brings new opportunities for you.

We will not be posting for a few weeks although as usual we will be working away with the new product features etc.

We wish everyone a Happy Holidays and a prosperous New Year!

Chris…

Dec 18

Just a name change or is it? Simply ‘i’!

We felt the Blog name was starting to get a little old so we decided it was time for a change! “System i5 New Generation Computing” didn’t make sense once IBM changed the brand yet again. Simply ‘i’ seems to fit the message we are trying to push out there even though it is already behind the curve with the new Power theme!

We have also been experimenting with the theme used for the site, we feel the the iNove suits. Let us know if you like the new theme or not.
You also will notice many new features on the Blog such as Polls and downloads, eventually we hope to have all of the downloads listed on the download page with a new format to show how popular they are. Please take the time to vote on our polls, we don’t save any of your details just your opinion!

Comments are always welcome, this is how we know if the Blog is actually providing value to the reader. Sitting here in our Ivory tower bleating on about what we are doing isn’t what we get a thrill from, it’s more important for us to get feedback on what you don’t like about the content and how we can deliver better and more interesting material. We are always looking for coding projects (small utilities mostly) to work on, the recent Crc Builder came from a request for advice and assistance from another forum.

Basically we want to help the IBM ‘i’ keep going, its a great box with lots of potential for the users. When you look at how well it was received by the user community despite IBM’s half cocked attempts to market it and how it still retains a loyal user base has to be something to do with how well it works. I always wonder just how well it would have done if IBM had priced the hardware and software in the same range as it does for the ‘pSeries’. I am not saying its the best of the best and everyone should throw out all their other technology in its favor, but don’t ignore it just because IBM is chasing other shooting stars (they all burn out in the end)….

Enough of the banter! Hope the changes are favorable if not you can always comment!

Chris….
[ratings]

Dec 15

Slight Problem when using Crc Builder and the ADLER32 algorithm

One of the users of the Crc Builder programs mentioned a problem with the CRC generated as it did not conform to the expected value when run against a known data set. The problem is the starting seed to the first call to the module supplied by the ZLIB people. A closer look at the code has shown me where I was going (or not) wrong.

Here is a link to the Wiki the test profile came from.

http://en.wikipedia.org/wiki/Adler-32

According to the Wikipedia entry for Adler-32, the data Wikipedia should result in a checksum of 300286872. Ours is producing 299697047 (This is after we converted the buffer to ASCII). or you could simply have x’57′ x’69′ x’6B’ x’69′ x’70′ x’65′ x’64′ x’69′ x’61′ in the data buffer(thanks to Chris Edmonson for that)..

So we looked at how exactly this was being generated, the final check sum gave us no idea where the problem lay but on review of the Wiki information we picked up on the following.

ASCII code A B
(shown as base 10)
W: 87 1 + 87 = 88 0 + 88 = 88
i: 105 88 + 105 = 193 88 + 193 = 281
k: 107 193 + 107 = 300 281 + 300 = 581
i: 105 300 + 105 = 405 581 + 405 = 986
p: 112 405 + 112 = 517 986 + 517 = 1503
e: 101 517 + 101 = 618 1503 + 618 = 2121
d: 100 618 + 100 = 718 2121 + 718 = 2839
i: 105 718 + 105 = 823 2839 + 823 = 3662
a: 97 823 + 97 = 920 3662 + 920 = 4582
A = 920 = 398 hex (base 16)
B = 4582 = 11E6 hex
Output = 300286872 = 11E60398 hex

You will see that the starting point for the final CRC was 1. When we called the function in our program it was being passed 0, so the end result while consistent never matched the expected output.

So we then started to look at the code as shipped by ZLIB people and found this piece of code
/* initial Adler-32 value (deferred check for len == 1 speed) */
if (buf == Z_NULL)
return 1L;

Here is the suggested code for calling the function.

define Z_NULL 0
uLong adler = adler32(0L, Z_NULL, 0);
while (read_buffer(buffer, length) != EOF) {
adler = adler32(adler, buffer, length);
}
if (adler != original_adler) error();

Our solution was very simple we simply initialized the adler variable to 1 on the first call with valid data! Made much more sense than calling the function just to get it set to 1?

uLong adler = 1;
adler = adler32(adler,buffer,buf_len);

We are not mathematicians so we are not sure of the impact of this, however we have posted a new version here

Download {title} {version,
Have fun!

Chris…

Dec 13

ZLIB Source updated to allow sucessful MAKE

We are looking at the Zlib source for use with the Crc Builder program which produces member and file level CRC’s for the data within the file. This will allow the user to verify the synchronicity of the files across systems. The source can be downloaded fro free and used at will as long as you stay within the terms described in the files, we are simply providing a copy which we fixed up to allow the REXX script to create the modules and programs correctly.

To create the necessary objects simply copy the save file contained in the attached zip file to your iSeries, restore the library (ZLIB) and then create the objects using the REXX script QREXSRC(MAKE). Add the library ZLIB then call the script using STRREXPRC SRCMBR(MAKE) SRCFILE(ZLIB/QREXSRC).

You should end up with all of the modules and programs correctly generated in ZLIB. The source we have updated creates the MODULES in ZLIB not QTEMP as in the original script. We did this so we can add the modules to a binding directory in the future.

We can declare no credit for the source, we simply changed the REXX script to allow it to sucessfully create the programs and modules. A change notice has been added to the CHANGELOG to this effect.

Download {title} {version,
Dec 13

Free 5250 FTP Client for download

We made this FTP Client as part of the FTP Manager product sometime ago and put it on our site for free downloads. As we now have the ability to add the objects into the posts correctly we have decided to add it here as well. While the product is offered without warranty or support we will attempt to fix up any problems you find.

Here are a couple of screen shots to show what it offers..

List of available connections

List of available connections

Activity log

Activity log

Object specific details

Object specific details

Local iSeries Listing of objects

Local iSeries Listing of objects

Remote Linux Directory Listing

Remote Linux Directory Listing

So if you are interested just down load!

Download {title} {version,
Dec 12

Program to create MD5 Checksums

We had been responding to a question on the iSeries Network Forums about how to check that 2 files on different systems had the same data content. This is important for those IBM i customers who are running a replication tool to keep the data in sync.

We already have data checking in our RAP product but it is done at the record level. Basically it reads every record in sequence and checks that the data in the record on the target system is the same. We had looked at how to manage a block type analysis before but never brought the technology into play because we felt the complexity of the solution would create more problems than it was worth.

This time we took a different approach to the problem, we decided to simply review all of the data in a member and create an MD5 checksum for it. This can be checked with a checksum generated on the target system and if the matched you could be assured the data was exactly the same.

The first few trials showed promise until we came across a small snag, the Data space sizes on the systems for a new member we added was different on each system, we were running V5R4 on the source and V6R1 on the target. The dataspace size on the target was 32K larger than that on the source! So we had to look at how to do a comparison using the correct data length. The first pass through we used the actual record length and simply multiplied it up by the number of records, this was a miserable failure! We started to get different MD5 checksums on the same system for members which had the same record count and data!

After some trial and error we manged to fix the problem and could create an accurate MD5 checksum for each member and file. The results are pretty dramatic when you consider the record by record method takes over 1 hour to check 600,000 records (we saw a peak throughput of approximately 471,000 records per hour) and yet the block method takes less than 1/2 minute to do over 1.2million records on one system and 15 seconds on the other!

We have packaged the test programs into a save file for download if you want it.
Download {title} {version,
To install simply restore the objects into a library and call the command CRTMD5. The data will be presented back to the user in reduced form unless you change the option on the command to display the block results. We also add the member level CRC’s into a DB file MD5DETS just in case you want to SQL the results or compare between systems using DDM etc.

Chris…

Dec 08

Compiles not returning correct information in WSDc

I am trying to get IBM to look into a problem where WSDc does not return all of the messages that should be generated when I compile a list of modules.

I am simply right clicking the member in the file list and submitting a number of them individually. I do this before the first compile is completed so in effect I have queued up requests to compile each object one after the other. The problem is I don’t get the messages back stating if the compile worked or not or the error list showing any warnings etc? The log shows each job is loaded for compilation but it does not show how they completed of any warnings etc which were issued for each object. If I do each one in sequence after each has finished I get all the messages and the log shows the correct message sequence.

The question is has anyone else seen this problem? If so how did you get over it? IBM says they cannot reproduce yet I can do it at will as long as the first compile is long enough that the follow on compiles can be selected and submitted before it returns.

Here is a list showing the sequence in the log.

ADDLIBLE RAP410SRC *LAST
Library RAP410SRC added to library list.
Cause . . . . . : If the ADDLIBLE command was used, RAP410SRC was added to the user library list. If the CHGSYSLIBL command was used, RAP410SRC was added to the system portion of the library list.

SBMJOB CMD(CRTCMOD MODULE(RAP410SRC/RAP00101) SRCFILE(RAP410SRC/QCSRC) SRCMBR(RAP00101) OUTPUT(*PRINT) OPTION(*EVENTF) DBGVIEW(*SOURCE) REPLACE(*YES)) JOBD(*LIBL/QBATCH)
Job 129043/RSEUSER/QBATCH submitted to job queue QBATCH in library QGPL.

SBMJOB CMD(CRTCMOD MODULE(RAP410SRC/RAP00102) SRCFILE(RAP410SRC/QCSRC) SRCMBR(RAP00102) OUTPUT(*PRINT) OPTION(*EVENTF) DBGVIEW(*SOURCE) REPLACE(*YES)) JOBD(*LIBL/QBATCH)
Job 129044/RSEUSER/QBATCH submitted to job queue QBATCH in library QGPL.

SBMJOB CMD(CRTCMOD MODULE(RAP410SRC/RAP0011) SRCFILE(RAP410SRC/QCSRC) SRCMBR(RAP0011) OUTPUT(*PRINT) OPTION(*EVENTF) DBGVIEW(*SOURCE) REPLACE(*YES)) JOBD(*LIBL/QBATCH)
Job 129045/RSEUSER/QBATCH submitted to job queue QBATCH in library QGPL.

CRTCMOD MODULE(RAP410SRC/RAP00101) SRCFILE(RAP410SRC/QCSRC) SRCMBR(RAP00101) OUTPUT(*PRINT) OPTION(*EVENTF) DBGVIEW(*SOURCE) REPLACE(*YES)
Module RAP00101 was created in library RAP410SRC on 12/08/08 at 14:20:14.
Cause . . . . . : Module RAP00101 was successfully created in library RAP410SRC. If the date and time of creation is missing, you may not have authority to the module object.

SBMJOB CMD(CRTCMOD MODULE(RAP410SRC/RAP00102) SRCFILE(RAP410SRC/QCSRC) SRCMBR(RAP00102) OUTPUT(*PRINT) OPTION(*EVENTF) DBGVIEW(*SOURCE) REPLACE(*YES)) JOBD(*LIBL/QBATCH)
Command has completed

You can see that I get a message back stating how the first submission ended and a message stating that the second completed. But no details on the second submission or any there after? The modules do get created even though they all have a multitude of warnings (I use Binding Directories to provide some functionality and the initial modules don’t know about them until the CRTPGM stage).

If you have seen this problem and managed to get over it let me know as IBM is not able to help it seems?

Chris…