Join the Midlands Midrange User Group, IBM and MSI Systems Integrators as we welcome Bob Schuster from IBM’s Rochester Executive Briefing Center to discuss iSCSI and Blade integration for System i. IBM has extended industry-standard iSCSI technology to attach selected BladeCenter and System x models to the System i platform so you can exploit System i virtual storage, networking, and tape resources to help simplify the operations of your Windows or Linux Server system infrastructure.
Download the pdf file for further details.
When : Thursday, October 24, 2006
Time : 11:00 a.m. to 1:00 0 p.m.
Where : MSI Systems Integrators
14301 First National Parkway, Ste 400
Omaha, NE 68164
NE corner of 144th & Dodge
Registration : Visit the MSI website to register at http://www.msiinet.com/events
Agenda
10:45 a.m. Registration
11:00 a.m. Welcome & Introductions
11:15 a.m. iSCSI Technologies by Bob Schuster, IBM and Patrick Bingham, MSI
12:30 p.m. Question & Answer Session
01:00 p.m. Wrap-up
Grand Prize Drawing : Attendees will be eligible for an Omaha Steaks prize package drawing complements of MSI
Possible Related Links
IntroductionPHP on the System i - Lunch and LearnFOR SALE: IBM iSeries Model 825
After an excellent presentation on last Tuesday by Leonardo Llames on PHP on iSeries, we are pleased to share his presentation slides with our members. Just click here to download the file in PDF format.
If you cannot download the file, please contact us using this form:
Possible Related Links
QSHELL on iSeriesiSeries RPG programming linksFOR SALE: IBM iSeries Model 825
Join IBM and High Plains Technology to learn about the recent announcement that customers can now implement PHP on the System i and i5/OS. PHP is the leading scripting language deployed on the internet. See how this technology can be deployed on the System i and how it can be used to access i5/OS resources. In this session, IBM’s Leonardo Llames from the Rochester Advanced Technical Support Team (ATS) will review:
Zend Studio for i5/OS
Zend Core
Access to i5/OS Resources
DB2 for i5/OS
Program Call
Data Area
Data Queue
Message Queue
Zend Platform
Support
System requirements
Installation
Each session will include a complimentary lunch and an opportunity to stay after to ask Leonardo your in-depth questions. Each session will begin promptly at 11:00 a.m.
Thank you to the Omaha (MMUG) and Fargo User Groups for co-sponsoring the sessions in Nebraska and North Dakota! We appreciate the close partnership with these organizations.
| When |
Tuesday, September 12th, 2006 |
| Where |
Westside Conference Center 3534 South 108th Street |
| Check-in |
10:30AM to 11:00AM |
Session/ Complimentary Lunch |
11:00AM to 1:00AM |
| RSVP |
Bo Gebbie :: gebbie @ us.ibm.com :: 402-399-4460 by Thursday, September 8th, 2006 |
Possible Related Links
iSeries RPG programming linksISCSI TECHNOLOGIES FOR SYSTEM INew Events Page
MMUG received an email from a iSeries user about data mapping. If some one has dealt with this problem before and can help this user, please contact us or post the solution by clicking on Comments.
We are looking to see if there are any tools available or maybe 3rd party software available that other iSeries users have used and have been successful in a data move.
We will be migrating to an ‘off the shelf’ software package. Prior to the move, we want to have as much as possible, “clean data” to migrate into the new software package. We have currently been using queries and sql statements to identify the bad data, fix it, then use the CPYF command in a CL to copy the data into our staging files. These staging files will then be used to migrate the data into the new software. We are thinking there is a “better way” or a more efficient way.
What we have been running into is that if you run the CPYF CL first, it will stop on the first record that contains bad data (the staging file has been set up with more constraints than the file that we are copying from) and then not continue through the other records but end out. It would be nice if it would write out the bad record to some type of log file (it does write out the record number in the QEZJOBLOG) and then continue on with copying over the other good records . The type of error the CL throws is an unrecoverable read/write error and therefore won’t continue on.
Have you been through any kind of data moves that you may have used a third party tool or a way on the iSeries to accomplish this feat? Any suggestions or advice is appreciated.
Possible Related Links
iSeries Users Group Forums are now openISCSI TECHNOLOGIES FOR SYSTEM IPHP on the System i - Lunch and Learn
Possible Related Links
MMUG Meeting on June 15th, 2006IntroductionNew Events Page
We received a request from Jeff Willer from CSG Systems, which is as follows:
(Please note: Any questions about this system must be directed to Jeff Willer of CSG Systems. Midlands Midrange Users Group and it’s officers are not responsible and are not involved in any transaction related to this sale. This information is provided as a service to our members.)
Attached here is spec sheet on the machine we will have available for sale. The machine is three years old and is located in Omaha. It will be available in mid-September. I can appreciate the policy of guarding the names and contacts of your membership, and therefore will ask that you share this information with your membership and ask them to contact us if they have any interest. Contact information is included in the spec sheet. We will consider any reasonable offer.
Spec-Sheet is as follows:
IBM iSeries Model 825
Hardware
Basic Machine: iSeries 9406 Model 825 Enterprise Edition 7418
Serial Number: 10-2695C
Purchase Date: August, 2003
Processors: 3/6 way (3300/6600 CPW); 5 processors activated
Operating Systems: Version 5 Release 2
Configuration: 3 Partitions: Primary, Production, Test
Memory: 22.5 GB
0.7 Primary
10.2 Production
11.6 Test
Disk: 2.1 TB
0.00 Primary (2 – 35.16 disks, mirrored)
1.06 Production (16 – 35.16 and 9 – 70.56 disks, RAID 5)
1.09 Test (22 – 35.16 and 8 – 70.56 disks, RAID 5)
Tape Drive: IBM Model 3590-H11Enterprise (10 cartridge)
Software
5722BR1 IBM Backup Recovery and Media Services for iSeries
5722PT1 IBM Performance Tools for iSeries
5722QU1 IBM Query for iSeries
5722SS1 Operating System/400
5722ST1 IBM DB2 Query Manager and SQL Development Kit
5722WDS IBM Websphere Studio Development Suite
5722XW1 IBM eServer iSeries Access Family (40 licenses)
Original Purchase Price (reference only): $680,000
If interested, please contact:
Jeff Willer 402-964-1519 Jeff_Willer -at- csgsystems.com
-or-
Dennis Smid 402-963-8600 Dennis_Smid -at- csgsystems.com
Possible Related Links
Current For Sale ItemsFor SaleMCPressOnline iSeries Book Sale
Here is a utility that will convert any iSeries database file to CSV (Comma Seperated Values) format with a delimiter of your choice. You can choose the delimiter
because it is very possible to have a comma in a description. So choose wisely.
I was forced to write this utility and here is why. I had a project to transfer data files from the iSeries 400 to a server that was running California Software Baby 400 system.
Seems simple enough just use the CPYFRMSTMF command or the CPYFRMIMPF right?
Yeah I thought so too. Well as I tried to use these commands as I have used them before and they work just fine if you have a good database file. But IBM did not think of everything
that programmers can do to a database file.
In my case I ran across (and not in just one file) packed numeric data. So what is the problem you ask? The data length of these packed fields were 1 bytes and 2 bytes. Why would you pack a 1 byte numeric field or even a 2 byte numeric field? The above mentioned command did not stop but they did not work either. Can you guess what they did? ……. Ok times up, they took those fields and extended them by 1 byte so the 1 byte packed became 2 bytes and the 2 bytes became 3 bytes. No matter what I did I could not get the file converted correctly on iSeries.
So either I can write a 100 or so programs (which I decided not to do) or write a utility to do all the work for me. Which is what I did and I am sharing this with whoever wants to use it. Feel free to use it and to make what ever changes you need for your use.
All the work is done in QTEMP. The process creates a work file call CVFILEO and a
temporary library with QRPGLESRC and a temporary program called CVPGM. The temp library is the use name with a ‘@’ in front of it. Example: if the user name is kfoland
the library name will be @kfoland.
So we have one work file called CVFILEO.
One command called CVF2CSV. Compiled to call CV0CL.
Two CL programs CV0CL and CV1CL.
Two RPGLE programs CV1 and CV2.
The simple process is as follows:
1. Delete temp files
2. Create duplicate object CVFILEO into QTEMP
3. Display field description on the incoming file into a file called CVFILE
4. Call CV1 to get the record length and call CV1CL to build the flat file with the given
record length.
5. Create the temp library.
6. Create QRPGLESRC in the temp library
7. Add the physical file member CVPGM to QRPGLESRC in the temp library
8. Call CV2 to read the incoming file and to create the temp program CVPGM.
9. Compile CVPGM
10. Call CVPGM
11. Copy the flat file from QTEMP to the out going file.
To get started, compile the file, command and the programs.
Prompt up the command and fill out the parms or just call CV0VL with the following parms.
PARM(&FILE &LIBR &TFILE &TLIBR &DEM)
where
&FILE = database file to be converted
&LIBR = library were the database file is located
&TFILE = name you want for the converted file
&TLIBR = library where the converted file will be
&DEM = the delimiter you want to use. Choose wisely
After the process runs you can check out the temp library and the program that was created in QSYS as the library will get deleted at the beginning of the process. You can change this if you want to delete the library at the end of the process. The process will delete any files or libraries in QTEMP as it runs.
This has help me so I hope it can help others as well.
-
/********************************************/
-
/* COMMAND NAME IS CVF2CSV */
-
/* This command will call CV0CL to convert a database file*/
-
/* to CSV format with your choice of delimiter */
-
/********************************************/
-
-
CMD PROMPT(‘Convert File to CSV Format’)
-
PARM KWD(FROMFILE) TYPE(*CHAR) LEN(10) +
-
PROMPT(‘Enter File to Convert’)
-
PARM KWD(FROMLIBR) TYPE(*CHAR) LEN(10) +
-
PROMPT(‘Enter Library for Input File’)
-
PARM KWD(TOFILE) TYPE(*CHAR) LEN(10) +
-
PROMPT(‘Converted File Name’)
-
PARM KWD(TOLIBR) TYPE(*CHAR) LEN(10) +
-
PROMPT(‘Library for Converted File’)
-
PARM KWD(DELIMITER) TYPE(*CHAR) LEN(1) DFT(‘~’) +
-
PROMPT(‘Delimiter’)
-
/******************************************/
-
/* CL name is cv0cl */
-
/* CL to run the process to convert a file passed to csv */
-
/* file format */
-
/******************************************/
-
-
PGM PARM(&FILE &LIBR &TFILE &TLIBR &DEM)
-
DCL VAR(&LIBR) TYPE(*CHAR) LEN(10)
-
DCL VAR(&FILE) TYPE(*CHAR) LEN(10)
-
DCL VAR(&TLIBR) TYPE(*CHAR) LEN(10)
-
DCL VAR(&TFILE) TYPE(*CHAR) LEN(10)
-
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
-
DCL VAR(&WLIBR) TYPE(*CHAR) LEN(10)
-
DCL VAR(&DEM) TYPE(*CHAR) LEN(1)
-
DCL VAR(&LENGTH) TYPE(*CHAR) LEN(5)
-
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
-
DCL VAR(&MSG) TYPE(*CHAR) LEN(100)
-
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
-
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
-
RTVJOBA USER(&USER)
-
CHKOBJ OBJ(&LIBR/&FILE) OBJTYPE(*FILE)
-
DLTF FILE(QTEMP/CVFILE)
-
MONMSG MSGID(CPF0000)
-
DLTF FILE(QTEMP/CVFLAT)
-
MONMSG MSGID(CPF0000)
-
DLTF FILE(QTEMP/CVFILEO)
-
MONMSG MSGID(CPF0000)
-
CRTDUPOBJ OBJ(CVFILEO) FROMLIB(KFOLAND) OBJTYPE(*FILE) +
-
TOLIB(QTEMP)
-
DSPFFD FILE(&LIBR/&FILE) OUTPUT(*OUTFILE) +
-
OUTFILE(QTEMP/CVFILE)
-
OVRDBF FILE(CVFILE) TOFILE(QTEMP/CVFILE)
-
OVRDBF FILE(CVFILEO) TOFILE(QTEMP/CVFILEO)
-
CALL PGM(CV1) PARM(&LENGTH)
-
IF COND(&LENGTH *NE ‘00000′) THEN(DO)
-
CHGVAR VAR(&WLIBR) VALUE(‘@’ *TCAT %SUBSTRING(&USER +
-
1 9))
-
-
/* create the temp library for the temp program */
-
-
DLTLIB LIB(&WLIBR)
-
MONMSG MSGID(CPF0000)
-
CRTLIB LIB(&WLIBR)
-
CRTSRCPF FILE(&WLIBR/QRPGLESRC) RCDLEN(112)
-
ADDPFM FILE(&WLIBR/QRPGLESRC) MBR(cvpgm) +
-
TEXT(‘Convert program’) SRCTYPE(RPGLE)
-
OVRDBF FILE(cvpgm) TOFILE(&WLIBR/QRPGLESRC) +
-
MBR(cvpgm)
-
OVRDBF FILE(CVFLAT) TOFILE(QTEMP/CVFLAT)
-
CALL PGM(CV2) PARM(&FILE &LENGTH &DEM)
-
DLTOVR FILE(*ALL)
-
OVRDBF FILE(&FILE) TOFILE(&LIBR/&FILE)
-
CRTBNDRPG PGM(&WLIBR/CVPGM) SRCFILE(&WLIBR/QRPGLESRC) +
-
OUTPUT(*PRINT)
-
OVRDBF FILE(&FILE) TOFILE(&LIBR/&FILE)
-
OVRDBF FILE(CVFLAT) TOFILE(QTEMP/CVFLAT)
-
CALL PGM(&WLIBR/cvpgm)
-
DLTOVR FILE(*ALL)
-
CPYF FROMFILE(QTEMP/CVFLAT) TOFILE(&TLIBR/&TFILE) +
-
MBROPT(*REPLACE) CRTFILE(*YES)
-
ENDDO
-
GOTO CMDLBL(ENDPGM)
-
/* */
-
/*—————————————*/
-
/* NORMAL PROGRAM EXIT */
-
/*—————————————*/
-
/* */
-
-
EXIT: GOTO CMDLBL(ENDPGM)
-
/* */
-
/*—————————————*/
-
/* ERROR HANDLING ROUTINE */
-
/*—————————————*/
-
/* */
-
-
ERROR: RCVMSG MSGDTA(&MSG) MSGID(&MSGID) MSGF(&MSGF)
-
MONMSG MSGID(CPF0000)
-
SNDPGMMSG MSGID(&MSGID) MSGF(&MSGF) MSGDTA(&MSG) +
-
MSGTYPE(*ESCAPE)
-
MONMSG MSGID(CPF0000)
-
GOTO CMDLBL(ENDPGM)
-
/* */
-
/* */
-
-
ENDPGM: ENDPGM
-
H OPTION(*Srcstmt : *Nodebugio)
-
A********************************************
-
A* program name IS cv1 *
-
A* figure the record length of the file being converted *
-
A********************************************
-
A*
-
fCvfile IF e Disk Usropn
-
fCvfileo o e Disk
-
A*
-
d @Total s 5 0
-
d @FIELDS s 5 0
-
d @Start s 5 0
-
d @Length s 5
-
A*
-
c *Entry Plist
-
c Parm @Length
-
A* Open AND READ the file AND figure the new length
-
A* after ALL the packed FIELDS are unpacked
-
c Open Cvfile
-
c DoU %Eof(Cvfile)
-
c READ Cvfile
-
c IF NOT %Eof(Cvfile)
-
c
-
A*
-
c Eval @FIELDS = Whnfld
-
A* IF packed then USE the unpacked length
-
c IF Whfldt = ‘P’
-
c Eval Whfldb = Whfldd
-
c EndIf
-
c IF Whfldt = ‘A’
-
c Eval @Total = @Total + 2
-
c EndIf
-
c IF Whfldp <> *Zeros
-
c Eval @Total = @Total + 2
-
c EndIf
-
A* ADD TO get the new total record length
-
c Eval @Total = @Total + Whfldb
-
A*
-
A*
-
c EndIf
-
c EndDo
-
A*
-
c Close Cvfile
-
c Eval @Total = @Total + @FIELDS
-
c Move @Total @Length
-
c IF @Total <> *Zeros
-
A* CREATE the flat file
-
c Call ‘CV1CL’
-
C Parm @Total
-
A*
-
c EndIf
-
A*
-
c Eval @Start = 0
-
A* Open AND READ the file AND output info TO work file
-
c Open Cvfile
-
c DoU %Eof(Cvfile)
-
c READ Cvfile
-
c IF NOT %Eof(Cvfile)
-
A*
-
A* IF packed then USE the unpacked length
-
c IF Whfldt = ‘P’
-
c Eval Whfldb = Whfldd
-
c Eval Whfldt = ‘S’
-
c EndIf
-
A*
-
c IF @Start = *Zeros
-
c Eval @Start = 1
-
c Eval Cvstart = 1
-
c Eval Cvend = Whfldb
-
c Else
-
c Eval Cvstart = Cvend + 1
-
c Eval Cvend = Cvend + Whfldb
-
c EndIf
-
A*
-
c Eval Cvfname = Whfile
-
c Eval Cvfield = Whfldi
-
c Eval Cvtype = Whfldt
-
c Eval Cvlength = Whfldb
-
c Eval Cvdec = Whfldp
-
c Eval Cvformat = Whname
-
c WRITE Cvrec
-
A*
-
A*
-
c EndIf
-
c EndDo
-
c Close Cvfile
-
A*
-
A*
-
c Eval *Inlr = *ON
-
/*****************************************************/
-
/* cl name is cv1cl */
-
/* cl to build a temp flat file based on parms sent */
-
/* into the program */
-
/*****************************************************/
-
-
PGM PARM(&LENGTH)
-
DCL VAR(&LENGTH) TYPE(*DEC) LEN(5 0)
-
DLTF FILE(QTEMP/CVFLAT)
-
MONMSG MSGID(CPF0000)
-
CRTPF FILE(QTEMP/CVFLAT) RCDLEN(&LENGTH)
-
END: ENDPGM
-
H OPTION(*Srcstmt : *Nodebugio)
-
A**********************************************************************
-
A* program name IS cv2 *
-
A* this program will WRITE the program needed TO convert the file *
-
A* TO CSV format *
-
A**********************************************************************
-
A*
-
fCvfileo IF e Disk Prefix(x_) Usropn
-
fCvpgm uf a f 114 Disk
-
A*
-
d Rspec Ds
-
d Rrec 112
-
A*
-
d @File s 10
-
d @Length s 5
-
d @Dem s 1
-
d @Char5 s 5
-
d @Char2 s 2
-
d @Cvfield s LIKE(x_Cvfield)
-
A*
-
A* output the first d spec record
-
c Eval %Subst(Rrec:18:1) = ‘d’
-
c Eval %Subst(Rrec:20:18) = ‘Key S ‘
-
c Eval %Subst(Rrec:50:2) = ‘10′
-
c Except Drecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A* output the first d spec record
-
c Eval %Subst(Rrec:20:18) = ‘FlatDs Ds’
-
c Except Drecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
A* open the file AND output the rest of the d spec
-
c Open Cvfileo
-
c DoU %Eof(Cvfileo)
-
c READ Cvfileo
-
c IF NOT %Eof(Cvfileo)
-
A*
-
c IF x_Cvtype = ‘A’
-
c Eval %Subst(Rrec:51:13) = ‘1a Inz(’‘"’‘)’
-
c Except Drecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
c EndIf
-
A* IF there IS a decimal then increase the length BY 2
-
A* this IS TO allow FOR the decimal IN the flat file
-
A* AND FOR the sign
-
c IF x_Cvdec > *Zeros
-
c Eval x_Cvlength = x_Cvlength + 2
-
c** Eval %Subst(Rrec:56:9) = ‘Inz ‘
-
c EndIf
-
A* the FIELD name IN the program can NOT be the same
-
A* AS the file name.
-
c IF x_Cvfield = x_Cvformat
-
c Eval x_Cvfield = ‘xx ‘
-
c EndIf
-
A*
-
c Move x_Cvlength @Char5
-
c Eval %Subst(Rrec:19:18) = x_Cvfield
-
c Eval %Subst(Rrec:47:5) = @Char5
-
c* Eval %Subst(Rrec:52:1) = x_Cvtype
-
c Eval %Subst(Rrec:52:1) = ‘a’
-
*
-
c* IF x_Cvtype = ‘S’
-
c* Move x_Cvdec @Char2
-
c* Eval %Subst(Rrec:53:2) = @Char2
-
c* Else
-
c Eval %Subst(Rrec:53:2) = ‘ ‘
-
c* EndIf
-
A*
-
c Except Drecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c IF x_Cvtype = ‘A’
-
c Eval %Subst(Rrec:51:13) = ‘1a Inz(’‘"’‘)’
-
c Except Drecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
c EndIf
-
A* SET the delimiter
-
c Eval %Subst(Rrec:51:13) = ‘1a Inz(’‘ ‘‘)’
-
c Eval %Subst(Rrec:61:1) = @Dem
-
c Except Drecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c EndIf
-
c EndDo
-
A* close the file FOR the c spce
-
c Close Cvfileo
-
A****************************************************************************
-
A*
-
A* output the first c spec record
-
c Eval %Subst(Rrec:18:1) = ‘c’
-
c Eval %Subst(Rrec:38:3) = ‘DoU’
-
c Eval %Subst(Rrec:48:16) = ‘%Eof( )’
-
c Eval %Subst(Rrec:53:10) = @File
-
A*
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c Eval %Subst(Rrec:38:18) = ‘ ‘
-
c Eval %Subst(Rrec:38:4) = ‘Read’
-
c Eval %Subst(Rrec:48:10) = @File
-
A*
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c Eval %Subst(Rrec:38:18) = ‘ ‘
-
c Eval %Subst(Rrec:38:3) = ‘If ‘
-
c Eval %Subst(Rrec:48:20) = ‘Not %Eof( )’
-
c Eval %Subst(Rrec:57:10) = @File
-
A*
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
A* open the file AND output the rest of the c specs
-
c Open Cvfileo
-
c DoU %Eof(Cvfileo)
-
c READ Cvfileo
-
c IF NOT %Eof(Cvfileo)
-
A* save FIELD name
-
c Eval @Cvfield = x_Cvfield
-
A* the FIELD name IN the program can NOT be the same
-
A* AS the file name.
-
c IF x_Cvfield = x_Cvfname
-
c Eval x_Cvfield = ‘xx ‘
-
c EndIf
-
A*
-
A* SET up the KEY AND the chain TO CHECK FOR decimals
-
c IF x_Cvdec > *Zeros
-
A*
-
c Eval %Subst(Rrec:38:6) = ‘Clear ‘
-
c Eval %Subst(Rrec:62:10) = ‘Key ’
-
c Except Crecadd
-
c Eval %Subst(Rrec:38:6) = ‘MoveL ‘
-
c Eval %Subst(Rrec:48:1) = ””
-
c Eval %Subst(Rrec:49:10) = %subst(x_Cvfield:1:10)
-
c Eval %Subst(Rrec:59:1) = ””
-
c Eval %Subst(Rrec:62:10) = ‘Key ’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
A* do the chain
-
c Eval %Subst(Rrec:24:10) = ‘Key ’
-
c Eval %Subst(Rrec:38:6) = ‘Chain ‘
-
c Eval %Subst(Rrec:48:7) = ‘Cvfileo’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
c Eval %Subst(Rrec:38:6) = ‘If ‘
-
c Eval %Subst(Rrec:48:17) = ‘Z_Cvdec <> *Zeros’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
c Eval %Subst(Rrec:38:6) = ‘Eval ‘
-
c*************** Eval %Subst(Rrec:48:2) = ‘x_’
-
c Eval %Subst(Rrec:48:10) = x_Cvfield
-
c Eval %Subst(Rrec:60:9) = ‘= %Editc(’
-
c Eval %Subst(Rrec:69:2) = ‘x_’
-
c Eval %Subst(Rrec:71:10) = x_Cvfield
-
c Eval %Subst(Rrec:81:5) = ‘:’‘P’‘)’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
c Eval %Subst(Rrec:38:6) = ‘Else ‘
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c EndIf
-
A*
-
c Eval %Subst(Rrec:38:6) = ‘Move ‘
-
c Eval %Subst(Rrec:48:2) = ‘x_’
-
c Eval %Subst(Rrec:50:10) = @Cvfield
-
c Eval %Subst(Rrec:62:10) = x_Cvfield
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c IF x_Cvdec > *Zeros
-
A*
-
c Eval %Subst(Rrec:38:6) = ‘EndIf ‘
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
c EndIf
-
A*
-
c EndIf
-
c EndDo
-
A* close the file
-
c Close Cvfileo
-
A*
-
c Eval %Subst(Rrec:38:6) = ‘Except’
-
c Eval %Subst(Rrec:48:7) = ‘Flatout’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c Eval %Subst(Rrec:38:5) = ‘EndIf’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c Eval %Subst(Rrec:38:5) = ‘EndDo’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c Eval %Subst(Rrec:38:4) = ‘Eval’
-
c Eval %Subst(Rrec:48:11) = ‘*Inlr = *On’
-
c Except Crecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A****************************************************************************
-
A*
-
A* output the o specs
-
c Eval %Subst(Rrec:18:1) = ‘o’
-
c Eval %Subst(Rrec:19:10) = ‘Cvflat ‘
-
c Eval %Subst(Rrec:29:4) = ‘eadd’
-
c Eval %Subst(Rrec:42:7) = ‘Flatout’
-
c Except Orecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c Eval %Subst(Rrec:19:10) = ‘ ‘
-
c Eval %Subst(Rrec:29:4) = ‘ ‘
-
c Eval %Subst(Rrec:42:7) = ‘Flatds ‘
-
c Except Orecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c Eval *Inlr = *ON
-
A*******************************************************
-
A* first time processing *
-
A*******************************************************
-
c *Inzsr Begsr
-
-
c *Entry Plist
-
c Parm @File
-
c Parm @Length
-
c Parm @Dem
-
A*
-
A* output the h spec record
-
c Eval %Subst(Rrec:18:1) = ‘h’
-
c* Eval %Subst(Rrec:20:29) =
-
c* ‘Option(*Srcstmt : *Nodebugio)’
-
c Except Hrecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
A* open the file AND CHECK FOR formant name
-
c Open Cvfileo
-
c READ Cvfileo
-
c Close Cvfileo
-
A* output the f spec record
-
c Eval %Subst(Rrec:18:1) = ‘f’
-
c Eval %Subst(Rrec:19:10) = @File
-
c Eval %Subst(Rrec:29:6) = ‘if e’
-
c Eval %Subst(Rrec:48:4) = ‘Disk’
-
c Eval %Subst(Rrec:56:10) = ‘Prefix(x_)’
-
c Except Frecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
c IF x_Cvfname = x_Cvformat
-
c Eval %Subst(Rrec:56:7) = ‘Rename(’
-
c Eval %Subst(Rrec:63:10) = x_Cvformat
-
c Eval %Subst(Rrec:73:3) = ‘:x)’
-
c Except Frecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
c EndIf
-
A*
-
A* output the f spec record
-
c Eval %Subst(Rrec:18:1) = ‘f’
-
c Eval %Subst(Rrec:19:10) = ‘Cvflat ‘
-
c Eval %Subst(Rrec:29:6) = ‘uf a f’
-
c Eval %Subst(Rrec:35:5) = @Length
-
c Eval %Subst(Rrec:48:4) = ‘Disk’
-
c Except Frecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A* output the last f spec record
-
c Eval %Subst(Rrec:18:1) = ‘f’
-
c Eval %Subst(Rrec:19:10) = ‘Cvfileo ’
-
c Eval %Subst(Rrec:29:6) = ‘if e’
-
c Eval %Subst(Rrec:46:6) = ‘k Disk’
-
c Eval %Subst(Rrec:56:10) = ‘Prefix(z_)’
-
c Except Frecadd
-
c Eval %Subst(Rrec:19:93) = *Blanks
-
A*
-
A*
-
c #Inzsr Endsr
-
A*
-
oCvpgm eadd Hrecadd
-
o Rrec
-
A*
-
o eadd Frecadd
-
o Rrec
-
A*
-
o eadd Drecadd
-
o Rrec
-
A*
-
o eadd Crecadd
-
o Rrec
-
A*
-
o eadd Orecadd
-
o Rrec
-
A* FILE NAME CVFILEO
-
A* CONVERSION WORK FILE
-
A*
-
A R CVREC
-
A*
-
A CVFNAME 10A TEXT(‘FILE NAME’)
-
A CVFIELD 10A TEXT(‘FIELD NAME’)
-
A CVTYPE 1A TEXT(‘FIELD TYPE’)
-
A CVSTART 5S 0 TEXT(‘FIELD START’)
-
A CVEND 5S 0 TEXT(‘FIELD END ‘)
-
A CVLENGTH 5S 0 TEXT(‘FIELD LENGTH’)
-
A CVDEC 2S 0 TEXT(‘FIELD DEC ’)
-
A CVFORMAT 10A TEXT(‘FIELD FORMAT’)
-
A*
-
A K CVFIELD
Possible Related Links
Tip: Converting String to Number in QUERY/400PHP on iSeriesPost a Classified Ad
There are times when you read about a topic and want to read more about it. Now you can on our website. Right below this post, you should be able to see Possible Related Posts and then a list of articles that may be related to the current article. You may not always find related articles, but it is a nice feature that you will hopefully find useful.
Possible Related Links
MMUG Meeting on June 15th, 2006iSeries Users Group Forums are now openOpen Source iSeries Toolkit
MCPress is having a pretty good sale on their iSeries books.. lots of them are $10 or $15. These prices are good only until midnight, June 30, 2006 and while supply lasts. So head on there and grab a few. Just beware, some of the books may be pertaining to the older versions of the software. For example: the current IBM Websphere version is 6, but you may find the book for version 4 at sale price.
http://www.mc-store.com/year-end-sale-10.html
Possible Related Links
Current For Sale ItemsFor SaleFOR SALE: IBM iSeries Model 825
Please check the event details on the events page.
Possible Related Links
New Events PageMMUG Meeting on June 15th, 2006Post a Classified Ad
older posts »