!TITLE Errors and warnings associated with loading !KEY ERRORS Usually error and warning messages are self-explanatory but sometimes it is not possible to convey the complexity of a failure or how it arose in a short error message, let alone what to do about it. In this section some of the less obvious errors and warnings will be enlarged upon. Most of the theoretical background to specific situations is dealt with in other sections and the explanations can be further expanded by referring to them. ! Ent len REF len < Ent len Default(Cascade) FAIL WARN (except FORTE) LET WARN WARN (except FORTE) MIN or call on dynamic ref with default loadparms FAIL WARN (except FORTE) MIN+LET or call on dynamic ref with LOADPARM(LET) set WARN WARN (except FORTE) !PAGE 2. Common entries (inc. FORTRAN blank common - F#BLCM). Loading conditions Ref len > Ent len REF len < Ent len Default(Cascade) * - LET * - MIN or call on dynamic ref with default loadparms FAIL WARN (except F#BLCM) MIN+LET or call on dynamic ref with LOADPARM(LET) set WARN WARN (except F#BLCM) * Common is created at the end of a cascade load if no data entry is found and is always made as long as the longest reference. !PAGE 1. 'Unable to create USERSTACK - ' 'Create AUXSTACK fails - ' 'Create USER GLA fails - ' What happened: When you first run commands which are not in the subsystem, the loader will create up to 3 temporary files on your behalf as required. These are the user stack(T#USTK), the auxiliary stack(T#ASTK) and the user gla(T#UGLA). The attempt to create the file named in the error message failed. What to do: The second half of the message should indicate what the problem is - e.g. too many files connected, too little file space, etc. - and action should be taken accordingly. You cannot run whatever it is you wanted to run until the file which couldn't be created is created. !PAGE 2. 'Extend USERGLA fails - ' What happened: When the user gla file T#UGLA is set up it is quite small but has the capacity to extend itself as necessary up to a certain system imposed limit. You have tried to exceed that limit. What to do: The most likely cause of this failure is trying to load a program which demands huge amounts of space from the gla, e.g. very large arrays or common blocks. You should find out why so much space is being requested and which object files are causing the problem. You can set up common blocks in separate data files using the command DATASPACE if you are using FORTRAN. Similarly, large internal arrays can be made external (e.g. %external in IMP, named common blocks in FORTRAN) and mapped on to data files with DATASPACE. !PAGE 3. 'Base gla full - ' What happened: You have tried to 'permanently load' an object file and there is not enough space in the base gla file to satisfy the gla requirement of the file. This failure can occur if you use PRELOAD a lot. What to do: If there are several files already permanently loaded then if you no longer require them call RESETLOADER to unload them. This may release sufficient space on the base gla. Failing that, proceed as in 2. above. !PAGE 4. 'Loader tables full' What happened: You have loaded so much software that the loader tables have completely filled up. This is an extremely unlikely failure. What to do: Inform your local advisory service. If you are loading FORTRAN it may be possible to suppress many of the entry points with the object file editor MODIFY. !PAGE 5. 'Too little space for initialised stack' What happened: The user stack has a hardware imposed upper limit of 252K. OPTION(INITSTACKSIZE=nn) reserves whatever you request of this 252K to be used as initialised stack. The area is used by some languages, especially FORTRAN, to store variables between calls of routines. Your program has requested more initialised stack than you have set up. What to do: Increase the INITSTACKSIZE. If you turn on loader monitoring or ANALYSE or OBJANAL the object files you can find out how much initialised stack is being requested if you are not sure. If the problem is being caused by cumulative requests from a number of object files then LOADPARM(MIN) may be worth trying if you are currently on default loadparms and you think that all the files loaded may not be called. If you are still having problems and you are a FORTRAN user then it may be worth recompiling with PARM(MINSTACK). !PAGE 6. 'Data ref ENTRY in FILE longer than entry and LOADPARM LET not set' What happened: You have a data entry called ENTRY already loaded. A reference to ENTRY has been found in FILE which expects the length of ENTRY to be bigger than it actually is. Since you have not specifically permitted this situation (by the command LOADPARM(LET)), it is treated as a fatal error. See table in note 1. What to do: You could set LOADPARM(LET), but this is potentially very dangerous since you may start overwriting other areas of store. This is one of the classic ways of getting address errors which are very difficult to trace. If you are using FORTRAN and the problem is mismatching common areas then you are probably using LOADPARM(MIN) or using PRELOAD. In both, the first file with a data reference to ENTRY will cause it to be created with the length specified in the file. If this is not the maximum length for ENTRY, then at some point this error will occur. You should always ensure that the longest reference gets loaded first. If you are not a FORTRAN user then the best plan is to modify the software so that data entries and their references have the same length. !PAGE 7. 'Load initiated by dynamic call to ENTRY failed' What happened: Your program made a dynamic call to ENTRY but the load failed. What to do: There will be an error message immediately following this message which will give the reason for the failure. The most common is that the loader could not find a particular entry point. !PAGE 8. 'Attempt to call unsatisfied ref ENTRY' What happened: A previous search for ENTRY failed but as LOADPARM(LET) was set the reference was made unresolved. You have tried to call it. What to do: Depends whether you expected the failure. You could provide a dummy entry point or use one of the alias facilities if you must persist. It would be better however to provide the expected software. !PAGE 9. 'Inconsistent directory entry for ENTRY' What happened: When the loader searched for ENTRY it was not loaded but a reference to it was found in one of the directories in the search list. When the loader loaded the file which the directory said contained ENTRY it found that it wasn't there at all. This can happen when an object file is recompiled with different entries but the directory in which it is inserted is not updated. (Note that if you recompile an object file which is inserted in to your active directory then the active directory is automatically updated.) What to do: Find out which directory is inconsistent by repeating the load with monitoring turned on. If it's one of your own directories then update it, if it's a system directory e.g. PUBLIC, UKCLIB, ERCLIB, CONLIB, SUBSYS etc then tell the Advisory Service who will notify the relevant person otherwise send a TELL message or MAIL to the directory owner suggesting politely that the directory requires updating! !> ! !1 bound file, and even when it is it may not be worth doing. !>