|
Your's: QUSLSPL(YourSpace:'SPLF0100' : '*ALL' : 'QEZJOBLOG *LIBL
':'*ALL':'*ALL')
Mine: QUSLSPL(MYSPACE :'SPLF0300' : SdUser : '*ALL'
:'*ALL':'*ALL':dsEC);
I was just checking your call with my call from RPGLE. I see one difference
being that you didn't use that last parm. I'm not an expert. But is that
last one required?
Below is my program, if you'd like to look at it. It works. It lists all
the spoolfiles created by my userid. This is my own special program, so
there's some stuff in it that really isn't needed and it's not really all
that clean, but I think that you could follow it.
H Option(*SrcStmt: *NoDebugIO) DftActGrp(*No)
H Bnddir('QC2LE')
FBEFDS000@@CF E WORKSTN INDDS(Indicators)
F INFDS(Information)
F SFILE(S1:S1N)
D GoCmd PR 10i 0 ExtProc('system')
D CmdString * Value
D Options(*String)
D NullString C -1
D Success C 0
D ReturnCode S 10i 0
D PgmInfo SDS
D SdProgram 1 10
D @Parms 37 39 0
D @MsgID 40 46
D @JobName 244 253
D SdUser 254 263
D QUSLSPL PR extpgm('QUSLSPL')
* required parameters
D UsrSpc 20A const
D Format 8A const
D UserName 10A const
D QualOutQ 20A const
D FormType 10A const
D UserData 10A const
* optional group 1:
D ErrorCode 32766A options(*nopass: *varsize)
* optional group 2:
D QualJob 26A options(*nopass) const
D FieldKeys 10I 0 options(*nopass: *varsize)
D dim(9999)
D NumFields 10I 0 options(*nopass) const
* optional group 3:
D AuxStgPool 10I 0 options(*nopass) const
* optional group 4:
D JobSysName 8A options(*nopass) const
D StartCrtDate 7A options(*nopass) const
D StartCrtTime 6A options(*nopass) const
D EndCrtDate 7A options(*nopass) const
D EndCrtTime 6A options(*nopass) const
D QUSCRTUS PR extpgm('QUSCRTUS')
D UsrSpc 20A const
D ExtAttr 10A const
D InitialSize 10I 0 const
D InitialVal 1A const
D PublicAuth 10A const
D Text 50A const
D Replace 10A const
D ErrorCode 32766A options(*nopass: *varsize)
D QUSPTRUS PR extpgm('QUSPTRUS')
D UsrSpc 20A const
D Pointer *
*
D QUSDLTUS PR extpgm('QUSDLTUS')
D UsrSpc 20A const
D ErrorCode 32766A options(*varsize)
*
D p_UsrSpc s *
D dsLH DS based(p_UsrSpc)
D qualified
D Filler1 103A
D Status 1A
D Filler2 12A
D HdrOffset 10I 0
D HdrSize 10I 0
D ListOffset 10I 0
D ListSize 10I 0
D NumEntries 10I 0
D EntrySize 10I 0
D p_Entry s *
D dsSF DS based(p_Entry)
D qualified
D JobName 10A
D UserName 10A
D JobNumber 6A
D SplfName 10A
D SplfNbr 10I 0
D SplfStatus 10I 0
D OpenDate 7A
D OpenTime 6A
D Schedule 1A
D SysName 10A
D UserData 10A
D FormType 10A
D OutQueue 10A
D OutQueueLib 10A
D AuxPool 10I 0
D SplfSize 10I 0
D SizeMult 10I 0
D TotalPages 10I 0
D CopiesLeft 10I 0
D Priority 1A
D Reserved 3A
D dsEC DS qualified
D BytesProvided 10I 0 inz(%size(dsEC))
D BytesAvail 10I 0 inz(0)
D MessageID 7A
D Reserved 1A
D MessageData 240A
* constants
* ~~~~~~~~~
D MYSPACE c const('SPLFLIST QTEMP ')
D Low c
const('abcdefghijklmnopqrstuvwxyz')
D Up c
const('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
*
* Field Definitions.
* ~~~~~~~~~~~~~~~~~~
D OutQName ds
D OutQ 10A inz(*blanks)
D OutQLib 10A inz(*blanks)
*
D size s 10I 0
D S1N s 8 0
D iX s 8 0
D pos s 4 0 inz(0)
D pos1 s 4 0 inz(0)
D CmdString s 12500 inz(*blanks)
D CmdLength s 15 5 inz(0)
*
D IFSPDFName s 2500 inz(*blanks)
D IFSHTMName s 2500 inz(*blanks)
D JobInfo s 256 inz(*blanks)
D IFSFName s 256 inz(*blanks)
D FTPFName s 256 inz(*blanks)
D wSPLFName s 10 inz(*blanks)
D wJobName s 10 inz(*blanks)
D wUserData s 10 inz(*blanks)
D EMLSubject s 256 inz(*blanks)
D EMLMessage s 15000 inz(*blanks)
D EMLAddress s 256 inz(*blanks)
D TodayDoW s 3 inz(*blanks)
D SPLFDate s d datfmt(*iso)
D TodayDate s d datfmt(*iso)
D YesterDayDate s d datfmt(*iso)
D LastSaturday s d datfmt(*iso)
D LastFriDay s d datfmt(*iso)
D cYMDDate s 6 inz(*blanks)
*
D ProgramName s 10 inz(*blanks)
D FormName s 10 inz(*blanks)
D View1 DS 50
D V1USRD 10 OverLay(View1:01)
D V1STAT 4 OverLay(View1:13)
D V1PAGE 5 OverLay(View1:19)
D V1COPY 6 OverLay(View1:27)
D V1TYPE 10 OverLay(View1:35)
D V1PTY 3 OverLay(View1:47)
D View2 DS 50
D V1FNUM 7 OverLay(View2:01)
D V1JOB 10 OverLay(View2:11)
D V1JOB# 6 OverLay(View2:23)
D V1DATE 8 OverLay(View2:31)
D V1TIME 8 OverLay(View2:41)
D Information DS
D KeyPressed 369 369
D Cursor 370 371B 0
D SdScreen 83 92
D Indicators DS
D AnyErrors N OverLay(Indicators:99)
D LastPage N OverLay(Indicators:98)
D ClearSub N OverLay(Indicators:88)
D ViewInd N OverLay(Indicators:55)
D ViewInd2 N OverLay(Indicators:56)
D ShowKey3 N OverLay(Indicators:53)
D ShowKey2 N OverLay(Indicators:52)
D ShowKey1 N OverLay(Indicators:51)
D InvalidOptn N OverLay(Indicators:11)
Ì*¹Function Key Hex Values
D ProcessKey C x'31'
D ExitKey C x'33'
D PromptKey C x'34'
D RefreshKey C x'35'
D ViewKey C x'3B'
D PreviousKey C x'3C'
D TopKey C x'B5'
D BottomKey C x'B6'
D WriterKey C x'B8'
D DescKey C x'B9'
D PrinterKey C x'BA'
D MoreKey C x'BC'
D EnterKey C x'F1'
Ì*¹Other Constants
D False C '0'
D True C '1'
D F24Cnt S 1 0
D S1Max S Like(SFLRRN)
D SvRRN S Like(SFLRRN)
D Cmd S 3000A
D Len S 15P 5
Ì*¹External Program Calls
D QCMDEXC PR ExtPgm('QCMDEXC')
D Cmd 3000A
D Len 15P 5
D Error 3A
D CmdError S 3A
D SvRCD# S Like(SFRCD#)
C *ENTRY PLIST
C PARM USER 10
/Free
If User <> '*CURRENT';
SdUser = User;
EndIf;
LastPage = *On;
ViewInd = *On;
ViewInd2 = *Off;
ExSr LoadS1#;
SFLRRN = 0;
ShowKey1 = *On;
SvRCD# = 1;
DoW KeyPressed <> ExitKey;
//¹By default we want to display first page of subfile
SFRCD# = 1;
If SFLRRN > S1Max;
SFLRRN = S1Max;
EndIf;
//¹However if user was on another page, display that one.
If SFLRRN > 9;
SFRCD# = (%Int(SFLRRN / 10) * 9) + 1;
// SFRCD# = SFLRRN;
EndIf;
CmdLine = *Blanks;
Write Ovr;
Write D1;
// DoW '1';
Monitor;
ExFmt C1;
// Leave; //¹If no errors, then leave this loop.
On-Error *All;
SFRCD# = 1;
SFLRRN = 1;
ItEr;
EndMon;
// EndDo;
Read D1;
Clear Msg;
Reset AnyErrors;
If KeyPressed = ExitKey Or KeyPressed = PreviousKey;
Leave;
ElseIf KeyPressed = PromptKey; //¹F4
ExSr F4Pressed#;
ElseIf KeyPressed = RefreshKey; //¹F5
ExSr LoadS1#;
ElseIf KeyPressed = ViewKey; //¹F11
ViewInd = not ViewInd;
ViewInd2 = not ViewInd2;
ExSr LoadS1#;
ElseIf KeyPressed = TopKey; //¹F17
SFLRRN = 1;
ElseIf KeyPressed = BottomKey; //¹F18
SFLRRN = S1Max;
ElseIf KeyPressed = MoreKey; //¹F24
ExSr F24Pressed#;
ElseIf Keypressed = EnterKey; //¹Enter
ExSr EnterPressed#;
EndIf;
EndDo;
*InLr = *On;
Return;
//ã-----------------------------------------------------------------
//ã-----------------------------------------------------------------
BegSr LoadS1#;
ClearSub = *On;
Write C1;
ClearSub = *Off;
//¹set this to zero to let OS/400 handle errors
dsEC.BytesProvided = 0;
//¹Make space for (approx) 1000 spooled files to be listed
size = %size(dsLH) + 512 + (%size(dsSF) * 1000);
//¹Create a user space
//¹List spooled files to the user space
//¹Get a pointer to the returned user space
//¹Create a user space
QUSCRTUS(MYSPACE: 'USRSPC': size: x'00': '*ALL':
'Temp User Space for QUSLSPL API': '*YES': dsEC);
//¹List spooled files to the user space
QUSLSPL(MYSPACE:'SPLF0300':SdUser:'*ALL':'*ALL':'*ALL':dsEC);
//¹Get a pointer to the returned user space
QUSPTRUS(MYSPACE:p_UsrSpc);
//¹Loop through list, for each spooled file, display the
//¹Status: 1=RDY , 2=OPN, 3=CLO, 4=SAV, 5=WRT, 6=HLD,
//¹7=MSGW, 8=PND, 9=PRT,10=FIN,11=SND,12=DFR
p_Entry = p_UsrSpc + dsLH.ListOffset;
S1N = 0;
S1Max = 0;
iX = 1;
DoW iX <= dsLH.NumEntries;
S1Optn = ' ';
SfUser = dsSF.UserName;
SfFile = dsSF.SplfName;
//¹View one
V1USRD = dsSF.UserData;
SFUSRD = dsSF.UserData;
EvalR V1PAGE = %EditC(dsSF.TotalPages:'Z');
EvalR SFPAGE = %EditC(dsSF.TotalPages:'Z');
EvalR V1COPY = %EditC(dsSF.CopiesLeft:'Z');
EvalR SFCOPY = %EditC(dsSF.CopiesLeft:'Z');
V1TYPE = dsSF.FormType;
SFTYPE = dsSF.FormType;
V1PTY = dsSF.Priority;
SFPTY = dsSF.Priority;
//¹View two
EvalR V1FNUM = %EditC(dsSF.SplfNbr:'Z');
EvalR SFFNUM = %EditC(dsSF.SplfNbr:'Z');
V1JOB = dsSF.JobName;
SFJOB = dsSF.JobName;
V1JOB# = dsSF.JobNumber;
SFJOB# = dsSF.JobNumber;
V1DATE = %Char(%date(dsSF.OpenDate:*Cymd0):*MDY);
SFDATE = %Char(%date(dsSF.OpenDate:*Cymd0):*MDY);
V1TIME = %SubSt(dsSF.OpenTime:1:2) + ':' +
%SubSt(dsSF.OpenTime:3:2) + ':' +
%SubSt(dsSF.OpenTime:5:2);
SFTIME = V1Time;
//¹View one, status
If dsSF.SplfStatus = 1;
V1Stat = 'RDY';
ElseIf dsSF.SplfStatus = 2;
V1Stat = 'OPN';
ElseIf dsSF.SplfStatus = 3;
V1Stat = 'CLO';
ElseIf dsSF.SplfStatus = 4;
V1Stat = 'SAV';
ElseIf dsSF.SplfStatus = 5;
V1Stat = 'WRT';
ElseIf dsSF.SplfStatus = 6;
V1Stat = 'HLD';
ElseIf dsSF.SplfStatus = 7;
V1Stat = 'MSGW';
ElseIf dsSF.SplfStatus = 8;
V1Stat = 'PND';
ElseIf dsSF.SplfStatus = 9;
V1Stat = 'PRT';
ElseIf dsSF.SplfStatus = 10;
V1Stat = 'FIN';
ElseIf dsSF.SplfStatus = 11;
V1Stat = 'SND';
ElseIf dsSF.SplfStatus = 12;
V1Stat = 'DFR';
EndIf;
SFStat = V1Stat;
If ViewInd = *On;
SFALTV = View1;
ElseIf ViewInd2 = *On;
SFALTV = View2;
EndIf;
If dsSF.OutQueueLib <> 'AUDLIB' And
dsSF.OutQueue <> 'DEADQ' And
dsSF.OutQueue <> 'SPLIT' And
dsSF.OutQueue <> 'NOTES' And
dsSF.SplfName <> 'QPRINT' And
dsSF.SplfName <> 'QPJOBLOG' And
dsSF.OutQueue <> 'NOTESX';
S1Max += 1;
S1N += 1;
InvalidOptn = *Off;
Write S1;
EndIf;
p_Entry = p_Entry + dsLH.EntrySize;
iX += 1;
EndDo;
If S1N = 0;
S1N = 1;
SFALTV = 'No Spoolfiles To Display';
Clear SfUser;
Clear SfFile;
Write S1;
S1N = 0;
EndIf;
//¹Delete user space
QUSDLTUS(MYSPACE: dsEC);
EndSr;
//ã-----------------------------------------------------------------
//ã-----------------------------------------------------------------
BegSr F4Pressed#;
//¹F4 and Enter perform same function. well,4 our purpose it
does
ExSr EnterPressed#;
EndSr;
//ã-----------------------------------------------------------------
//ã-----------------------------------------------------------------
BegSr F22Pressed#;
//¹Work with all printers.
Cmd = 'WRKWTR WTR(*PRT)';
Len = %Len(%Trim(Cmd));
GoCmd(Cmd);
EndSr;
//ã-----------------------------------------------------------------
//ã-----------------------------------------------------------------
BegSr F24Pressed#;
ShowKey1 = *Off;
ShowKey2 = *Off;
ShowKey3 = *Off;
F24Cnt += 1;
If F24Cnt = 1;
ShowKey1 = *On;
ElseIf F24Cnt = 2;
ShowKey2 = *On;
ElseIf F24Cnt = 3;
ShowKey3 = *On;
F24Cnt = 0;
EndIf;
EndSr;
//ã-----------------------------------------------------------------
//ã-----------------------------------------------------------------
BegSr EnterPressed#;
*In01 = *Off;
DoW '1';
ReadC S1;
If %EoF(BEFDS000@@);
Leave;
EndIf;
If S1N >= S1Max;
SFLRRN = S1Max - 1;
Else;
SFLRRN = S1N;
EndIf;
If S1Optn = ' ';
InvalidOptn = *Off;
Update S1;
ItEr;
EndIf;
*In01 = *On;
//¹Verify user has authority to spoolfile.
//¹Users can view files in thier own department or those
//¹that belong to the operator.
// If %SubSt(SdUser:1:3) <> %SubSt(SFUser:1:3) And
// SFUser <> 'OPERATOR';
// AnyErrors = *On;
// Msg = 'ÏUSER DOES NOT HAVE AUTHORITY TO THIS SPOOLFILE·';
// InvalidOptn = *On;
// Update S1;
// ItEr;
// EndIf;
If KeyPressed = PromptKey And
S1Optn <> '1' And S1Optn <> '2' And S1Optn <> '3' And
S1Optn <> '7';
AnyErrors = *On;
InvalidOptn = *On;
Msg = 'Option ' + S1Optn + ' cannot be prompted';
Update S1;
ItEr;
EndIf;
Cmd = 'FILE(' + SFFILE + ') ' +
'JOB(' + %Trim(SFJOB#) + '/' +
%Trim(SFUSER) + '/' +
%Trim(SFJOB) + ') ' +
'SPLNBR(' + %Trim(SFFNUM) + ') JOBSYSNAME(*ONLY) ' +
'CRTDATE(' + '''' + SFDATE + '''' + ' ' +
'''' + SFTIME + '''' + ')';
If S1Optn = '1';
Cmd = 'SNDNETSPLF ' + %Trim(Cmd);
If KeyPressed = PromptKey Or
(KeyPressed = EnterKey And CmdLine = *Blanks);
Cmd = 'SNDNETSPLF ?*FILE(' + SFFILE + ') ' +
'?*JOB(' + %Trim(SFJOB#) + '/' +
%Trim(SFUSER) + '/' +
%Trim(SFJOB) + ') ' +
'?*SPLNBR(' + %Trim(SFFNUM) + ') ?*JOBSYSNAME(*ONLY) '
+
'?*CRTDATE(' + '''' + SFDATE + '''' + ' ' +
'''' + SFTIME + '''' + ')';
EndIf;
If CmdLine <> *Blanks;
Cmd = %Trim(Cmd) + ' ' + %Trim(CmdLine);
EndIf;
ElseIf S1Optn = '2';
Cmd = 'CHGSPLFA ' + %Trim(Cmd);
If KeyPressed = PromptKey Or
(KeyPressed = EnterKey And CmdLine = *Blanks);
Cmd = '? CHGSPLFA ?*FILE(' + SFFILE + ') ' +
'?*JOB(' + %Trim(SFJOB#) + '/' +
%Trim(SFUSER) + '/' +
%Trim(SFJOB) + ') ' +
'?*SPLNBR(' + %Trim(SFFNUM) + ') ?*JOBSYSNAME(*ONLY) '
+
'?*CRTDATE(' + '''' + SFDATE + '''' + ' ' +
'''' + SFTIME + '''' + ')';
EndIf;
If CmdLine <> *Blanks;
Cmd = %Trim(Cmd) + ' ' + %Trim(CmdLine);
EndIf;
ElseIf S1Optn = '3';
Cmd = 'HLDSPLF FILE(' + SFFILE + ') ' +
'JOB(' + %Trim(SFJOB#) + '/' +
%Trim(SFUSER) + '/' +
%Trim(SFJOB) + ') ' +
'SPLNBR(' + %Trim(SFFNUM) + ') ' +
'JOBSYSNAME(*ONLY) ' +
'CRTDATE(' + '''' + SFDATE + '''' + ' ' +
'''' + SFTIME + '''' + ')';
If KeyPressed = PromptKey;
Cmd = '? HLDSPLF ?*FILE(' + SFFILE + ') ' +
'?*JOB(' + %Trim(SFJOB#) + '/' +
%Trim(SFUSER) + '/' +
%Trim(SFJOB) + ') ' +
'?*SPLNBR(' + %Trim(SFFNUM) + ') ' +
'?*JOBSYSNAME(*ONLY) ' +
'?*CRTDATE(' + '''' + SFDATE + '''' + ' ' +
'''' + SFTIME + '''' + ')';
EndIf;
If CmdLine <> *Blanks;
Cmd = %Trim(Cmd) + ' ' + %Trim(CmdLine);
EndIf;
ElseIf S1Optn = '7';
Cmd = '? CPYSPLF ?*FILE(' + SFFILE + ') ' +
'?*JOB(' + %Trim(SFJOB#) + '/' +
%Trim(SFUSER) + '/' +
%Trim(SFJOB) + ') ' +
'?*SPLNBR(' + %Trim(SFFNUM) + ') ' +
'?*JOBSYSNAME(*ONLY) ' +
'?*CRTDATE(' + '''' + SFDATE + '''' + ' ' +
'''' + SFTIME + '''' + ')';
If CmdLine <> *Blanks;
Cmd = %Trim(Cmd) + ' ' + %Trim(CmdLine);
EndIf;
ElseIf S1Optn = '4';
Cmd = 'CHGSPLFA ' + %Trim(Cmd) + ' OUTQ(DEADQ)';
ElseIf S1Optn = '5';
Cmd = 'DSPSPLF ' + Cmd;
ElseIf S1Optn = '6';
Cmd = 'RLSSPLF ' + Cmd;
ElseIf S1Optn = '8';
Cmd = 'WRKSPLFA ' + Cmd;
ElseIf S1Optn = '9';
Cmd = 'WRKPRTSTS ' + Cmd;
EndIf;
Len = %Len(%Trim(Cmd));
ReturnCode = GoCmd(Cmd);
Select;
When ReturnCode = Success;
When ReturnCode = NullString;
Other;
AnyErrors = *On;
Msg = %Char(ReturnCode);
//éMsg = 'Operation did not complete due to error';
InvalidOptn = *On;
Update S1;
ItEr;
EndSL;
EndDo;
//¹Monitor program call and display any error messages
If *In01 = *Off And CmdLine = *Blanks;
*InLR = *On;
Return;
ElseIf *In01 = *Off;
Cmd = CmdLine;
ReturnCode = GoCmd(Cmd);
Select;
When ReturnCode = Success;
When ReturnCode = NullString;
Other;
Msg = 'Command Ended In Error';
EndSL;
//Len = %Len(%Trim(Cmd));
//Monitor;
// QCMDEXC(Cmd:Len:CmdError);
//On-Error *Program;
// Msg = 'Command Ended In Error';
//EndMon;
EndIf;
//¹Rebuild file and subfile
If not AnyErrors;
ExSr LoadS1#;
EndIf;
EndSr;
/End-Free
Michael Schutte
"John"
<jallen@xxxxxxxxx
om> To
Sent by: <MIDRANGE-L@xxxxxxxxxxxx>
midrange-l-bounce cc
s@xxxxxxxxxxxx
Subject
Cause for CPD3C21 format name not
04/28/2006 02:33 valid when calling QUSLSPL
PM
Please respond to
Midrange Systems
Technical
Discussion
<midrange-l@midra
nge.com>
I am trying to use the QUSLSPL program to get a list of
spooled files into a user space
I am on V5R3 and when I call the program QUSLSPL I get
message CPD3C21
I verified and re-verified that the format name is spelled
correctly
Message ID . . . . . . . . . : CPD3C21
Message file . . . . . . . . : QCPFMSG
Library . . . . . . . . . : QSYS2924
Message . . . . : Format name SPLF0100 is not valid.
Cause . . . . . : The format name specified is not valid.
Here is my call
CALL PGM(QUSLSPL) PARM('SFWOQENT QTEMP ' 'SPLF0100'
'*ALL'
'QEZJOBLOG *LIBL ' '*ALL' '*ALL')
Does anyone know possible causes for format name SPLF0100
not being valid?
Thanks
John
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
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.