Home | Suggestion Box | MSU Home Page | Database Info
Administrative Information Services - Data
Administration
Programming Tips and Frequently Asked
Questions
Click on the question link to view the answer:
Question #1: My DYL program gets timed-out; Is it too big? Do I need to run it at night?
Question #2: I get a DYL error on this IF statement: IF TYPE EQ A OR B What's wrong with this?
Question #3: I get an E0217 error "SUBMIT FAILED ++INCLUDE PROCESSING ERROR" in SYSD when I try to run my program. What could cause this?
Question #4: Who gets notified of file changes made by AIS?
Question #5: My program has disappeared. Where could it be and how may I get it back?
Question #6: What is a "Macro"?
Question #1: My DYL program gets timed-out; Is it
too big? Do I need to run it at night?
Answer to #1: DYL programs are rarely so large that they use more CPU time
than allowed by the Job Class (see Job Classes).
If the program is getting timed out during a sort, then PICNSAVE (to a temp file) then
sort the temp file. Call AIS Help & Support Center if you need a larger temp
file. Below is an example to illustrate Efficient File Processing. Extended
run times and errors related to exceeding of the sort capacity have occurred when a
program sorts a large input file first. The following example shows two ways to set up a
program that uses the Person Assessment file (SISPASA). SISPASA contains almost 3.5
million records!
The first example is a DYL program that has a step that gets timed out during the SORT of SISPASA. This step tries to sort the file SISPASA by term. However, it never got through the SORT......
This program step could not run in the CPU time allowed:
REPORT001 132 WIDE ASA
********************************************************************
FILE SISPASA FB
80
; PERSON ASSESSMENT FILE
TERM
4 1
PID
9 5
AS_DETERM 16 25
ASSESSED_CR 4 45
NU 2 A
WORKAREA NAMED PARMDATA
PD_DATA
38 1
SEQTERM 4 1
ON ONE
MOVE DYLPARM TO PD_DATA
ENDONE
SORT SISPASA USING PID SEQUENCE# ; SORT SO MOST RECENT IS FIRST
IF TERM EQ TERM_SELECT
PICNSAVE TEMP5 USING TERM ; 4
PID ; 9
BY 279 ; blocking factor=12,834/46
ENDIF
Efficient File Processing for this program is to simply reverse the sort and selection logic. First, select the records desired (in this case a particular term), then PICNSAVE the result to a temp file, and sort the temp file. In a test of this logic, the SISPASA file started with 3,395,244 records. If we look at the number of records in SISPASA by term code we see:
US98
60,095 FS96
217,254 SS95
207,577 US93 86,041
SS98 244,270 US96
91,822 FS94
295,286 SS93 177,455
FS97 142,328
SS96 231,057 US94
131,003 FS92 426,116
US97 79,525
FS95 210,248 SS94 201,784
SS97 242,641
US95 74,522 FS93 276,220
The revised program would look something like this:
********************************************************************
REPORT001 132 WIDE ASA
FILE SISPASA FB 80 ; MONTHLY PROCESS
TERM 4 1
PID 9 5
AS_DETERM 16 25
WORKAREA
TERM_SELECT 4 1
ON ONE
MOVE DYLPARM TO TERM_SELECT
ENDONE
IF TERM EQ TERM_SELECT
PICNSAVE TEMP1 USING TERM ; 4
PID ; 9
BY 279 ; 12,834 / 46
ENDIF
*******************************************************************
REPORT002 132 WIDE ASA
USE TEMP1
SORT TEMP5 USING PID SEQUENCE# D ; SORT SO MOST RECENT IS
FIRST
Assuming that the user selects for Summer 1998, the
sort command in the 2nd example above will process only 7% of the records that
the 1st example would work with.
Here is another excerpt as an example of good programming. Please note that this is just part of a longer program; we have left off the DYL option, headers, and parameters that we would need to run this program:
(DYL options, header, option data etc.. would go here.....)
************************************************************
REPORT001 132 WIDE 60 LONG ASA
************************************************************
FILE SISPLVT
PLVT_PID 9 1 CH
PLVT_TERM_SEQ_ID 4 10 NU
PLVT_STUDENT_LEVEL_CODE 2 14 CH
PLVT_SYSTEM_REGISTRAT_STATUS 1 23 CH
PLVT_TERM_CODE 4 34 NU
PLVT_PRIMARY_MAJOR_CODE 4 38 CH
PLVT_COLL_CODE 2 42 CH
PLVT_DEPT_CODE 4 44 CH
PLVT_PRIMARY_LVL_FLAG 1 48 CH
PLVT_CLASS_CODE 2 81 CH
WORKAREA NAMED PARMDATA
PD_DATA 38 1 CH
SEQTERM 4 1 CH
READ SISPLVT
MOVE DYLPARM TO PD_DATA ;passes the job cards SEQTERM term to program
DOWHILE SISPLVT.STATUS NE 'E'
IF PLVT_TERM_SEQ_ID EQ SEQTERM ;choose students in term SEQTERM
IF PLVT_PRIMARY_LVL_FLAG EQ 'Y'
PERFORM PIC TO PICX
ENDIF
ENDIF
READ SISPLVT
ENDDO
STOP
PIC:
PICNSAVE TEMP2 USING PLVT_PID ;9
PLVT_PRIMARY_MAJOR_CODE ;4
PLVT_STUDENT_LEVEL_CODE ;2
PLVT_CLASS_CODE ;2
PLVT_COLL_CODE ;2
PLVT_DEPT_CODE ;4
BY 498 ;LRECL=23
PICX:
SORT TEMP2 USING TEMP2.PLVT_PRIMARY_MAJOR_CODE
(rest of code.....)
******************************** Bottom of Data *********************
Question #2: I get a DYL error on this IF statement: IF
TYPE EQ A OR B What's wrong with this?
Answer to #2: DYL syntax requires IF TYPE EQ A OR TYPE EQ B
Question #3: I get an E0217 error "SUBMIT FAILED
++INCLUDE PROCESSING ERROR" in SYSD when I try to run my program. What could
cause this?
Answer to #3: 1) The program name in the ++INCLUDE must be in the same
library as the run member (e.g. xxxdylrun). (for example, both your DYL run
member and the ++include program must be in Client.Panvalet) 2) Also, both
must have the same security code, or both must be "unsecured" 3)
If the program you are trying to ++include has ++includes within it, those embedded
++include programs must be in the same library as your run member and main program. Note:
a * in column 1 does not "comment out" a ++include in the main program -
Panvalet will still search it's libraries trying to find the program named in the
*++include. If the *++include program cannot be found in the library that has your run
member and main program an E0217 error will occur.
Question #4: Who gets notified of file changes made by
AIS?
Answer to #4: Each time a file changes (fields modified for Year 2000
implementation, field rearrangement, fields added or deleted, field format changes, field
meaning changes, DSN or DCB changes) or if files are going to be deleted or created, AIS
Data Administration Client Based Computing searches catalogued procedures (what you EXEC
in your programs JCL) for occurrences of the file name. Each catalogued procedure
contains the file that are authorized for the client office. If AIS is going to change,
add or delete a file the client office contact (not all clients) receive a notification
memo describing the changes, the date the changes will become effective, and presenting
new layouts if applicable. If you use ANYFILE (in DYL programs) or FROZEN (SAS
programs) to access files that are not in your office's catalogued procedure, please call
AIS if you want information about scheduled changes for these files.
Question #5: My program has disappeared. Where could it be
and how may I get it back?
Answer to #5: The program may have been archived. Client programs are
archived if one year elapses without access of the program ("last access" date).
Here's the steps you need to follow to restore an archived panvalet member.
1) Look in SARC to see if the member you want has been archived.
Enter the value "D8710*" as the SYSOUT ID, and press enter. This is
the most recent archive list.
2) You should see a list of report(s). These show the members that have been archived. Each report is for a different panvalet library, so select the one where the last 3 characters of the report name is the closest to the library you were using. For example, D8710USR shows USER.PANVALET and D8710CLN shows CLIENT.PANVALET, etc.
3) Search for your missing panvalet member using the "FIND" command. Type
"FIND mypgm" where "mypgm" is the name of the member you're searching
for, and press enter. The system will display it if it's on the list. If
nothing is found, then the member was not archived as of the date of the last run of job
D8710. D8710 runs each evening on Monday, Wednesday and Fridays. Your program may be
in another library, or else it was deleted by an authorized user.
4) Assuming the member was found, you can now exit SARC and go to SYSD (CICSCBC) to
request it be restored. In SYSD, select option 8 - JFT (Job/File Tailoring) on the
menu, and press enter.
5) Enter '9' at the command line to select the Panvalet Utilities Restore option, and
press enter.
6) On the Panvalet Restore Utility screen, at the Library Name ==> command line type
the name of the library (xxx.client.panvalet where xxx is your offices private library or
client.panvalet if you don't have a private library) that you want your program(s)
restored to. Under "Member Name" type in the name of the member you want to
restore. Note that you can enter a whole bunch of member names here, if you need to
restore more than one. Put your cursor at the INPUT ==> and type SUB, press
enter, and your program should be restored in a few minutes. This method runs a job
with your jobcard from the CPMS/SYSD PRIMARY OPTION MENU (selection 0 - PARMS, 5 -
UTILPRM).
Michigan State University Copyright 1998. All rights reserved. This page last updated on 06/02/02 10:55 PM.
If you have comments or suggestions about this webpage Email us. (Please do not change the subject line)