|
Adrienne,
It looks as if you are trying to pass a varying number of "value pairs" as
parameters in one parm. One way to solve the "garbage" included from the
command line processor would be to have a "delimiting" string in your input
parm. For example if you defined /** as the "end of parm" string the COBOL
program would then know when to stop processing your "value pairs". Where
"/**" could be any string you can reasonably expect to never be included in
your value pairs.
Sample Code
* * *
*---------------------------------------------------------------*
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTPGM3.
AUTHOR. DAVID SCOTT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
DATA DIVISION.
FILE SECTION.
*---------------------------------------------------------------*
WORKING-STORAGE SECTION.
01 VAR.
05 VAR-LEN PIC S9(03) COMP-3.
05 VAR-PARM PIC X(1000).
*---------------------------------------------------------------*
LINKAGE SECTION.
01 IN-PARM PIC X(1000).
PROCEDURE DIVISION USING IN-PARM.
*---------------------------------------------------------------*
000-MAIN.
MOVE ZERO TO VAR-LEN
MOVE SPACES TO VAR-PARM
INSPECT IN-PARM
TALLYING VAR-LEN FOR CHARACTERS BEFORE "/**"
IF VAR-LEN > ZERO
MOVE IN-PARM(1:VAR-LEN) TO VAR-PARM
DISPLAY "IN-PARM..: " IN-PARM(1:100)
DISPLAY "VAR-PARM.: " VAR-PARM(1:100)
DISPLAY "VAR-LEN..: " VAR-LEN
ELSE
DISPLAY "MISSING PARAMETER DELIMITER"
END-IF
GOBACK.
000-EXIT.
EXIT.
*---------------------------------------------------------------*
Example:
CALL TESTPGM3 PARM('DATE-FR=08/03/06 DATE-TO=08/15/06/**')
Output:
IN-PARM..: DATE-FR=08/03/06 DATE-TO=08/15/06/**
VAR-PARM.: DATE-FR=08/03/06 DATE-TO=08/15/06
VAR-LEN..: 033
Hope this helps....
David Scott
SmartWeb Technology, Inc.
dlscott@xxxxxxxxxxxxxx
(Voice) 407-671-2277
(Cell) 407-310-8106
(Fax) 407-264-6877
-----Original Message-----
From: cobol400-l-bounces@xxxxxxxxxxxx
[mailto:cobol400-l-bounces@xxxxxxxxxxxx] On Behalf Of Adrienne McConnon
Sent: Friday, August 18, 2006 1:14 PM
To: cobol400-l@xxxxxxxxxxxx
Subject: Re: [COBOL400-L] COBOL400-L Digest, Vol 4, Issue 80
Terry,
Thanks - but I call the program from the command line - I literally type
in:
call z13work/jstatus parm('DATE-FR=08/03/06 DATE-TO=08/15/06')
Is that the problem? I am trying to pass it 1 parameter within quotes which
I programmatically parse into sepatate components. I do this because I want
to allow anywhere from 1 to 25 parms to be specified in any order.
Thanks,
Adrienne
-----Original Message-----
From: cobol400-l-bounces@xxxxxxxxxxxx
[mailto:cobol400-l-bounces@xxxxxxxxxxxx] On Behalf Of
cobol400-l-request@xxxxxxxxxxxx
Sent: Friday, August 18, 2006 1:00 PM
To: cobol400-l@xxxxxxxxxxxx
Subject: COBOL400-L Digest, Vol 4, Issue 80
Send COBOL400-L mailing list submissions to
cobol400-l@xxxxxxxxxxxx
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.midrange.com/mailman/listinfo/cobol400-l
or, via email, send a message with subject or body 'help' to
cobol400-l-request@xxxxxxxxxxxx
You can reach the person managing the list at
cobol400-l-owner@xxxxxxxxxxxx
When replying, please edit your Subject line so it is more specific than
"Re: Contents of COBOL400-L digest..."
Today's Topics:
1. iSeries COBOL Linkage section/PARM problem (Adrienne McConnon)
2. Re: iSeries COBOL Linkage section/PARM problem (Winchester Terry)
3. Re: iSeries COBOL Linkage section/PARM problem (Jon Paris)
----------------------------------------------------------------------
message: 1
date: Fri, 18 Aug 2006 08:10:46 -0500
from: "Adrienne McConnon" <Adrienne.McConnon@xxxxxxxxxxxx>
subject: [COBOL400-L] iSeries COBOL Linkage section/PARM problem
Hello all!
I am experiencing a problem passing a parameter to a COBOL program. It
appears that the linkage buffer not only contains the parm I specified,
but 'STATUS 00' as well. Below is a section of muy code and then the
DSPJOBLOG displays. I do not understand why that 'STATUS' appears after the
08/15/06 display below. What am I missing?
Thanks,
Adrienne McConnon
LINKAGE SECTION.
01 L-INPUT-PARM PIC X(1000).
PROCEDURE DIVISION USING L-INPUT-PARM.
0000-BEGIN.
DISPLAY '0000-BEGIN'.
DISPLAY 'L-INPUT-PARM=', L-INPUT-PARM.
PERFORM I000-INIT-RTN THRU I000-END.
PERFORM 0100-PROCESS-PARM THRU
0100-EXIT.
GO TO 9999-EOJ-RTN.
************************************************************************
*****
Display All Messages
System:
MSSAS400
Job . . : QPADEV000C User . . : AMCCONNO Number . . . :
242854
Member TSTATUS in file ZZB/CBLLE is in use.
Error found on STRSEU command.
4 > DSPMSG
4 > WRKSPLF
6 > DSPMSG
6 > call z13work/jstatus parm('DATE-FR=08/03/06 DATE-TO=08/15/06')
Object PDSPLOG in Z13WORK type *FILE deleted.
File PDSPLOG created in library Z13WORK.
Member PDSPLOG added to file PDSPLOG in Z13WORK.
Object WSTATUS in Z13WORK type *FILE deleted.
File WSTATUS created in library Z13WORK.
Member WSTATUS added to file WSTATUS in Z13WORK.
0000-BEGIN
L-INPUT-PARM=DATE-FR=08/03/06 DATE-TO=08/15/06 STATUS
More...
0100-PROCESS-PARM
LPARM-IN-DATA-REC=DATE-FR=08/03/06 DATE-TO=08/15/06 STATUS
00
PARM-IN-DATA-REC-TABLE=DATE-FR=08/03/06 DATE-TO=08/15/
06 STATUS
00
PARM-IN-DATA (1)=DATE-FR=08/03/06
PARM-IN-DATA (2)=DATE-TO=08/15/06
PARM-IN-DATA (3)=STATUS
PARM-IN-DATA (4)=
PARM-IN-DATA (5)=
PARM-IN-DATA (6)=
PARM-IN-DATA (7)=
More...
Press Enter to continue.
F3=Exit F5=Refresh F12=Cancel F17=Top F18=Bottom
------------------------------
message: 2
date: Fri, 18 Aug 2006 10:15:27 -0400
from: "Winchester Terry" <terry.winchester@xxxxxxxxxxxxxxx>
subject: Re: [COBOL400-L] iSeries COBOL Linkage section/PARM problem
Adrienne,
It appears that you linkage area is getting corrupted.
Check the calling program (CL, RPG, etc.) and ensure that it is using the
same number of bytes for the parameter -AND- that the parameter area is
being initialized properly before being populated with data prior to the
call to your program.
Terry Winchester
Programmer/Analyst
________________________________
The Raymond Corporation
terry.winchester@xxxxxxxxxxxxxxx
-----Original Message----- From: cobol400-l-bounces+terry.winchester=raymondcorp.com@xxxxxxxxxx om [mailto:cobol400-l-bounces+terry.winchester=raymondcorp.com@mi drange.com] On Behalf Of Adrienne McConnon Sent: Friday, August 18, 2006 9:11 AM To: cobol400-l@xxxxxxxxxxxx Subject: [COBOL400-L] iSeries COBOL Linkage section/PARM problem Hello all! I am experiencing a problem passing a parameter to a COBOL program. It appears that the linkage buffer not only contains the parm I specified, but 'STATUS 00' as well. Below is a section of muy code and then the DSPJOBLOG displays. I do not understand why that 'STATUS' appears after the 08/15/06 display below. What am I missing? Thanks, Adrienne McConnon LINKAGE SECTION. 01 L-INPUT-PARM PIC X(1000). PROCEDURE DIVISION USING L-INPUT-PARM. 0000-BEGIN. DISPLAY '0000-BEGIN'. DISPLAY 'L-INPUT-PARM=', L-INPUT-PARM. PERFORM I000-INIT-RTN THRU I000-END. PERFORM 0100-PROCESS-PARM THRU 0100-EXIT. GO TO 9999-EOJ-RTN. ************************************************************** ********** ***** Display All Messages System: MSSAS400 Job . . : QPADEV000C User . . : AMCCONNO Number . . . : 242854 Member TSTATUS in file ZZB/CBLLE is in use. Error found on STRSEU command. 4 > DSPMSG 4 > WRKSPLF 6 > DSPMSG 6 > call z13work/jstatus parm('DATE-FR=08/03/06 DATE-TO=08/15/06') Object PDSPLOG in Z13WORK type *FILE deleted. File PDSPLOG created in library Z13WORK. Member PDSPLOG added to file PDSPLOG in Z13WORK. Object WSTATUS in Z13WORK type *FILE deleted. File WSTATUS created in library Z13WORK. Member WSTATUS added to file WSTATUS in Z13WORK. 0000-BEGIN L-INPUT-PARM=DATE-FR=08/03/06 DATE-TO=08/15/06 STATUS More... 0100-PROCESS-PARM LPARM-IN-DATA-REC=DATE-FR=08/03/06 DATE-TO=08/15/06 STATUS 00 PARM-IN-DATA-REC-TABLE=DATE-FR=08/03/06 DATE-TO=08/15/ 06 STATUS 00 PARM-IN-DATA (1)=DATE-FR=08/03/06 PARM-IN-DATA (2)=DATE-TO=08/15/06 PARM-IN-DATA (3)=STATUS PARM-IN-DATA (4)= PARM-IN-DATA (5)= PARM-IN-DATA (6)= PARM-IN-DATA (7)= More... Press Enter to continue. F3=Exit F5=Refresh F12=Cancel F17=Top F18=Bottom
Confidentiality Notice: The preceding e-mail message (including any attachments) contains information that may be confidential, protected by applicable legal privileges, or constitute non-public information. It is intended to be conveyed only to the designated recipient(s). If you are not an intended recipient of this message, please notify the sender by replying to this message and then delete it from your system. Use, dissemination, distribution or reproduction of this message by unintended recipients is not authorized and may be unlawful. ------------------------------ message: 3 date: Fri, 18 Aug 2006 11:10:36 -0400 from: "Jon Paris" <Jon.Paris@xxxxxxxxxxxxxx> subject: Re: [COBOL400-L] iSeries COBOL Linkage section/PARM problem In simple terms your problem is that you called the program from the command line and the system had to make an assumption about how big to make the temporary storage that will hold the parm value. Your parm of "DATE-FR=08/03/06 DATE-TO=08/15/06' is (if I counted correctly) 33 characters long - therefore that is how much storage is assigned. In your program you treat the parm as being 1,000 bytes - so you're going to see garbage in the storage beyond 33 bytes. If you really want to call the program directly from the command line, then to ensure the length you require you will need to use command to make the call. Susan and I just published a piece on this called "The Mystery of Command Line Parameters" on this subject if you want more details. It is not yet available on the magazine's web site, but if you e-mail me privately I will send you a copy. Jon Paris Partner400 www.Partner400.com ------------------------------ -- This is the COBOL Programming on the iSeries/AS400 (COBOL400-L) digest list To post a message email: COBOL400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/cobol400-l or email: COBOL400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/cobol400-l. End of COBOL400-L Digest, Vol 4, Issue 80 *****************************************
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.