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 #31) 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)