Task Attributes Programming Reference Manual
86000502-407_Task_Attributes_Programming_Reference_Manual_7.0_SSP1_March2002 86000502-407_Task_Attributes_Programming_Reference_Manual_7.0_SSP1_March2002
86000502-407_Task_Attributes_Programming_Reference_Manual_7.0_SSP1_March2002 manual pdf -FilePursuit
86000502-407_Task_Attributes_Programming_Reference_Manual_7.0_SSP1_March2002 86000502-407_Task_Attributes_Programming_Reference_Manual_7.0_SSP1_March2002
TaskAttributes TaskAttributes
User Manual: TaskAttributes
Open the PDF directly: View PDF .
Page Count: 366
Download | |
Open PDF In Browser | View PDF |
Unisys e-@ction ClearPath Enterprise Servers Task Attributes Programming Reference Manual ClearPath MCP Release 7.0 SSP1 March 2002 Printed in USA 8600 0502–407 . Unisys e-@ction ClearPath Enterprise Servers Task Attributes Programming Reference Manual UNISYS û 2002 Unisys Corporation. All rights reserved. ClearPath MCP Release 7.0 SSP1 March 2002 Printed in USA 8600 0502–407 NO WARRANTIES OF ANY NATURE ARE EXTENDED BY THIS DOCUMENT. Any product or related information described herein is only furnished pursuant and subject to the terms and conditions of a duly executed agreement to purchase or lease equipment or to license software. The only warranties made by Unisys, if any, with respect to the products described in this document are set forth in such agreement. Unisys cannot accept any financial or other responsibility that may be the result of your use of the information in this document or software material, including direct, special, or consequential damages. You should be very careful to ensure that the use of this information and/or software material complies with the laws, rules, and regulations of the jurisdictions with respect to which it is used. The information contained herein is subject to change without notice. Revisions may be issued to advise of such changes and/or additions. Notice to Government End Users: This is commercial computer software or hardware documentation developed at private expense. Use, reproduction, or disclosure by the Government is subject to the terms of Unisys standard commercial license for the products, and where applicable, the restricted/limited rights provisions of the contract data rights clauses. Correspondence regarding this publication can be e-mailed to doc@unisys.com. Unisys, ClearPath, and e-@ction are registered trademarks of Unisys Corporation in the United States and other countries. All other brands and products referenced in this document are acknowledged to be the trademarks or registered trademarks of their respective holders. Unisys e-@ction ClearPath Enterprise Servers Task Attributes Programming Reference Manual ClearPath MCP Release 7.0 SSP1 8600 0502–407 Unisys e-@ction ClearPath Enterprise Servers Task Attributes Programming Reference Manual ClearPath MCP Release 7.0 SSP1 8600 0502–407 Bend here, peel upwards and apply to spine. . Contents Section 1. Accessing Task Attributes What Are Task Attributes? .................................................................... 1–2 Why Use Task Attributes? ................................................... 1–2 Who Can Access Task Attributes? ...................................... 1–3 Performance Considerations ............................................... 1–3 Operator and End-User Access to Task Attributes ............................... 1–3 Using CANDE and MARC Task Equations........................... 1–3 Assigning Task Attributes to a Session ............................... 1–4 Using Operator Commands ................................................. 1–4 Programmer Access to Task Attributes ................................................ 1–5 Using Task Variables ............................................................ 1–5 Reusing Task Variables ........................................................ 1–6 Using WFL Task Equations .................................................. 1–7 Using the WFL Job Attribute List ........................................ 1–7 Assigning Task Attributes to an Object Code File ............... 1–8 Task Attribute Syntax Examples .......................................... 1–9 Using WFLSUPPORT to Access Task Attributes .............. 1–14 Assigning Task Attributes through HANDLEATTRIBUTES ................................................... 1–14 Decoding Error Values with ATTRIBUTEMESSAGE .......... 1–22 Examples............................................................................ 1–24 System Administrator Access to Task Attributes ............................... 1–26 Assigning Task Attributes to Usercodes............................ 1–26 Assigning Job Queue Attributes ........................................ 1–27 System Access to Task Attributes ...................................................... 1–27 Providing Default Values .................................................... 1–27 Providing Inherited Values ................................................. 1–27 Updating Task Attribute Values.......................................... 1–28 Resolving Conflicting Values.............................................. 1–28 Overwrite Rules for WFL Jobs .......................................... 1–28 Overwrite Rules for Session Tasks.................................... 1–29 Overwrite Rules for Other Processes................................ 1–29 Task Attribute Errors .......................................................... 1–30 Section 2. Task Attribute Descriptions Choosing the Right Task Attribute ........................................................ 2–1 Format of the Descriptions.................................................................... 2–7 Name.................................................................................... 2–7 Type ..................................................................................... 2–7 Units..................................................................................... 2–7 8600 0502–407 iii Contents Range................................................................................... 2–8 Default ............................................................................... 2–10 Read Time.......................................................................... 2–10 Write Time ......................................................................... 2–11 Inheritance ......................................................................... 2–11 Fork() Inheritance ............................................................... 2–11 Overwrite Rules................................................................. 2–12 Host Services..................................................................... 2–12 Attribute Number............................................................... 2–12 Synonym............................................................................ 2–13 Restrictions........................................................................ 2–14 Explanation ........................................................................ 2–14 Examples ........................................................................... 2–14 Run-Time Errors................................................................. 2–14 Section 3. Task Attributes A through E ACCEPTEVENT ..................................................................................... 3–2 ACCESSCODE ...................................................................................... 3–4 ACCUMIOTIME..................................................................................... 3–7 ACCUMPROCTIME .............................................................................. 3–8 APPLYLIST ............................................................................................ 3–9 AUTORESTORE .................................................................................. 3–10 AUTOSWITCHTOMARC ..................................................................... 3–12 AX........................................................................................................ 3–13 BACKUPFAMILY ................................................................................. 3–16 BDNAME............................................................................................. 3–19 BLOCKCREDENTIALS ........................................................................ 3–21 BOTTIMESTAMP ................................................................................ 3–23 BRCLASS ............................................................................................ 3–24 CHARGE.............................................................................................. 3–26 CHECKPOINTABLE............................................................................. 3–29 CLASS ................................................................................................. 3–31 CONVENTION ..................................................................................... 3–33 CORE .................................................................................................. 3–35 COUNTRY ........................................................................................... 3–37 CREDENTIALS .................................................................................... 3–38 CREDENTIALSBASE ........................................................................... 3–40 CURRENTDIRECTORY ....................................................................... 3–41 DATABASE.......................................................................................... 3–46 DATEOFFSET...................................................................................... 3–48 DCIINPUTEVENT................................................................................. 3–49 DCITASKEVENT .................................................................................. 3–51 DECKGROUPNO................................................................................. 3–53 DEFAULTFILEGROUP ........................................................................ 3–54 DEPTASKACCOUNTING..................................................................... 3–55 DESTNAME......................................................................................... 3–58 DESTSTATION .................................................................................... 3–61 DISPLAYONLYTOMCS ....................................................................... 3–63 ELAPSEDLIMIT ................................................................................... 3–65 ELAPSEDTIME.................................................................................... 3–66 iv 8600 0502–407 Contents ERROR ................................................................................................ 3–67 EXCEPTIONEVENT.............................................................................. 3–75 EXCEPTIONTASK ................................................................................ 3–77 Section 4. Task Attributes F through K FAMILY.................................................................................................. 4–2 FETCH ................................................................................................... 4–6 FILEACCESSRULE ................................................................................ 4–8 FILEACCOUNTING.............................................................................. 4–10 FILECARDS ......................................................................................... 4–12 FILEGROUP......................................................................................... 4–17 FILEMASK ........................................................................................... 4–19 GROUPCODE ...................................................................................... 4–21 HISTORY ............................................................................................. 4–23 HISTORYCAUSE ................................................................................. 4–24 HISTORYREASON............................................................................... 4–27 HISTORYTYPE..................................................................................... 4–49 HOSTNAME ........................................................................................ 4–50 HSPARAMSIZE ................................................................................... 4–52 INHERITCREDENTIALS....................................................................... 4–53 INHERITMCSSTATUS ......................................................................... 4–54 INITPBITCOUNT.................................................................................. 4–57 INITPBITTIME...................................................................................... 4–58 ITINERARY .......................................................................................... 4–59 JOBNUMBER ...................................................................................... 4–61 JOBSUMMARY................................................................................... 4–63 JOBSUMMARYTITLE.......................................................................... 4–66 Section 5. Task Attributes L through R LABELFORMAT .................................................................................... 5–2 LANGUAGE ........................................................................................... 5–4 LIBRARY................................................................................................ 5–6 LIBRARYSTATE..................................................................................... 5–9 LIBRARYUSERS .................................................................................. 5–11 LOCKED .............................................................................................. 5–12 MAXCARDS ........................................................................................ 5–13 MAXIOTIME ........................................................................................ 5–14 MAXLINES .......................................................................................... 5–16 MAXPROCTIME .................................................................................. 5–18 MAXWAIT ........................................................................................... 5–20 MCSNAME .......................................................................................... 5–22 MIXNUMBER ...................................................................................... 5–23 MPID ................................................................................................... 5–24 MYPPB ................................................................................................ 5–25 NAME .................................................................................................. 5–27 NETPATH............................................................................................. 5–30 NOJOBSUMMARYIO.......................................................................... 5–32 OPTION ............................................................................................... 5–34 OPTIONAL........................................................................................... 5–40 8600 0502–407 v Contents ORGUNIT ............................................................................................ 5–41 OTHERPBITCOUNT ............................................................................ 5–44 OTHERPBITTIME ................................................................................ 5–45 PARTNER ............................................................................................ 5–46 PARTNEREXISTS ................................................................................ 5–48 PDUMPTITLE ...................................................................................... 5–49 PRINTDEFAULTS ................................................................................ 5–50 PRIORHISTORY .................................................................................. 5–53 PRIORHISTORYCAUSE ...................................................................... 5–54 PRIORHISTORYREASON ................................................................... 5–55 PRIORHISTORYTYPE ......................................................................... 5–56 PRIORITY ............................................................................................ 5–57 REALGROUPCODE ............................................................................ 5–59 REALUSERCODE................................................................................ 5–60 REPORTBADINITIATE ........................................................................ 5–61 RESOURCE ......................................................................................... 5–62 RESTART............................................................................................. 5–65 RESTARTED........................................................................................ 5–66 Section 6. Task Attributes S through Z SAVEDGROUPCODE ............................................................................ 6–2 SAVEDUSERCODE ............................................................................... 6–3 SAVEMEMORYLIMIT ........................................................................... 6–4 SOURCEKIND ....................................................................................... 6–6 SOURCENAME ..................................................................................... 6–8 SOURCESTATION............................................................................... 6–10 STACKHISTORY.................................................................................. 6–13 STACKLIMIT........................................................................................ 6–16 STACKNUMBER ................................................................................. 6–18 STACKSIZE.......................................................................................... 6–19 STARTTIME......................................................................................... 6–21 STATION ............................................................................................. 6–23 STATIONNAME................................................................................... 6–25 STATUS............................................................................................... 6–27 STOPPOINT ........................................................................................ 6–30 SUPPLEMENTARYGRPS .................................................................... 6–32 SUPPRESSWARNING......................................................................... 6–33 SW1 through SW8 .............................................................................. 6–36 TADS ................................................................................................... 6–38 TANKING............................................................................................. 6–40 TARGET............................................................................................... 6–42 TASKERROR ....................................................................................... 6–43 TASKFILE ............................................................................................ 6–47 TASKLIMIT .......................................................................................... 6–49 TASKSTRING....................................................................................... 6–51 TASKVALUE ........................................................................................ 6–53 TASKWARNINGS ................................................................................ 6–54 TEMPFILELIMIT.................................................................................. 6–56 TEMPFILEMBYTES............................................................................. 6–58 TYPE.................................................................................................... 6–59 vi 8600 0502–407 Contents USERCODE ......................................................................................... 6–60 VALIDITYBITS ..................................................................................... 6–64 WAITLIMIT .......................................................................................... 6–65 Appendix A. Understanding Railroad Diagrams Railroad Diagram Concepts ...................................................................A–1 Paths ....................................................................................A–1 Constants and Variables.......................................................A–2 Constraints ...........................................................................A–3 Following the Paths of a Railroad Diagram ...........................................A–6 Railroad Diagram Examples with Sample Input ....................................A–7 Appendix B. Related Product Information Index 8600 0502–407 .............................................................................................. 1 vii Contents viii 8600 0502–407 Tables 1–1. HANDLEATTRIBUTES Error Numbers ............................................................. 1–19 2–1. 2–2. Task Attribute Functional Groupings .................................................................. 2–1 Task Attribute Synonyms ................................................................................. 2–13 3–1. 3–2. 3–3. USERDATA Errors ............................................................................................ 3–69 Library Attributes by Number ........................................................................... 3–69 Task Attributes by Number .............................................................................. 3–70 A–1. Elements of a Railroad Diagram .........................................................................A–2 8600 0502–407 ix Tables x 8600 0502–407 Section 1 Accessing Task Attributes This section discusses the purpose and audience of this manual, and provides an overview of some of the notation conventions used within the manual. It also explains task attributes and describes how to access them. For more information on task attributes, see the Task Management Programming Guide. Purpose Task attributes are used to record or control various aspects of process behavior. All processes possess all the task attributes described in these pages, though the values of the individual attributes vary from one process to another. The operating system uses these attributes in executing a process. Some programming languages also allow you to write applications that query or modify task attributes. Audience The audience for this manual consists of programmers who write tasking applications and operators who use task equations. Before reading this manual, you should have a basic familiarity with the MCP environment. A more detailed introduction to tasking and the use of task attributes is provided in the Task Management Programming Guide. Terminology Conventions Two different ANSI levels of COBOL are supported on the MCP systems: ANSI-74, and ANSI-85. These implementations are referred to in this guide as COBOL74 and COBOL85, respectively. Statements in this guide about “COBOL” are true of both COBOL implementations, unless otherwise specified. The term library, which was used in previous editions of this guide, has been replaced by the term server library. The term user process (when used in the context of libraries) has been replaced by the term client process. The library as it is declared in the client process is now referred to as the client library. These changes resulted from the implementation of a new type of libraries, called connection libraries. The term library is now used as a general term referring to a server library, a client library, or a connection library. For further information about libraries, refer to the Task Management Programming Guide. 8600 0502–407 1–1 Accessing Task Attributes What Are Task Attributes? Each time you initiate a program, the system creates a process that reflects the executing program. If several users initiate the same program, several processes are created for that program. Each process has attributes associated with it. These are called task attributes, although they could more accurately be called “process” attributes. Task attributes reflect the various properties of a process. Object Code File RUN Command RUN Command Process 1 Process 2 Task Attribute Value Task Attribute Value ACCEPTEVENT Happened ACCEPTEVENT Not Happened USERCODE MRICHARDS USERCODE JBROWN WAITLIMIT 1000 WAITLIMIT 250 Each process has the entire list of task attributes described in this manual from ACCEPTEVENT through WAITLIMIT. However, the values of the task attributes can vary. For example, each process has a USERCODE task attribute, but the USERCODE value for one process may be MRICHARDS and the USERCODE value for another process may be JBROWN, as shown in the previous figure. Why Use Task Attributes? You use task attributes to monitor the status of the process and to assign values for the attribute to pass on to the process. Therefore, you can access a task attribute either to read the attribute or to assign a value to the attribute. 1–2 8600 0502–407 Accessing Task Attributes Who Can Access Task Attributes? The end user, programmer, operator, and system administrator can access the task attributes of a process in various ways. The system software provides default and inherited values, resolves conflicting assignments, and issues errors for invalid attempts to access task attributes. The rest of this section describes the following ways to access task attributes: • Operator and end-user access • Programmer access • System administrator access • System access Performance Considerations Task information is a global resource. Access to task information for either inquiry or modification must be carefully controlled to ensure data integrity. The MCP provides the required locking protocol to control access. The locking protocol results in serialization of processes accessing task information. In general, higher priority tasks will gain access to task information before lower priority tasks. Operator and End-User Access to Task Attributes The operator or end user can affect the task attributes of a process with commands entered in Command and Edit (CANDE) or Menu-Assisted Resource Control (MARC) sessions or at the operator display terminal (ODT). Using CANDE and MARC Task Equations You can make task attribute assignments in CANDE or MARC by using task equations. Task equations are task attribute assignments that you can append to a process initiation statement. The system applies these assignments before initiating the process. In CANDE, you can include task equations after most process initiation statements, including RUN and UTILITY. In MARC, you can include task equations after the RUN command. In addition, if you initiate a process from the RUN screen, you can enter task equations on the TASKATTR screen and the FILEEQUATE screen. The following is a CANDE example: RUN ALGOL/TASK;SW1=TRUE;MAXPROCTIME=20; FILE IN=DAILY/DATA;FILE OUT(KIND=DISK,TITLE=OUTPUT); The preceding example shows assignments to several types of task attributes. SW1 is a Boolean attribute, and MAXPROCTIME is a real attribute. The FILE IN and FILE OUT assignments are examples of the syntax for assigning the FILECARDS task attribute. 8600 0502–407 1–3 Accessing Task Attributes You can also include task equations after a CANDE COMPILE command. Such task equations can make assignments to the compilation or the resulting object code file. For details, refer to “Assigning Task Attributes to an Object Code File” in this section. Note that a process can change the values of many of its own task attributes while it is running. Thus, a programmer can design a process to override the effects of task equations submitted by operators. Assigning Task Attributes to a Session When you initiate a process from a CANDE or MARC session, the process inherits a number of task attributes from the session. You can make assignments to some of the task attributes of the session by using special CANDE and MARC commands such as FAMILY, LANGUAGE, and so on. Thereafter, all the processes you initiate from the session inherit these values, unless you override them with task equations. For details, refer to the discussion of tasking from interactive sources in the Task Management Programming Guide. Using Operator Commands You can use any of several system commands to make assignments to the task attributes of a running process. You can enter these system commands, or close equivalents to them, at an ODT or in a MARC or CANDE session. These include communication commands, which affect such task attributes as EXCEPTIONEVENT, ACCEPTEVENT, and TASKVALUE. You can use other commands to change the PRIORITY value or to change the STATUS value of the process. For details, refer to the discussion of tasking from interactive sources in the Task Management Programming Guide. 1–4 8600 0502–407 Accessing Task Attributes Programmer Access to Task Attributes You can access task attributes in either of two ways: • Through language constructs in Work Flow Language (WFL), ALGOL, COBOL74, and COBOL85 • Through calls on the WFLSUPPORT library You can access task attributes from programs by any of several means, including task variables, task equations, the WFL job attribute list, and object code file assignments. The following subsections discuss the WFL, ALGOL, and COBOL language constructs for reading and assigning task attributes, as well as the WFLSUPPORT interface. Using Task Variables Task variables are the main method of accessing task attributes from programs. A task variable is an object that is declared in a program and that accesses the task attributes of a particular process. The task variable becomes associated with a particular process by being specified in the statement that initiates that process. For example, the following COBOL statement initiates a process and associates the task variable TASK-VAR-1 with that process: PROCESS TASK-VAR-1 WITH PROC-EXTERNAL. Certain predeclared task variables are available that are automatically associated with a particular process. The MYSELF task variable allows a process to access its own task attributes. The MYJOB task variable accesses the task attributes of the job of the process. The task attribute PARTNER accesses the task attributes of the partner process and the task attribute EXCEPTIONTASK accesses the task attributes of the exception task. Additionally, a process can access any task variable within the extended addressing environment of the outer block of the process. For example, if the process is an internal task, it can access task variables declared globally in its parent. The process can access any task variables declared in its own code. The process can also access any task variables that are passed as parameters. Task attributes can be assigned to a task variable before the task variable is used in a process initiation statement. These task attributes are assigned to the new process when it is initiated. If the same task attribute is assigned more than once, the most recent value assigned is used when the process is initiated. If the task attributes of the task variable are read before initiation, they return their default values or the values they were previously assigned. 8600 0502–407 1–5 Accessing Task Attributes If a task variable is associated with a dependent process in the initiation statement, then the task variable remains associated with the process after initiation. The task variable can be used to access the task attributes of the running process. Assignments to the task variable can change the behavior of the process. Interrogations of the task variable can be used to monitor the status of the process. If a task variable is associated with an independent process in the initiation statement, then any task attributes that were previously assigned to the task variable are applied to the independent process. However, once initiation completes, the task variable ceases to be associated with the independent process. The task attributes of the task variable can be read or written to; however, these operations do not access the task attributes of the independent process. Once the process has terminated, the task variable can be used to examine the final values of the task attributes of the process. For example, the history-related attributes of the task variable can be examined for information about how the process terminated. Reusing Task Variables The same task variable can be specified in more than one task initiation statement in a program. However, the same task variable cannot be associated with two processes at the same time. For example, the following pair of ALGOL statements causes an error: PROCESS PROG1 [T]; PROCESS PROG2 [T]; Because the first statement initiates an asynchronous process, task variable T is still in use when the second statement is executed. An ALGOL process that executes the statements in the previous example is discontinued with the run-time error “INITIATE ACTIVE TASK”. Problems can arise from task attributes being carried over from one use of the task variable to another. Consider the following ALGOL statements: CALL PROG1 [T]; CALL PROG2 [T]; No error results from these statements, because PROG1 is initiated as a synchronous process. The statement that initiates PROG2 is not executed until PROG1 terminates. However, PROG1 might have used the MYSELF task variable to make an assignment to its FAMILY task attribute. This new FAMILY value is passed on to PROG2, simply because it uses the task variable that was previously associated with PROG1. Other task attribute values can also be passed on in this way. This problem can be prevented by declaring a different task variable for each process that is to be initiated. The task variable can also be made safe for reuse by reinitializing it. A task variable can be reinitialized by setting the STATUS task attribute to NEVERUSED. This assignment causes all task attributes to be returned to their default values. The following ALGOL statement reinitializes a task variable: TVAR.STATUS := VALUE(NEVERUSED); 1–6 8600 0502–407 Accessing Task Attributes WFL also provides the INITIALIZE statement for reinitializing task variables. The following is an example of this statement: INITIALIZE (TVAR); These statements reinitialize the task variable only if it is not currently in use. That is, the current value of the STATUS task attribute must be TERMINATED, BADINITIATE, or NEVERUSED. Otherwise, the assignment has no effect. Using WFL Task Equations You can use task equations in WFL jobs that are similar to the task equations allowed in CANDE or MARC sessions. You can include task equations after a process initiation statement, such as RUN or PROCESS. Where task equations conflict with previous assignments to the task variable, the task equations take precedence. The following is an example of a WFL job that uses task equations: 100 ?BEGIN JOB WFL/TEST; 200 TASK T (TASKVALUE = 3); 300 RUN OBJECT/ALGOL/TASK [T]; 400 TASKVALUE = 1; 500 ?END JOB In this example, OBJECT/ALGOL/TASK runs with a TASKVALUE of 1 because the task equation overrides the previous assignment to the task variable. You can also use task equations with the COMPILE statement to make assignments to the compilation or the resulting object code file. For details, refer to “Assigning Task Attributes to an Object Code File” in this section. Note that a process can change the values of many of its own task attributes while it is running. Thus, a programmer can design a process to override the effects of task equations submitted through WFL. Using the WFL Job Attribute List A WFL job attribute list consists of task attribute assignments in the WFL source program, immediately following the job header. The system applies the assignments in the job attribute list before initiating the job. This feature can be useful because some task attributes can be assigned to a process only before initiation (an example is the CLASS task attribute). 8600 0502–407 1–7 Accessing Task Attributes The following is an example of a WFL job with a job attribute list that assigns the CLASS, CHARGE, and JOBSUMMARY task attributes: ?BEGIN JOB RUNNER; CLASS = 2; CHARGE = ORDERS; JOBSUMMARY = SUPPRESSED; RUN OBJECT/TAU ON PACK; ?END JOB Assigning Task Attributes to an Object Code File In some cases, you might want certain task attributes to be assigned the same values each time a program is run. For many task attributes, you can achieve this effect by including statements in the source program that assign task attributes to the MYSELF task variable. However, some task attributes can only be assigned before process initiation. For a WFL job, you can assign such task attributes in the job attribute list. For programs written in other languages, you can assign such task attributes to the object code file. The task attributes stored in the object code file are used whenever the object code file is initiated, unless they are overridden by later task attribute assignments. You can assign task attributes to the object code file at compile time through the use of compiler task equations, which can be included in the WFL or CANDE COMPILE statements. You must be careful to distinguish between task equations that affect the compilation itself and task equations that affect the resulting object code file. The following WFL example uses compiler task equations: 500 COMPILE OBJECT/X WITH ALGOL LIBRARY; 600 COMPILER FILE CARD (TITLE = X, KIND = DISK); 700 ALGOL PRIORITY = 50; 800 TASKVALUE = 3; In both WFL and CANDE, task equations are applied to the compilation if they are preceded by the word COMPILER or the name of a compiler. Otherwise, the task equations are applied to the object code file. In the preceding example, the task equations at lines 600 and 700 are applied to the compilation. The task equation at line 800 is applied to the object code file. WFL includes a statement that can be used to make task attribute assignments to an existing object code file. This is the MODIFY statement. Task attributes that are stored by a MODIFY statement have the same effect as task attributes assigned at compile time: they serve as default values for every execution of that object code file. They also override any conflicting task attribute assignments that were made at compile time. The following is an example of a MODIFY statement: MODIFY OBJECT/X; CHARGE = ADMIN; FILE INPUT = (JAS)DOC/103 ON DOCPK; 1–8 8600 0502–407 Accessing Task Attributes Note: Task attributes assigned to an object code file do not affect internal tasks of that object code file. For example, suppose you assign TASKVALUE = 1 to an object code file. Someone then initiates the object code file, which in turn uses a CALL or PROCESS statement to initiate an internal procedure as an internal task. That internal task is not directly affected by the TASKVALUE = 1 assignment. Therefore, the internal task runs with the default TASKVALUE of 0 unless a different value is explicitly assigned to the task variable of the internal task. Task Attribute Syntax Examples Different task attributes store different types of values. Most task attributes store values that are of type Boolean, event, integer, mnemonic, real, string, or task. The following pages give examples of how these various types of task attributes can be read or assigned in WFL, ALGOL, COBOL74, and COBOL85. For information about how to access task attributes that are of irregular types, refer to the task attribute descriptions. Note that task attributes can also be assigned from other task declarations. For example, in ALGOL: TASK PRIORITY := MYSELF.PRIORITY -5; In COBOL74: CHANGE ATTRIBUTE task-attr OF task-id TO ATTRIBUTE task-attr OF task-id. Accessing Boolean Task Attributes Boolean task attributes have a value of TRUE or FALSE. In WFL, these values can be read or assigned directly, or the task attribute can be used in other Boolean expressions. WFL also allows the use of a null assignment, which assigns a value of TRUE. Thus, the following two statements are equivalent. (In these statements, T is a task variable.) T (DISPLAYONLYTOMCS = TRUE); T (DISPLAYONLYTOMCS); % Null assignment; assigns a value of TRUE The following WFL examples show the use of Boolean task attributes as expressions. BOOL is a Boolean variable and T is a task variable. BOOL := T(LOCKED); IF T(SW1) THEN DISPLAY "NO ERRORS FOUND"; The ALGOL syntax is similar, except that task attributes are preceded by periods instead of enclosed in parentheses. In the following examples, BOOL is a Boolean variable and T is a task variable: T.DISPLAYONLYTOMCS := TRUE; BOOL := T.LOCKED; IF T.SW1 THEN BOOL := TRUE; 8600 0502–407 1–9 Accessing Task Attributes In COBOL74 and COBOL85, Boolean task attributes return a value of 0 if FALSE or 1 if TRUE. Boolean attributes must be moved into a numeric receiving field. However, the VALUE function can be used when assigning or reading Boolean values. In the following examples, BOOLVAL was declared as 77 BOOLVAL BINARY PIC 9(11). MOVE ATTRIBUTE LOCKED OF MYSELF TO BOOLVAL. CHANGE ATTRIBUTE LOCKED OF MYSELF TO VALUE FALSE. IF ATTRIBUTE SW1 OF MYSELF = VALUE FALSE DISPLAY "SWITCH ONE IS OFF." Accessing Event Task Attributes The event task attributes are accessed by the same types of statements that access event variables. For a discussion of statements related to events, refer to the Task Management Programming Guide. The following are ALGOL examples: CAUSE (MYSELF.EXCEPTIONTASK.EXCEPTIONEVENT); WAITANDRESET (MYSELF.EXCEPTIONEVENT); The following are COBOL74 or COBOL85 examples: CAUSE ATTRIBUTE EXCEPTIONEVENT OF MYSELF. WAIT AND RESET UNTIL ATTRIBUTE EXCEPTIONEVENT OF MYSELF. WFL jobs cannot reference event task attributes directly. However, the following statements cause the job to implicitly wait on the exception event and the accept event: WAIT; % Causes the job to wait on its own exception event. STR := ACCEPT("ENTER A COMMAND"); % Waits on its own accept event & % stores operator AX command % input in string variable STR. Accessing Integer and Real Task Attributes In general, integer and real task attributes accept or return a numeric identifier, literal, or arithmetic expression. The system allows you to mix integer and real types: thus, you can assign a real value to an integer task attribute or read a real task attribute value into an integer variable. The system rounds off real numbers to change them into integers where necessary. In the following WFL example, INT is an integer variable and T is a task variable: CLASS = 2; INT := T(TASKVALUE); 1–10 8600 0502–407 Accessing Task Attributes In the following ALGOL example, INT is an integer variable and T is a task variable: T.TASKVALUE := 3; INT := T.CORE; In the following COBOL74 or COBOL85 examples, INTVAL was declared as 77 INTVAL BINARY PIC 9(11). CHANGE ATTRIBUTE TASKVALUE OF MYSELF TO 16. MOVE ATTRIBUTE TASKVALUE OF MYSELF TO INTVAL. Accessing Mnemonic Task Attributes In WFL, mnemonic task attributes can be read into string values or compared with string values. Mnemonics can be assigned as keywords, without quotes around them. In the following examples, STR is a string variable and T is a task variable: MYSELF(JOBSUMMARY = SUPPRESSED); STR := T(HISTORYTYPE); IF T(HISTORYTYPE) = "NORMALEOTV" THEN DISPLAY "RAN SUCCESSFULLY"; In ALGOL, mnemonic task attributes accept or return a numeric value. The VALUE function can be used to translate a mnemonic into a numeric value for assignment to, or comparison with, a mnemonic task attribute. In the following examples, INTVAL is an integer variable and T is a task variable: MYJOB.JOBSUMMARY := VALUE(SUPPRESSED); INTVAL := T.HISTORYTYPE; IF T.HISTORYTYPE = VALUE(SUPPRESSED) THEN ... In COBOL74 or COBOL85, mnemonic task attributes also accept or return a numeric value and the VALUE function is available. In the following examples, MNEMVAL was declared as 77 MNEMVAL BINARY PIC 9(11): MOVE ATTRIBUTE JOBSUMMARY OF MYSELF TO MNEMVAL. % Returns a number CHANGE ATTRIBUTE JOBSUMMARY OF MYSELF TO VALUE UNCONDITIONAL. IF ATTRIBUTE JOBSUMMARY OF MYSELF = VALUE UNCONDITIONAL DISPLAY "JOBSUMMARY IS UNCONDITIONAL". Accessing String Task Attributes In WFL, string task attributes can be read into string variables and assigned string literals, variables, or expressions. WFL also allows some string task attributes to be assigned a nonquoted value. If a string task attribute is assigned a nonquoted value, then the nonquoted value is checked for correct syntax at compile time. If the same task attribute is assigned a string value, the contents of the string are not checked for syntax until run time. 8600 0502–407 1–11 Accessing Task Attributes In the following WFL examples, STR is a string variable and T is a task variable: T(FAMILY DISK = DPMAST OTHERWISE DISK); % Nonquoted assignment T(FAMILY = "DISK = DPMAST OTHERWISE DISK"); % String assignment T(FAMILY = "GIBBERISH"); % Receives run-time error STR := T(FAMILY); % Reading the value into a string variable In ALGOL, string task attributes are treated as one-dimensional EBCDIC arrays. You can use REPLACE statements to assign values or to read string task attribute values into EBCDIC arrays. You must terminate values assigned to string task attributes with a period (.). Values returned by string task attributes are also terminated with a period. In the following examples, T is a task variable and ARR is an EBCDIC array that was declared as EBCDIC ARRAY ARR[0:79]: REPLACE T.NAME BY "(JASMITH)OBJECT/THETA ON PACK."; REPLACE ARR BY T.NAME; Note: Note that ALGOL syntax does not allow you to use string task attributes in the same way as string variables. For example, if STR is a string variable, the statement STR := T.NAME results in a syntax error. In COBOL74 or COBOL85, string task attributes accept or return an alphanumeric item. The value is terminated with a period, as in ALGOL. In the following example, TASK-VAR1 is a task variable and STRINGVAL was declared as 77 STRINGVAL PIC X(80): CHANGE ATTRIBUTE NAME OF TASK-VAR-1 TO "OBJECT/ALGOL/TASK.". MOVE ATTRIBUTE FILECARDS OF TASK-VAR-1 TO STRINGVAL. Accessing Task-Valued Task Attributes Task-valued task attributes can be assigned a task variable or can be used as task variables to access the task attributes of a particular process. In the following ALGOL examples, TVAR is a task variable that was previously declared: MYSELF.PARTNER := TVAR; MYSELF.EXCEPTIONTASK.TASKVALUE := 33; In the following COBOL74 or COBOL85 examples, TVAR-1 and TVAR-2 were previously declared as 77-level items with a USAGE of TASK: CHANGE ATTRIBUTE EXCEPTIONTASK OF TVAR-1 TO TVAR-2. CHANGE ATTRIBUTE PRIORITY OF ATTRIBUTE PARTNER OF MYSELF TO 65. Task-valued task attributes cannot be accessed from WFL. 1–12 8600 0502–407 Accessing Task Attributes Accessing Task Attributes at the Bit Level Some Boolean, integer, and real task attributes return values that are divided into bit fields with distinct meanings. Examples are the ERROR, HISTORY, LIBRARYSTATE, ORGUNIT, SOURCESTATION, STOPPOINT, and TASKERROR task attributes. The following are ALGOL statements that extract the values from various fields of the ERROR task attribute. In these statements, R is a real variable, ERR is a Boolean variable, and ERRNUM and UCERRNUM are real variables: R := TVAR.ERROR; ERR := BOOLEAN(R.[46:1]); ERRNUM := R.[7:8]; UCERRNUM := R.[27:20]; % % % % Put ERROR value in real variable Translate a bit value into a Boolean Record the task attribute number Record the USERDATA error number The following are COBOL74 or COBOL85 statements that extract the values from the various fields of the ERROR task attribute. The variables INTVAL, ERR, ERRNUM, and UCERRNUM were all declared as 77-level variables of type BINARY PIC 9(11). MOVE MOVE MOVE MOVE ATTRIBUTE INTVAL TO INTVAL TO INTVAL TO ERROR OF TASK-VAR-1 TO INTVAL. ERR [ 46:00:01 ]. ERRNUM [ 07:07:08 ]. UCERRNUM [ 27:19:20 ]. In WFL, there is no direct way to access task attributes at the bit level. However, the ERROR task attribute can be accessed by mnemonic values in WFL. Further, a WFL job can extract values from selected fields of any real or integer value by calling the following ALGOL program: PROCEDURE WORDANALYZER(FULLWORD, STARTPOINT, LENGTH, FIELDVAL); VALUE FULLWORD, STARTPOINT, LENGTH; REAL FULLWORD, FIELDVAL; INTEGER LENGTH, STARTPOINT; BEGIN FIELDVAL := FULLWORD.[STARTPOINT:LENGTH]; END. In the WORDANALYZER program, the FULLWORD parameter receives the real or integer value to be analyzed. The STARTPOINT parameter receives the left-most bit position of the field being evaluated. The LENGTH parameter receives the length of the field being evaluated. The FIELDVAL parameter returns the value of the specified field. Note that the calling WFL job should pass the FIELDVAL parameter by reference. WFL does not provide access to the HISTORYREASON task attribute. The following WFL job determines the HISTORYREASON value indirectly by calling the WORDANALYZER program. WORDANALYZER extracts field [23:08] from the HISTORY task attribute value. 8600 0502–407 1–13 Accessing Task Attributes BEGIN JOB TEST/WFL; REAL HREASON; TASK T; RUN OBJECT/DELTA [T]; RUN OBJECT/WORDANALYZER(T(HISTORY),23,8,HREASON REFERENCE); IF T(HISTORYTYPE) = "DSEDV" AND T(HISTORYCAUSE) = "OPERATORCAUSEV" AND HREASON = 2 % Equivalent to HISTORYREASON mnemonic JUSTDSEDV THEN ABORT "OBJECT/DELTA WAS DSED BY OPERATOR"; END JOB Note: Some programmers have attempted to use WFL expressions involving DIV and MOD operators to extract the values of fields in words. This method is not recommended, because the DIV and MOD operators interpret a number of the bits in field [46:08] as sign or exponent values. The value of these high-order bits can therefore affect the results of DIV and MOD operations. ALGOL, COBOL, and WFL all provide bit-level access to the OPTION task attribute by way of special mnemonics that specify the bit position. For examples, refer to the description of the OPTION task attribute. Using WFLSUPPORT to Access Task Attributes The WFLSUPPORT system library exports two library procedures that assist in assigning attributes to a task variable: the HANDLEATTRIBUTES procedure and the ATTRIBUTEMESSAGE procedure. The HANDLEATTRIBUTES procedure accepts a string of text containing task attribute assignments, and makes the requested assignments to a task variable. The ATTRIBUTEMESSAGE procedure accepts an encoded task attribute assignment error as input and returns a textual error message. Assigning Task Attributes through HANDLEATTRIBUTES The HANDLEATTRIBUTES procedure has the following primary uses, which are illustrated by examples later in this section. • HANDLEATTRIBUTES passes task attributes to a compiler for insertion into an object code file. This procedure replaces the old mechanism of attaching attributes to the compiler SHEET array, which is to be deimplemented on a future release. • An interactive program using HANDLEATTRIBUTES allows the user to enter task attribute assignments at run time. Because HANDLEATTRIBUTES includes all the logic for checking the task attribute syntax, the interactive program need not be changed as new task attributes are implemented in the future. The HANDLEATTRIBUTES procedure assumes that the task attribute assignments follow the syntax of a task equation list in WFL, except that local data specifications cannot be included. For the syntax of the WFL task equation list, refer to the Work Flow Language (WFL) Programming Reference Manual. 1–14 8600 0502–407 Accessing Task Attributes HANDLEATTRIBUTES can handle assignments to all the task attributes that can be specified in WFL. These include assignments to the DATABASE, FILECARDS, and LIBRARY task attributes, which are known in WFL as database equations, file equations, and library equations, respectively. Like WFL, HANDLEATTRIBUTES does not handle assignments to task attributes of type event or task. If any of the task attribute assignments contains an error, HANDLEATTRIBUTES returns without making the requested assignments. You can specify options to tell HANDLEATTRIBUTES whether to accept assignments that generate warnings. You can use the AICOMPILEF field of the HOW1 parameter to specify whether HANDLEATTRIBUTES is to accept both compiler task equations and noncompiler task equations. Additionally, you can use the DISPOSITION parameter to specify whether the equations are to be assigned to the target task variable, assigned to the MYPPB task attribute for later use, or simply checked for syntactical correctness. The following is an ALGOL example of the way the WFLSUPPORT library declaration and the HANDLEATTRIBUTES procedure declaration look in a calling program: LIBRARY WFLSUPPORT (LIBACCESS=BYFUNCTION); REAL PROCEDURE HANDLEATTRIBUTES (TEXT,TEXTOFFSET,TEXTLENGTH,HOW1,DISPOSITION,TARGET,ERRORLOC); REAL TEXTOFFSET,TEXTLENGTH,HOW1,DISPOSITION, ERRORLOC; EBCDIC ARRAY TEXT[*]; TASK TARGET; LIBRARY WFLSUPPORT; Alternatively, you can use the $INCLUDE compiler option in your program to automatically insert these declarations from the file *SYMBOL/ATTRIBUTE/ INTERPRETER/INTERFACE. It is a good idea to do so because this file also contains many defines that can be used with the HANDLEATTRIBUTES procedure. The HANDLEATTRIBUTES parameters are explained as follows: TEXT The calling program must place the text of the task attribute assignments in this parameter. The assignments must follow the syntax of a task equation list in WFL. TEXTOFFSET The calling program can use this parameter to specify the offset within the TEXT buffer at which the attribute assignments begin. The offset is zero-relative and expressed in units of bytes. TEXTLENGTH The calling program can use this parameter to specify the number of bytes to be parsed starting at the location specified by the TEXTOFFSET parameter. If TEXTLENGTH is 0, then TEXT is scanned until a null character is encountered. 8600 0502–407 1–15 Accessing Task Attributes HOW1 The calling program can use this parameter to specify parsing control options. The fields of this parameter have the following meanings: [47:23] Reserved. The value of this field must be 0. [24:01] AIWARNINGSFATALF. If 1, and a warning or error is detected, HANDLEATTRIBUTES returns without making the requested assignments. The procedure result and the ERRLOC parameter store information about the error or warning. If 0, and a warning is detected, HANDLEATTRIBUTES displays a warning message and then continues normally. If an error is detected, HANDLEATTRIBUTES behaves as it would if the value of this field were 1. [23:23] Reserved. The value of this field must be 0. [00:01] AICOMPILEF. If AICOMPILEF is 1, compiler mode is enabled. This mode makes it possible to assign task attributes to a compilation or to the resulting object code file. Compiler task equations are those that are prefixed by the word COMPILER or the name of a compiler, such as ALGOL, PASCAL, and so on. If AICOMPILEF is 0, then any task attribute assignments preceded by a compiler prefix result in a syntax error. For further information, refer to the following discussion of the DISPOSITION parameter. 1–16 8600 0502–407 Accessing Task Attributes DISPOSITION The calling program can use this parameter to specify whether the task attribute assignments are to be applied. The effect of the DISPOSITION parameter varies, depending on whether compiler mode is specified by the AICOMPILEF field of the HOW1 parameter. The values of this parameter have the following meanings: 0 AIATTACHV If HANDLEATTRIBUTES is invoked in compiler mode, then compiler task equations are assigned to TARGET.MYPPB. The compiler task equations in TARGET.MYPPB are applied to TARGET when TARGET.APPLYLIST is set to TRUE, or when TARGET is used to initiate a process (whether the process is a compiler or not). Noncompiler task equations are assigned as a nested MYPPB value within TARGET.MYPPB. If TARGET is later used to initiate a compiler process, the compiler process reads the nested task equations from TARGET.MYPPB and assigns them to the resulting object code file. If HANDLEATTRIBUTES is invoked in noncompiler mode, then any compiler task equations receive an error. Noncompiler task equations are assigned to TARGET.MYPPB. The equations in TARGET.MYPPB are applied when TARGET.APPLYLIST is set to TRUE or when TARGET is used in a process initiation statement. 1 AIAPPLYV If HANDLEATTRIBUTES is invoked in compiler mode, then compiler task equations are applied directly to TARGET. Noncompiler task equations are assigned to TARGET.MYPPB. If TARGET is later used to initiate a compiler, the compiler applies the equations in TARGET.MYPPB to the resulting object code file. Note that the system never applies the TARGET.MYPPB equations to TARGET, not even if TARGET.APPLYLIST is set to TRUE or TARGET is used in a process initiation statement. If HANDLEATTRIBUTES is invoked in noncompiler mode, then any compiler task equations receive an error. Noncompiler task equations are applied directly to TARGET. Nothing is written to TARGET.MYPPB. 2 AISYNTAXONLYV If HANDLEATTRIBUTES is invoked in compiler mode, then both compiler and noncompiler task equations are checked for syntax. None of the equations are applied and nothing is written to TARGET.MYPPB. If HANDLEATTRIBUTES is invoked in noncompiler mode, then any compiler task equations receive an error. Noncompiler task equations are checked for syntax. None of the equations are applied and nothing is written to TARGET.MYPPB. TARGET The calling program can use this parameter to provide the task variable to which the task attribute assignments are applied. This parameter is ignored if the value of the DISPOSITION parameter is AISYNTAXONLYV. 8600 0502–407 1–17 Accessing Task Attributes ERRORLOC HANDLEATTRIBUTES uses this parameter to return error information to the calling program. If field AIERRORF of the procedure result is 0, meaning that no error occurred, then this parameter stores a 0. If field AIERRORF has a value of 1, then ERRORLOC returns a value divided into the following fields: [47:20] This field is always 0. [27:01] AIERROFFSETVALIDF If 1, then the error is associated with a particular offset in the input TEXT array. This offset is given in field AIERROFFSETF of the ERRORLOC parameter. If 0, then the error is not associated with a specific offset. In this case, the AIERROFFSETF field does not store any offset. [26:01] This field is always 0. [25:18] AIERROFFSETF This field stores the zero-relative offset of the task attribute error in the TEXT parameter. This field is meaningful only if the AIERROFFSETVALIDF field of the ERRORLOC parameter stores a 1. [07:08] This field is always 0. Procedure Result The HANDLEATTRIBUTES result contains general information about task attribute errors. The value is divided into the following fields: [47:08] AITYPEF The type of attribute for which the error was detected. The possible values are as follows: 1 = FILECARDS task attribute 2 = Miscellaneous task attribute 4 = PRINTDEFAULTS task attribute 6 = LIBRARY task attribute 7 = DATABASE task attribute [39:16] AIATTNUMF The number of the attribute for which the error was detected. If field [47:08] of the procedure result indicates that FILECARDS had an error, then AIATTNUMF stores the number of the file attribute that caused the error. Otherwise, AIATTNUMF stores the number of the task attribute that caused the error. For file attribute numbers, refer to the File Attributes Programming Reference Manual. For task attribute numbers, refer to the description of the ERROR task attribute. [23:16] AIERRNUMF The error or exception number. Refer to Table 1–1, “HANDLEATTRIBUTES Error Numbers,” for a list of these numbers and their meanings. This information also appears in the file *SYMBOL/ATTRIBUTE/INTERPRETER/INTERFACE. 1–18 8600 0502–407 Accessing Task Attributes [07:05] This field is always 0. [02:01] AIATTNUMVALIDF If 1, then the error is associated with a particular attribute in the input TEXT. In this case, the AIATTNUMF field and the AITYPEF field are valid. If 0, the error is not associated with a particular attribute and these fields are not valid. [01:01] AIWARNINGF If 0, the error is fatal. If 1, it is a warning. [00:01] AIERRORF If 1, an error occurred. If 0, no error occurred and none of the other fields in this result are valid. Table 1–1 explains the values of the numbers returned in field [23:16] of the HANDLEATTRIBUTES procedure result. Table 1–1. HANDLEATTRIBUTES Error Numbers Error Number Meaning 0 No error or warning occurred. 1-1000 If the error number is in this range, the error number is equal to the HISTORYREASON task attribute value. For information about the value, refer to the description of the HISTORYREASON task attribute. 1015 A syntax error was detected. 1017 An attribute mnemonic was expected. 1018 A numeric value was expected. 1019 An end-of-text marker was encountered. 1021 The same attribute has been assigned two values. This is a warning in most cases, but it is an error for the PRINTDEFAULTS attribute. If the warning is ignored, the more recent value overwrites the previous value. 1023 A right parenthesis was expected. 1027 A semicolon was expected (;). 1030 A string over 256 characters long was specified. 1031 An ending quotation mark (") is missing. 1032 The maximum number was exceeded. 1033 An illegal character was used. 1034 An illegal file name was used. 1035 An OPTION task attribute mnemonic was expected. 1036 An attribute mnemonic was expected. 1037 An illegal attribute mnemonic was used. 8600 0502–407 1–19 Accessing Task Attributes Table 1–1. HANDLEATTRIBUTES Error Numbers Error Number 1–20 Meaning 1038 A left parenthesis was expected. 1039 A real constant was expected. 1040 The user part of a file title must be 12 names or less. 1041 The end of the statement was expected. 1042 A task attribute was expected. 1043 A compiler name was expected. 1044 An equal sign (=) was expected. 1045 A simple volume name was expected. 1046 A keyword was not recognized. 1047 An attempt was made to assign a value to a read-only attribute. 1048 Too many serial numbers were specified. 1049 The serial number was too long. 1050 A serial number was expected. 1051 The serial number contained an illegal character. 1052 This construct can be used only in a job heading. 1053 An illegal resource value was specified. 1054 A number from 0 to 255 was expected. 1055 This attribute is not valid in this context. 1056 A comma (,) was expected. 1057 The word OTHERWISE or ONLY was expected. 1058 A WFLSUPPORT fault occurred. 1059 String constants are not allowed here. 1060 This construct is not implemented. 1061 There was an error in numeric constant evaluation. 1062 The DATABASE attribute was expected. 1063 An illegal name was specified. 1064 A hyphen (-) or underscore (_) cannot be the first character of an unquoted name. 1065 The family specification was invalid. 1066 A file attribute was expected. 1067 A print attribute or print modifier was expected. 1068 A file equation for this file was previously specified; the previous equation is ignored. 8600 0502–407 Accessing Task Attributes Table 1–1. HANDLEATTRIBUTES Error Numbers Error Number Meaning 1072 An invalid type was specified. 1073 An invalid INTNAME file attribute value was specified. 1074 The word UP was expected. 1075 The word FILE was expected. 1076 The version number specified in ParseTaskAttributes, AttributesToTask, or AttributeMessage is too big. 1077 AIERRINFO_AVAILF is not 0. 1078 AIHOW_AVAILF is not 0. 1079 AIHOW1_AVAIL1F or AIHOW1_AVAIL2F is not 0. 1080 AIHOW3_AVAILF is not 0. 1081 AIHOW4_AVAILF is not 0. 1082 HOW5 is not 0. 1083 AIWHATTODO_AVAIL1F or AIWHATTODO_AVAIL2F is not 0. 1084 LIBRARY attribute expected. 1085 Only one node is allowed in a Multi-Vendor Password. 1086 The INTNAME of a file is more than 17 characters. 1087 Language id exceeds 17 characters. 1088 Too many AX values were specified for the task. 8600 0502–407 1–21 Accessing Task Attributes Decoding Error Values with ATTRIBUTEMESSAGE The ATTRIBUTEMESSAGE procedure translates the HANDLEATTRIBUTES procedure result into a textual error message, suitable for display to a user. ATTRIBUTEMESSAGE also allows you to specify the language in which the error message should be displayed, an array to hold the error message, and the offset in the array where the error message should start. ATTRIBUTEMESSAGE places the error message at the requested location in the array, and updates the offset parameter to point to the end of the error message. The following is an ALGOL example of the way the WFLSUPPORT library declaration and the ATTRIBUTEMESSAGE procedure declaration look in a calling program: LIBRARY WFLSUPPORT (LIBACCESS=BYFUNCTION); REAL PROCEDURE ATTRIBUTEMESSAGE (ERRINFO,HOW4,LANGUAGE,LANGLENGTH,MSG,MSGOFFSET); REAL ERRINFO,HOW4, LANGLENGTH, MSGOFFSET; EBCDIC ARRAY LANGUAGE[*], MSG[*]; LIBRARY WFLSUPPORT; Alternatively, you can use the $INCLUDE compiler option in your program to automatically insert these declarations from the file *SYMBOL/ATTRIBUTE/ INTERPRETER/INTERFACE. It is a good idea to do so because this file also contains many defines that can be used with the ATTRIBUTEMESSAGE procedure. The ATTRIBUTEMESSAGE parameters are explained as follows: ERRINFO The calling program must store the encoded error description in this parameter. The format of this word must be the same as the procedure result returned by HANDLEATTRIBUTES. HOW4 The calling program can use this parameter to specify some aspects of the ATTRIBUTEMESSAGE interface. This parameter is divided into the following values: [47:04] AIMESSAGEVERSIONF This field stores the version number of the ATTRIBUTEMESSAGE interface. For the version supplied with this release, the value should be 0. [43:43] Reserved. The value of this field must be 0. [00:01] AIDISPLAYMESSAGEF If 1, ATTRIBUTEMESSAGE issues a DISPLAY statement that causes the resulting error message to appear in the MSG (Display Messages) system command display. (The DISPLAYONLYTOMCS task attribute can limit the display of the message.) If 0, the error message does not appear in the MSG display. 1–22 8600 0502–407 Accessing Task Attributes LANGUAGE The calling program can use this parameter to specify the language in which the error message is to be reported. Parsing of the language starts at element 0 of the LANGUAGE value, although leading blanks are ignored. Parsing ceases when a null character is encountered or when the number of characters specified by the LANGLENGTH parameter has been parsed. If the requested language is not supported on the system, a warning of AILANGNOTAVAILABLEV is reported and the system default language is used. LANGLENGTH The calling program can use this parameter to specify the maximum number of characters in the LANGUAGE parameter to be parsed, starting at element 0 of the LANGUAGE value. If LANGLENGTH is 0, the LANGUAGE parameter is ignored and the LANGUAGE task attribute of the calling process is used instead. MSG ATTRIBUTEMESSAGE returns the decoded error message in this parameter. You should take care that the array passed to this parameter is at least as long as the sum of the initial MSGOFFSET value and the value of the AIMSGLENGTHV define in *SYMBOL/ATTRIBUTE/INTERPRETER/INTERFACE. (The AIMSGLENGTHV define specifies the maximum length message that can be returned by the current version of ATTRIBUTEMESSAGE.) MSGOFFSET The calling program can use this parameter to specify the offset within the MSG array at which the decoded message should begin. ATTRIBUTEMESSAGE updates this parameter to return the offset of the null character that terminates the decoded message. Procedure Result ATTRIBUTEMESSAGE uses this parameter to report errors. The procedure result has the same format as the HANDLEATTRIBUTES procedure result, as previously described in this section. The format of the message returned in MSG, the message parameter, is as follows when the error pertains to a specific attribute (that is, when field AIATTNUMVALIDF of the ERRINFO parameter equals 1):Attribute " ": For example: Task Attribute "DECLAREDPRIORITY":Cannot recognize keyword If the error does not pertain to a specific attribute (that is, the AIATTNUMVALIDF field of the ERRINFO parameter equals 0), the message has the following format: Attribute Error: 8600 0502–407 1–23 Accessing Task Attributes Examples The following are examples of ALGOL programs that use the HANDLEATTRIBUTES and ATTRIBUTEMESSAGE procedures. Example 1: Setting Multiple Attributes. The following interactive program asks a user to supply task attribute assignments. The program then calls HANDLEATTRIBUTES to check the assignments for correctness and apply them to a task variable. If there are no errors, the program uses the task variable to initiate a task. If there are errors, the program uses ATTRIBUTEMESSAGE to display an error message. 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 1–24 BEGIN $INCLUDE ATTINT = "*SYMBOL/ATTRIBUTE/INTERPRETER/INTERFACE" TASK T; FILE TERM(KIND = REMOTE,FILEUSE=IO); EBCDIC ARRAY TEXT[0:419], LANG[0:119], MYPPBVAL[0:599]; REAL ERRORLOC, ATTERR, MSGERR, ERROFFSET, HOW1; PROCEDURE UTILRUN; EXTERNAL; WRITE(TERM,//,"PLEASE ENTER YOUR TASK EQUATIONS"); REPLACE TEXT BY 48"00" FOR 420; READ(TERM,420,TEXT); ATTERR := HANDLEATTRIBUTES(TEXT,0,0,HOW1,AIAPPLYV,T,ERRORLOC); IF ATTERR = 0 THEN CALL UTILRUN [T] ELSE BEGIN DISPLAY(TEXT); IF ERRORLOC.AIERROFFSETVALIDF = 1 THEN BEGIN REPLACE TEXT BY " " FOR ERRORLOC.AIERROFFSETF, "^", 48"00"; DISPLAY(TEXT); END; REPLACE TEXT BY "*" FOR 3; ERROFFSET := 3; REPLACE LANG BY T.LANGUAGE; MSGERR := ATTRIBUTEMESSAGE(ATTERR,1,LANG,0,TEXT,ERROFFSET); END; END. 8600 0502–407 Accessing Task Attributes The following is an example of the interaction between a user and this program. The user runs the program from a CANDE session. Because the user misspells the TASKVALUE task attribute, the program returns an error message and does not initiate the requested task. User: Response: Response: Response: User: Response: Response: Response: Response: Response: RUN ATTINT/TEST #RUNNING 9807 #? PLEASE ENTER YOUR TASK EQUATIONS NAME=OBJECT/ALGOL/TASK;TASKVALUW=R;PRIORITY=60; #9807 DISPLAY:NAME=OBJECT/ALGOL/TASK;TASKVALUW=R;PRIORITY=60; . #9807 DISPLAY: ^. #9807 DISPLAY:***Attribute error: Task attribute expected. #ET=27.6 PT=0.1 IO=0.1 Example 2: Inserting Attributes into an Object Code File Programs that initiate a compiler can cause attributes to be inserted into the resulting object code file. These attributes are applied at task initiation time whenever the object code file is executed. The following example shows how this is done using the HANDLEATTRIBUTES and ATTRIBUTEMESSAGE procedures. 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 8600 0502–407 BEGIN $INCLUDE ATTINT="*SYMBOL/ATTRIBUTE/INTERPRETER/INTERFACE." TASK CTASK; ARRAY SHEET[0:32]; EBCDIC ARRAY TEXT[0:299]; REAL ERRLOC, ATTERR, MSGERR, MSGOFFSET; PROCEDURE ALGOLCOMPILER(SHEET); ARRAY SHEET[*]; EXTERNAL; REPLACE TEXT BY "ALGOL NAME=*SYSTEM/ALGOL ON DISK;" "ALGOL FILE CARD (KIND=DISK, TITLE=ALGOL/TASK);" "ALGOL FILE CODE (KIND=DISK, TITLE=OBJECT/ALGOL/TASK);" "MAXPROCTIME=20;TASKVALUE=3;" "FILE IN=DAILY/DATA; FILE OUT(KIND=DISK,TITLE=OUTPUT)" 48"00"; ATTERR:=HANDLEATTRIBUTES(TEXT,0,0,1,AIAPPLYV,CTASK,ERRLOC); REPLACE SHEET BY 0 FOR 33 WORDS; SHEET[8] := VALUE(LIBRARY); % This statement specifies the % object code file disposition. SHEET[0] := 0 & 1[47:1]; CALL ALGOLCOMPILER(SHEET) [CTASK]; END. 1–25 Accessing Task Attributes In this example, the task assignments at lines 220 through 240 are applied to the compilation, because they are preceded by the keyword ALGOL. The task assignments at lines 250 through 260 are assigned to the resulting object code file, because they have no compiler name prefixing them. System Administrator Access to Task Attributes The system administrator can establish defaults and limits on the use of various task attributes by various users. These defaults and limits aid in preserving system security and managing workload. Assigning Task Attributes to Usercodes The system administrator can create usercode definitions in the USERDATAFILE by running either MAKEUSER or a DCALGOL program that calls the USERDATA function. By creating a usercode definition, the system administrator makes that usercode a legal value for the USERCODE task attribute. By suspending or removing the usercode definition, the system administrator can prevent processes from being initiated with that USERCODE task attribute value. The usercode definition can include one or more usercode attributes. Several of these usercode attributes provide values that can be inherited by task attributes of processes that run with that usercode. The following task attributes can be affected by the values of usercode attributes: ACCESSCODE, CHARGE, CLASS, CONVENTION, DEPTASKACCOUNTING, DESTNAME, FAMILY, FILEACCOUNTING, LANGUAGE, PRINTDEFAULTS, PRIORITY, SAVEMEMORYLIMIT, and TEMPFILELIMIT. These can be referred to as the usercode-related task attributes of a process. These task attributes are not always affected by their corresponding usercode attributes. The system administrator might not have included all the possible usercode attributes in the usercode definition. Furthermore, the usercode attributes are inherited only in the following circumstances: • Usercode attributes can be inherited by a WFL job that includes a USERCODE assignment in the job attribute list. Any usercode-related task attributes that are not assigned values in the job attribute list receive their values from the usercode attributes. • Usercode attribute values are inherited by CANDE or MARC session attributes at logon time. These session attributes are inherited by any processes initiated from the session, unless the user takes actions to change the session attributes or uses task equations to assign different task attributes to a process. (Refer to the discussion of tasking from interactive sources in the Task Management Programming Guide.) The usercode-related task attributes are also inherited from a parent by its offspring, unless specifically overridden. In this way, a usercode attribute can be propagated through an entire process family. For further details about the inheritance rules for usercode-related task attributes, refer to the descriptions of each of these task attributes in this manual. 1–26 8600 0502–407 Accessing Task Attributes Assigning Job Queue Attributes The system administrator can use job queue definitions to affect the task attributes of WFL jobs and their descendants. The job queue definitions are created by way of the MQ (Make or Modify Queue) system command. Each job queue definition can include job queue attributes that specify default or limiting values for task attributes of jobs run from that queue. The job queue attributes correspond mostly to task attributes that impose limits on resource usage, such as MAXPROCTIME and MAXIOTIME. For a summary of the effects of job queue attributes on task attributes, refer to the Task Management Programming Guide. System Access to Task Attributes The system software plays several roles in the assignment of task attribute values. The system provides values for task attributes in some cases, resolves conflicting assignments from various sources, and issues errors when an attempt is made to access an attribute incorrectly. The system software provides values for task attributes that have not been specifically assigned values by any of the other methods discussed in this section. The following subsections discuss the types of assignments that the system software makes. Providing Default Values The default value for a task attribute is the value it assumes if no other factors influence the task attribute value. For Boolean task attributes, the default is typically FALSE; for integer or real task attributes, 0; for string task attributes, a null string. The default values for all the task attributes are documented in this manual. Providing Inherited Values Inheritance is the transfer of a task attribute value from a process to one of its descendants. Different inheritance rules are applied to different task attributes; some can inherit values, but others cannot. The inheritance rules for each task attribute are included in the task attribute descriptions. Some of the basic task attributes that can be inherited are USERCODE, ACCESSCODE, CHARGE, and FAMILY. The inheritance properties save the programmer the trouble of having to assign these task attributes for each member of the process family. A single assignment to the job can be propagated to all its descendants. The term inheritance is also loosely applied to the transfer of values from job queue attributes, session attributes, or usercode attributes to a process. These types of inheritance are discussed under “Assigning Job Queue Attributes,” “Assigning Task Attributes to a Session,” and “Assigning Task Attributes to Usercodes” in this section. 8600 0502–407 1–27 Accessing Task Attributes Updating Task Attribute Values During process execution, the system automatically updates the values of certain task attributes. These task attributes return information about dynamic aspects of process status and history. One example is the STATUS task attribute, whose value is updated when the process becomes scheduled, suspended, resumed, or terminated. Other examples are the task attributes that record resource usage, including ACCUMPROCTIME and ACCUMIOTIME. These automatic updates make it possible to use these task attributes to monitor the current state of a process as it executes. Resolving Conflicting Values When a process is initiated, the system software evaluates the task attribute values submitted from the various sources discussed in this section. Where different sources have assigned conflicting values to the same task attribute, the system chooses the value submitted from the most dominant source. The rules used to determine which assignment is most dominant are called overwrite rules. The system applies different overwrite rules to different task attributes. However, most task attributes follow either standard overwrite rules or object code file dominant overwrite rules. The following subsections describe standard and object code file dominant overwrite rules for various types of processes. Each task attribute description includes information about the overwrite rules for that task attribute. The description states whether that task attribute follows standard or object code file dominant overwrite rules. For task attributes that follow irregular rules, the exact behavior of the task attributes is explained. Overwrite Rules for WFL Jobs The following are the various sources that can contribute to the initial task attribute values of a WFL job. The sources are listed in order from most dominant to least dominant according to standard overwrite rules. 1. Assignments in the job attribute list of the WFL job. 2. Usercode attributes, if a USERCODE assignment is included in the job attribute list of the WFL job. 3. Attributes of the parent process or job, if the WFL job was initiated from a user process or job. 4. Attributes of the CANDE or MARC session, if the WFL job was initiated from a session. 5. Job queue defaults. (By contrast, job queue limits do not affect the initial task attribute values of a WFL job. They simply affect the selection of a queue for the job.) 6. The task attribute default. 1–28 8600 0502–407 Accessing Task Attributes Task attributes cannot be assigned to the object code file of a WFL job because a WFL job has no object code file. Object code file dominant task attributes, when applied to a WFL job, follow the standard overwrite rules listed previously. The following is one illustration of the overwrite rules for WFL jobs. Suppose the job attribute list of a certain WFL job includes a PRINTDEFAULTS assignment, followed by a USERCODE assignment. Further, suppose that the usercode definition in the USERDATAFILE has a PRINTDEFAULTS value associated with it. In this case, only the PRINTDEFAULTS value specified in the job attribute list is used, even though the USERCODE assignment statement occurred last. Overwrite Rules for Session Tasks The following are the various sources that can contribute to the initial task attribute values of a task initiated from a CANDE or MARC session. The sources are listed in order from most dominant to least dominant according to standard overwrite rules. 1. Task equations appended to the initiation statement. 2. Inheritance from the attributes of CANDE or MARC sessions. 3. Assignments to the object code file. 4. The task attribute default. For an object code file dominant task attribute, the order of dominance is the same, except that item 3, assignments to the object code file, is moved to the head of the list. Overwrite Rules for Other Processes The following are the various sources that can contribute to the initial task attribute values of a process initiated from a WFL, ALGOL, or COBOL process. The sources are listed in order from the most dominant to the least dominant according to standard overwrite rules. 1. Task equations appended to the initiation statement. 2. Task attribute assignments to the task variable outside the task variable declaration. 3. Task attribute assignments in the task variable declaration. (This feature is supported only by WFL.) 4. Assignments to the object code file. 5. Inheritance from the parent. 6. The task attribute default. For an object code file dominant task attribute, the order of dominance is the same, except that item 4, assignments to the object code file, is moved to the head of the list. 8600 0502–407 1–29 Accessing Task Attributes Task Attribute Errors Task attribute errors result from an attempt to access a task attribute in an improper manner. The most basic errors are caught at compile time. These include type mismatches that occur, for example, from assigning a string to an integer-valued task attribute. Other task attribute errors are caught only at run time. For example, a run-time error can result from assigning a task attribute a value that is • Outside the allowed range. For example, if a particular attribute has a range of 1 to 9999, then an assignment of 10500 might cause an error. • Assigned at the wrong time. Some attributes can be assigned only before initiation; after initiation, assignment causes a run-time error. • Referring to a nonexistent entity. For example, an error results from assigning a DESTSTATION value that does not correspond to a valid Logical Station Number (LSN). • Inconsistent with a related attribute. For example, the USERCODE and CHARGE task attributes must be compatible. An attempt to read a task attribute can also result in an error in some cases. For example, if the private process bit of the OPTION task attribute is set, then other processes are prevented from reading (or assigning) the task attributes of this process. Some task attributes can cause a delayed error if assigned an invalid value. For example, the STATION task attribute can be assigned a value that refers to a nonexistent station. No error occurs until the process attempts to open a remote file. The process that attempted to access the task attribute can be referred to as the accessing process. The process whose task attribute was accessed can be referred to as the receiving process. The accessing process and the receiving process can be the same, for example, if the MYSELF task variable is used. If the attempted access is illegal, the accessing process incurs the error. If the accessing process is nonprivileged, almost all task attribute errors are fatal. If the accessing process is privileged or a message control system (MCS), then errors in accessing eventvalued or file-valued task attributes are generally fatal, but most other task attribute errors are not fatal. The ERROR task attribute of the receiving process stores the attribute number of the task attribute that was being accessed when the error occurred. The accessing process can read the ERROR task attribute of the receiving process to determine whether the last task attribute access was successful. The system erases the ERROR value each time it is read. TASKERROR is another task attribute that provides error information. Unlike ERROR, the TASKERROR value is not erased when it is read. For further details about these task attributes, refer to the ERROR and TASKERROR task attribute descriptions. 1–30 8600 0502–407 Accessing Task Attributes The operator or the user is notified of task attribute errors by the display of error messages for the process. Many task attribute error messages are documented in this manual in the “Run-Time Errors” part of the task attribute descriptions. All the errors documented in this manual are also included in the index for easy reference. The error messages that are displayed for a process are somewhat more informative if the object code file of the process was compiled with the LINEINFO compiler option set. This option causes the sequence number of each record in the source program to be stored in the object code file. When an error occurs, the sequence number of the statement that incurred the error is included at the end of the error message. If LINEINFO was not set, then error messages display the code address instead of the sequence number of the statement that incurred the error. You can interpret the code address by referring to the printout produced by the compiler if the LIST compiler option was set. For an example of this printout, refer to the discussion of process history in the Task Management Programming Guide. 8600 0502–407 1–31 Accessing Task Attributes 1–32 8600 0502–407 Section 2 Task Attribute Descriptions Task attributes provide a wide variety of options for process monitoring and control. Using task attributes, you can control various aspects of file usage, memory usage, resource usage, and communication with other processes or with operators. You can also use task attributes to determine the status of a process or discover how it terminated. The following sections include complete descriptions of all the task attributes that are supported for customer use as of the current ClearPath MCP release. Note that the file SYMBOL/ATTABLEGEN, which lists all the task attributes, includes several that are not documented in this manual. These undocumented task attributes are intended only for internal use. Attempts by customers to use these task attributes result in compile-time errors, run-time errors, or other undefined results. Choosing the Right Task Attribute At this time, about a hundred task attributes have been implemented. Each task attribute is designed to assume reasonable default or inherited values. Therefore, it is not necessary for you to learn the functions of all the task attributes. However, by studying the task attributes related to a particular area of process control, you can learn how to take advantage of the abilities the system provides in that area. Table 2–1, “Task Attribute Functional Groupings,” helps you find the task attributes relevant to each aspect of process control. For details about any of these task attributes, refer to the individual descriptions in this manual. Table 2–1. Task Attribute Functional Groupings Category Attribute Billing ACCESSCODE CHARGE USERCODE COMS direct window programs DCIINPUTEVENT Databases DATABASE DCITASKEVENT MAXWAIT 8600 0502–407 2–1 Task Attribute Descriptions Table 2–1. Task Attribute Functional Groupings Category Attribute Data comm AUTOSWITCHTOMARC DCIINPUTEVENT DCITASKEVENT DESTNAME DESTSTATION DISPLAYONLYTOMCS INHERITMCSSTATUS LANGUAGE MCSNAME ORGUNIT SOURCEKIND SOURCENAME SOURCESTATION STATION STATIONNAME SUPPRESSWARNING TANKING Debugging OPTION PDUMPTITLE TADS TASKFILE Files AUTORESTORE BACKUPFAMILY CURRENTDIRECTORY DEFAULTFILEGROUP FAMILY FILEACCESSRULE FILECARDS FILEGROUP FILEMASK LABELFORMAT OPTION (the AUTORM, BACKUP, TODISK and TOPRINTER options) 2–2 8600 0502–407 Task Attribute Descriptions Table 2–1. Task Attribute Functional Groupings Category Attribute History DEPTASKACCOUNTING ERROR FILEACCOUNTING HISTORY HISTORYCAUSE HISTORYREASON HISTORYTYPE OPTION PRIORHISTORY PRIORHISTORYCAUSE PRIORHISTORYREASON PRIORHISTORYTYPE STACKHISTORY STATUS STOPPOINT TASKERROR TASKFILE TASKWARNINGS Identification BOTTIMESTAMP JOBNUMBER MIXNUMBER MPID NAME 8600 0502–407 2–3 Task Attribute Descriptions Table 2–1. Task Attribute Functional Groupings Category Attribute Interprocess Communication ACCEPTEVENT AX EXCEPTIONEVENT EXCEPTIONTASK LOCKED MAXCARDS NETPATH OPTION (the “private process” option) OPTIONAL PARTNER PARTNEREXISTS REPORTBADINITIATE STATUS SW1 through SW8 TARGET TASKLIMIT TASKSTRING TASKVALUE TYPE Job Summaries JOBSUMMARY JOBSUMMARYTITLE NOJOBSUMMARYIO OPTION (the NOSUMMARY option) Libraries LIBRARY LIBRARYSTATE LIBRARYUSERS STATUS Localization CONVENTION COUNTRY LANGUAGE Logging DEPTASKACCOUNTING FILEACCOUNTING 2–4 8600 0502–407 Task Attribute Descriptions Table 2–1. Task Attribute Functional Groupings Category Attribute Memory Management CORE SAVEMEMORYLIMIT STACKLIMIT STACKSIZE Messages DISPLAYONLYTOMCS LANGUAGE SUPPRESSWARNING TASKWARNINGS Printer Output BACKUPFAMILY BDNAME DESTNAME DESTSTATION OPTION (the BACKUP, BDBASE, and NOSUMMARY options) PRINTDEFAULTS TASKFILE Remote Tasking HOSTNAME ITINERARY Resource Usage Data ACCUMIOTIME ACCUMPROCTIME ELAPSEDTIME INITPBITCOUNT INITPBITTIME OTHERPBITCOUNT OTHERPBITTIME TEMPFILEMBYTES 8600 0502–407 2–5 Task Attribute Descriptions Table 2–1. Task Attribute Functional Groupings Category Attribute Resource Usage Limits ELAPSEDLIMIT MAXIOTIME MAXLINES MAXPROCTIME MAXWAIT PRIORITY RESOURCE SAVEMEMORYLIMIT STACKLIMIT TASKLIMIT TEMPFILELIMIT WAITLIMIT Restarting Processes BRCLASS CHECKPOINTABLE RESTART RESTARTED Security ACCESSCODE BLOCKCREDENTIALS CREDENTIALS CREDENTIALSBASE FILEACCESSRULE FILEMASK GROUPCODE INHERITCREDENTIALS INHERITMCSSTATUS REALGROUPCODE REALUSERCODE SAVEDGROUPCODE SAVEDUSERCODE SUPPLEMENTARYGRPS USERCODE 2–6 8600 0502–407 Task Attribute Descriptions Table 2–1. Task Attribute Functional Groupings Category Attribute Task Attribute Usage APPLYLIST MYPPB ERROR TASKERROR Tape Usage LABELFORMAT RESOURCE WFL Jobs CLASS DECKGROUPNO FETCH STARTTIME Format of the Descriptions Each task attribute description includes information about certain characteristics of task attributes. The following subsections explain how these characteristics are presented in the task attribute descriptions. Name Each task attribute description begins with a heading that gives the name of the task attribute. An attribute is generally referred to by the same name from all the sources accessing it. The only exception to this rule occurs when several task attributes have synonyms and some sources recognize only the synonym. Refer to the “Synonym” discussion in this section. Type This part of the description indicates the type of data stored in the task attribute. Almost all task attributes fall into one of the following types: Boolean, event, file, integer, mnemonic, real, string, or task. A few other attributes, such as OPTION and RESOURCE, are of irregular types. For details about how to access these types from various languages, refer to “Programmer Access to Task Attributes” in Section 1, “Accessing Task Attributes.” Units This part of the description specifies, for either a real or an integer task attribute, the units measured by the attribute value: seconds, microseconds, words, and so on. 8600 0502–407 2–7 Task Attribute Descriptions Range This part of the description defines the legal values for the attribute. For example, a mnemonic attribute’s range consists of all the valid mnemonic values for the attribute. An integer attribute’s range defines the upper and lower limits of the integers allowed (for example, 1 through 256). In some cases, the range is defined by a metatoken, which is a word or phrase enclosed within angle brackets, as in the following example: . For such items, a railroad diagram is used to describe the exact range of the task attribute values. If a metatoken is referred to by only one task attribute description, then the railroad diagram for that metatoken is given in the description of that task attribute. Metatokens that are referred to by more than one task attribute description are defined in the following syntax discussion. For information about how to read these diagrams, refer to Appendix A, “Understanding Railroad Diagrams.” Syntax Any one of the 10 Arabic numerals 0 through 9 ÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ The hyphen character (-) ÄÄÂÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÀÄ " ÄÁÄ/17\Ä ÄÁÄ " ÄÙ ÚêÄÄÄÄÄÄÄÄ / ÄÄÄÄÄÄÄÄ¿ ÄÄÁÄ/12\Ä ÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ Any uppercase or lowercase letter, number, or special character that is not a quotation mark (") and that has a hexadecimal code greater than or equal to 4"40". ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÄÄÁÄ/17\ÄÂÄ ÄÂÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ ÄÄÄÄÄÄÄÄÄÄÄÄÙ 2–8 8600 0502–407 Task Attribute Descriptions ÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÄÄÂÄ ÄÂÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ ÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÀÄÁÄ/16\ÄÂÄ ÄÂÄÁÄÙ ÃÄ ÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄ ÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ ÄÄÄÄÄÄÄÙ ÚêÄÄÄÄÄÄÄÄ / ÄÄÄÄÄÄÄÄ¿ ÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÁÄ/12\Ä ÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄë ÃÄ ( ÄÄ ÄÄ ) Ä´ ÀÄ * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ëÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ ON ÄÄ ÄÙ The underscore character (_) Any one of the 26 uppercase characters A through Z. ÄÄÂÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÀÄ " ÄÁÄ/17\Ä ÄÁÄ " ÄÙ 8600 0502–407 2–9 Task Attribute Descriptions Default This part of the description lists the value that the task attribute assumes if the attribute does not inherit its value and is not assigned a value. For a read-only task attribute, this is the value the task attribute returns if interrogated before initiation. For many string task attributes, the default listed is null string. If this default value is read from Work Flow Language (WFL), a string of 0 length ("") is returned. However, if this default value is read from ALGOL or COBOL, a string that contains a single period (".") is returned. Read Time This part of the description defines whether and when the task attribute value can be interrogated by a program. The following are the possible read time values: • Anytime. The task attribute of the task variable can be read before the process is initiated, while it is running, or after termination. • Anytime; accurate after initiation. The task attribute can be read at any time, but does not receive its actual value until the process is initiated. • Anytime; accurate while in use. The task attribute can be read at any time, but is reset to its default when the process terminates. • Never. The task attribute cannot be read. Such an attribute is called write-only. • Only while in use. The task attribute can be read only for an in-use process. That is, the task attribute cannot be read before the process is initiated or after it is terminated. Note that inheritance, object code file assignments, and run-time assignments can cause the values of many attributes to change at initiation time. Therefore, any value that is read before initiation might not reflect the value that the process actually receives. 2–10 8600 0502–407 Task Attribute Descriptions Write Time This part of the description defines whether and when the task attribute can be assigned a value by a program. The following are the possible write time values: • Anytime. The task attribute of the task variable can be assigned before the process is initiated, while it is running, or after termination. • Anytime, effective before initiation. The task attribute value can be assigned at any time without incurring an error; however, assignments made after initiation are ignored. • Before initiation. The task attribute must be assigned as one of the following: • − An assignment to the task variable before the process is initiated. − A task equation appended to the statement that initiates the process. − An assignment in the job attribute list of a WFL job. The job attribute list immediately follows the job heading at the start of the job. These assignments are applied before the job begins execution. − An assignment to the object code file of the process. Such assignments can be appended to the WFL or CANDE COMPILE statements or can be made to an existing object code file by way of the WFL MODIFY statement. Never. The task attribute cannot be assigned. Such an attribute is called read-only. Inheritance This part of the description explains whether the task attribute inherits its value from the equivalent task attribute of an ancestor process or from a job queue attribute, session attribute, or usercode attribute. If a task attribute inherits from the parent, then both dependent processes and independent processes inherit that attribute, unless otherwise stated. Although inheritance rules are described definitively, inherited values can be overridden by several other types of explicit and implicit assignments. Refer to “Resolving Conflicting Values” in Section 1, “Accessing Task Attributes,” for more information. Fork() Inheritance This part of the description explains whether the task attribute inherits a value when the POSIX fork() statement initiates a process. For information about the fork() statement and the POSIX tasking model, refer to the POSIX User's Guide. 8600 0502–407 2–11 Task Attribute Descriptions Overwrite Rules This part of the description specifies which of the possible sources for task attribute values takes precedence at initiation time if there is a conflict. For each attribute, the overwrite rules are listed as standard or as object code file dominant or else described in detail. The standard overwrite rules and object code file dominant overwrite rules are discussed under “Resolving Conflicting Values” in Section 1, “Accessing Task Attributes.” Host Services This part of the description states whether the task attribute is supported by Host Services. If it is supported, then a process running on one host system may access this attribute of a process running on another host system. If the task attribute is not supported, then it is not possible to use the task attribute across hosts. For a centralized list of the task attributes supported by Host Services, refer to the discussion of tasking across multihost networks in the Task Management Programming Guide. Attribute Number This part of the description specifies the number used to identify the task attribute if an error occurs when a process accesses that attribute. If such an error occurs, the ERROR task attribute stores the attribute number of the task attribute that was accessed when the error occurred. A list of task attributes, in numeric order, is given in the discussion of the ERROR task attribute. 2–12 8600 0502–407 Task Attribute Descriptions Synonym This part of the description lists an alternate name for the task attribute, if there is one. Synonyms were implemented primarily because a more concise or more descriptive name was invented after the task attribute was originally implemented. While the “Name” part of the task attribute description gives the preferred name for the attribute, the “Synonym” part lists the nonpreferred name. Most languages allow you to use either name for the task attribute. Table 2–2 summarizes the preferred and nonpreferred names for the benefit of these users. Table 2–2. Task Attribute Synonyms Nonpreferred Name Preferred Name BACKUPDESTINATION DESTNAME BACKUPPREFIX BDNAME BLOCKCREDS BLOCKCREDENTIALS CHARGECODE CHARGE COREESTIMATE CORE DECLAREDPRIORITY PRIORITY FILE FILECARDS INHERITCREDS INHERITCREDENTIALS INITIATOR STATION IOTIME MAXIOTIME OPTIONS OPTION ORGHOSTNAME Deimplemented; use the leftmost part of the ITINERARY attribute value instead. PRINTLIMIT MAXLINES PROCESSIOTIME ACCUMIOTIME PROCESSTIME ACCUMPROCTIME QUEUE CLASS STACK STACKSIZE STACKNO MIXNUMBER TARGETTIME TARGET TASKATTERR ERROR VALUE TASKVALUE 8600 0502–407 2–13 Task Attribute Descriptions Restrictions Most task attributes can be accessed by ALGOL, COBOL74, COBOL85, and WFL. However, a few of the attributes are not available from one or more of these sources. For example, WFL cannot access event-valued task attributes. ALGOL and the COBOL languages cannot use the STARTTIME and FETCH task attributes, which are specific to WFL. These language restrictions are discussed in the “Restrictions” part of the attribute description. CANDE or Menu-Assisted Resource Control (MARC) commands can access a limited subset of the task attributes, although such restrictions are not documented in the attribute descriptions. For lists of the task attributes accessible from CANDE and MARC sessions, refer to the discussion of tasking from interactive sources in the Task Management Programming Guide. Explanation This part of the description summarizes the function of the task attribute. In many cases, relevant background information, helpful hints, or cautions are also provided. Examples Some of the task attribute descriptions include an “Examples” part, usually because they are unusual in some way. For examples of how to access most types of task attributes from programs, refer to “Programmer Access to Task Attributes” in Section 1, “Accessing Task Attributes.” Run-Time Errors This part of the description discusses task attribute access errors that occur when the program is executed rather than when it is compiled. In addition, some errors closely related to the task attribute are discussed. For example, the errors for exceeding resource limits are documented. Run-time errors are usually fatal for nonprivileged processes. However, they are not fatal for privileged processes, message control systems (MCSs), or tasking programs, unless specifically stated in the text. The index at the end of this manual includes page references for all the error messages that are discussed in this manual. 2–14 8600 0502–407 Section 3 Task Attributes A through E This section contains task attributes starting with the letters A through E. 8600 0502–407 3–1 ACCEPTEVENT ACCEPTEVENT Type Event Units Not applicable Range Default HAPPENED, NOT HAPPENED NOT HAPPENED Read Time Anytime Write Time Never Inheritance None Fork() Inheritance NOT HAPPENED Overwrite Rules None (read-only) Host Services Attribute Number Synonym Restrictions Not supported 100 None Not available in WFL Explanation The ACCEPTEVENT task attribute accesses a predeclared event called the accept event that is associated with each process. The accept event is caused by the system whenever an operator enters an AX (Accept) system command for the process. A program can conveniently use this attribute in a statement that waits on several events, one of which is the ACCEPTEVENT task attribute, as in the following ALGOL example: WAITANDRESET(EVNT1,EVNT2,MYSELF.ACCEPTEVENT); A process can also attach its ACCEPTEVENT to an interrupt, in which case the interrupt is executed whenever an operator enters an AX command for the process. A process can access only its own accept event. For example, a process cannot interrogate or wait on the value of the accept event of its parent. A process that attempts to do so receives a run-time error and terminates abnormally. Note: Assignments to the AX task attribute do not cause the ACCEPTEVENT task attribute. Only AX system commands cause the ACCEPTEVENT task attribute. For more information about the AX command and about events, refer to the Task Management Programming Guide. 3–2 8600 0502–407 ACCEPTEVENT Run-Time Errors NON-LOCAL ACCEPTEVENT A process attempted to access the ACCEPTEVENT task attribute of another process. The accessing process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 137 (NONLOCALACCEPTEVENTV). ACCEPTEVENT ATTRIBUTE IS READONLY A process attempted to assign an event variable to the ACCEPTEVENT task attribute. The process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 9 (ATTREADONLYV). 8600 0502–407 3–3 ACCESSCODE ACCESSCODE Type String Units Not applicable Range Default Null string Read Time Anytime Write Time Anytime Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Object code file dominant Supported 61 Synonym None Restrictions None Range ÄÄÂÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ / ÄÄ ÄÙ These are both identifiers. Explanation The ACCESSCODE task attribute affects the ability of a nonprivileged process to access files that have associated guard files. A guard file can specify that only processes with a certain accesscode are allowed to access the file. For information about guard files, refer to the MCP/AS Security Features Operations and Programming Guide. You must include an accesscode password in your assigned value for ACCESSCODE if the accesscode in your accesscode list has an associated password. However, you do not need to include an accesscode password in your assigned value for ACCESSCODE if the program you are accessing is either a tasking or an MCS program. The accesscode password is not usually included in the value returned when ACCESSCODE is read. However, if the ACCESSCODE value is read for a task variable that has not yet been initiated, then the ACCESSCODE value returned includes the password in an encoded form. 3–4 8600 0502–407 ACCESSCODE The system performs validation to determine whether the ACCESSCODE value for a process is compatible with the USERCODE task attribute value. When you assign ACCESSCODE to a task variable that is not in use, the system does not perform this validation until the task variable is used in a process initiation statement. When you assign an ACCESSCODE value to an in-use process, the system performs the validation immediately. The following is an outline of this validation: 1. If the process has a nonnull ACCESSCODE value, the system compares this value with the ACCESSCODELIST usercode attribute. If the ACCESSCODE value does not correspond to any of the accesscode/accesscode-password pairs in the ACCESSCODELIST, the system discontinues the process and displays a “SECURITY VIOLATION” message. 2. For a WFL job, the WFL compiler checks the usercode of the job to see if the ACCESSCODENEEDED usercode attribute is set. If it is, the WFL compiler gives a syntax error if the ACCESSCODE value of the job is null or does not correspond to any of the values in the ACCESSCODELIST usercode attribute. (A WFL job can receive an ACCESSCODE value at compile time either through inheritance or through an assignment in the job attribute list.) When you change the USERCODE value of an in-use process, the system changes the ACCESSCODE value to a null string. Therefore, when changing the USERCODE and ACCESSCODE values of an in-use process, you should make the USERCODE assignment first and the ACCESSCODE assignment second. Refer to “USERCODE” for details. The ACCESSCODE task attribute cannot be transferred using task-to-task transfer if the source task has been protected from modification, except by a tasking program. A task is protected from modification when it is passed as a parameter to a library change or approval procedure. While the change or approval procedure is active, access to the MYSELF intrinsic generates a protected task. Examples The following are examples of ACCESSCODE assignment and interrogation in WFL. The string variable STRVAR receives the value TDOT/ . TVAR (ACCESSCODE = TDOT / ALTO); STRVAR := TVAR (ACCESSCODE); The following is an example of ACCESSCODE assignment in ALGOL: REPLACE TVAR.ACCESSCODE BY "TDOT/ALTO."; The following is an example of ACCESSCODE assignment in COBOL74 or COBOL85: CHANGE ACCESSCODE OF MYSELF TO "TDOT/ALTO.". 8600 0502–407 3–5 ACCESSCODE Run-Time Errors ACCESSCODE ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign ACCESSCODE a value that did not follow the proper format of / . The process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). SECURITY VIOLATION An attempt was made to assign an accesscode that does not exist, does not match the accesscode password, or is not allowed for this usercode. The process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 29 (SECURITYERRORV). The following entry is made in the system log: “INVALID TASK ATTRIBUTE: ACCESSCODE”. 3–6 8600 0502–407 ACCUMIOTIME ACCUMIOTIME Type Real Units See below Range Default 0 to about 4.31E+68 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions 0 None (read-only) Supported 14 PROCESSIOTIME None Explanation The ACCUMIOTIME task attribute records the accumulated I/O time for the process. The process is discontinued if the value of the ACCUMIOTIME task attribute reaches the same value as the MAXIOTIME task attribute. Refer to the MAXIOTIME description for details. If ACCUMIOTIME is accessed through Host Services, bit 47 will always be 0 (zero). Units When accessed from WFL, the ACCUMIOTIME value is expressed in units of seconds. When accessed from other languages, the value is expressed in units of 2.4 microseconds. 8600 0502–407 3–7 ACCUMPROCTIME ACCUMPROCTIME Type Real Units See below Range Default 0 to about 4.31E+68 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number Synonym Restrictions None (read-only) Supported 13 PROCESSTIME None Explanation The ACCUMPROCTIME task attribute records the accumulated processor time for the task. The process is discontinued if the value of the ACCUMPROCTIME task attribute reaches the same value as the MAXPROCTIME task attribute. Refer to the MAXPROCTIME description for details. If ACCUMPROCTIME is accessed through Host Services, bit 47 will always be 0 (zero). Units When accessed from WFL, the ACCUMPROCTIME value is expressed in units of seconds. When accessed from other languages, the value is expressed in units of 2.4 microseconds. 3–8 8600 0502–407 APPLYLIST APPLYLIST Type Boolean Units Not applicable Range TRUE, FALSE Default None Read Time Anytime Write Time Before initiation Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent None Not supported 116 Synonym None Restrictions None Explanation The APPLYLIST task attribute, if set, causes the system to apply task equations that were previously placed in the MYPPB task attribute of the process for temporary storage. The MYPPB value can store task equations applied to a process, or task equations intended to be applied to an object code file. Setting APPLYLIST to TRUE causes the system to apply only those equations in MYPPB that are intended for a process. For further information, refer to the discussion of the MYPPB task attribute. Run-Time Errors MYPPB IS EMPTY, NOTHING TO APPLY An attempt was made to set the APPLYLIST attribute to TRUE while there were no attribute assignments stored in the MYPPB task attribute. The assignment is ignored, but the assigning process continues executing normally. CANNOT APPLY : PPB IS FOR CODEFILE This warning occurs if the APPLYLIST attribute is set to TRUE when the MYPPB task attribute of the compiler process stores only attributes intended for the resulting object code file. The assignment is ignored, but the assigning process continues executing normally. 8600 0502–407 3–9 AUTORESTORE AUTORESTORE Type Boolean Units Not applicable Range TRUE, FALSE Default See below Read Time Anytime Write Time Anytime Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Standard Not supported 123 Synonym None Restrictions None Explanation The AUTORESTORE task attribute specifies how the system should respond if the process attempts to open a disk file that is not present on the requested family. If AUTORESTORE is TRUE when a process encounters a NO FILE condition for a disk file, then the system might initiate a dependent process called ARCHIVE/AUTORESTORE to copy the missing file from backup tape to disk. The system starts ARCHIVE/AUTORESTORE if all of the following conditions are true: 3–10 • The AUTORESTORE system option has a value of either YES or DONTCARE. An operator can use the AUTORESTORE (Archiving Autorestore Option) system command to assign this option. • The reference to the file would normally produce a “NO FILE” RSVP message if the file is not resident. Thus, for example, interrogating the RESIDENT file attribute does not cause an automatic restore to take place. • The archive directory references a backup tape that contains a backup copy of the requested file. The archive directory records the location of files backed up through the WFL ARCHIVE command. • The FILENAME file attribute of the requested file specifies the same usercode as the USERCODE attribute of the requesting process. • If the file is a cataloged file, then the generation of the file being requested matches the file listed in the archive directory. • The process is not attempting to open a logical file that has the file attribute DUPLICATED = TRUE. 8600 0502–407 AUTORESTORE If the system does initiate an ARCHIVE/AUTORESTORE, the process requesting the file remains in an active state. On the other hand, ARCHIVE/AUTORESTORE becomes suspended and appears in the W (Waiting Mix Entries) system command display. The RSVP message identifies the backup tape that the operator should mount. When the operator mounts the requested tape, ARCHIVE/AUTORESTORE copies the missing file back to disk. The process that originally tried to use the file then resumes execution. If the AUTORESTORE task attribute is FALSE, the system does not initiate ARCHIVE/AUTORESTORE. Instead, the system suspends the process and displays a “NO FILE ” or a “NO FILE FIND ON “ RSVP message. For an overview of the system archiving and AUTORESTORE features, refer to the System Administration Guide. Default If the AUTORESTORE system option is set to NEVER or DONTCARE, then the default value of the AUTORESTORE task attribute is FALSE. If the AUTORESTORE system option is set to YES, then the default value of the AUTORESTORE task attribute is TRUE. If the value of the AUTORESTORE system option is changed while the process is running, the change has no effect on the value of the task attribute AUTORESTORE. 8600 0502–407 3–11 AUTOSWITCHTOMARC AUTOSWITCHTOMARC Type Boolean Units Not applicable Range TRUE, FALSE Default FALSE Read Time Anytime Write Time Anytime Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Object code file dominant Not supported 102 Synonym None Restrictions None Explanation The AUTOSWITCHTOMARC task attribute affects only processes initiated by a MARC session and that open a remote file. For these processes, AUTOSWITCHTOMARC specifies whether the originating screen is automatically displayed when the process terminates. If AUTOSWITCHTOMARC is TRUE, the originating screen is displayed immediately upon termination of the process. If AUTOSWITCHTOMARC is FALSE, the remote file screen continues to be displayed after process termination, until the user presses the XMIT or SPCFY key. If this task attribute is assigned more than once, only the last assignment before process termination has effect. For more information about MARC tasking and remote files, refer to the discussion of tasking from interactive sources in the Task Management Programming Guide. 3–12 8600 0502–407 AX AX Type String Units Not applicable Range Default Null string Read Time Never Write Time Anytime Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number See below Not supported 129 Synonym None Restrictions None Range A string of up to 255 EBCDIC characters. Explanation and Overwrite Rules The AX task attribute passes a string of text to a process. The receiving process can read the AX string by executing an ACCEPT statement. The ACCEPT statement returns an AX string, which is a string specified for a process by either an AX (Accept) system command or an AX task attribute assignment. If more than one AX string is submitted for a process before the process performs its next ACCEPT statement, then the system must either queue the extra AX strings or discard them. You can use the QUEUEDAX option of the SYSOPS (System Option) system command to enable or disable queuing of AX strings. If QUEUEDAX is set, then the system queues up to 250 AX strings for a process. If QUEUEDAX is reset, then each AX command overwrites any pending AX string for a process. QUEUEDAX is set TRUE by default on ClearPath systems. When multiple AX strings are queued for a process, the system stores the strings in chronological order. Each ACCEPT statement reads the oldest AX string queued for the process. 8600 0502–407 3–13 AX The system passes each AX string to the next ACCEPT statement performed by the process stack, regardless of whether the process stack is executing library program code or user program code. Therefore, when you write ACCEPT statements in exported library procedures, remember that the ACCEPT statement might receive an AX string that was previously queued for the user process. Examples The AX task attribute can assign a string value on a WFL RUN statement: RUN OBJECT/PROGA;AX="1" This causes an AX string with a length of one character to be queued for the process. In WFL, a RUN statement can include multiple AX task equations. If the QUEUEDAX system option is set, then the system queues all the AX assignments for later use by the program as in the following example: RUN OBJECT/PROGA; AX = "DELTA"; AX = "EPSILON"; AX = "GAMMA"; If QUEUEDAX is not set, then the system passes only the last AX assignment to the program. The following statement shows the ALGOL syntax for AX assignments: REPLACE T.AX BY "DELTA"; In COBOL74 and COBOL85, the equivalent statement has the following form: CHANGE ATTRIBUTE AX OF T TO "DELTA". Because AX assignments do not cause the ACCEPTEVENT, a program cannot use an interrupt to detect the presence of AX strings supplied through task equation. Instead, a program can include conditional ACCEPT statements to process the AX task equations, as in the following ALGOL example: 100 110 120 130 140 150 160 170 180 190 200 3–14 BEGIN ARRAY A[0:14]; INTERRUPT INT; BEGIN ACCEPT (A); DISPLAY (A); REPLACE POINTER(A) BY 0 FOR 15 WORDS; END; ATTACH INT TO MYSELF.ACCEPTEVENT; WHILE ACCEPT(A) DO DISPLAY(A); ENABLE INT; 8600 0502–407 AX 210 WAITANDRESET (MYSELF.EXCEPTIONEVENT); 220 END. In this example, the statement at line 190 detects AX strings submitted through task equations. The interrupt attached at line 180 detects AX system commands. Note that this example does not detect any assignments to the AX task attribute made after the program is initiated. Run-Time Errors AX ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign an AX string value that was more than 255 characters long or that was not terminated by a null character. The assigning process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). AX ATTRIBUTE IS WRITEONLY A process attempted to read an AX message. AX messages can only be read through the ACCEPT mechanism. The process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 129 (ATTWRITEONLYV). 8600 0502–407 3–15 BACKUPFAMILY BACKUPFAMILY Type String Units Not applicable Range See below Default See below Read Time Anytime Write Time Before initiation Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Object code file dominant Not supported 63 Synonym None Restrictions None Explanation The BACKUPFAMILY task attribute specifies the disk family where the system should place print and punch backup files created by the process. The BACKUPFAMILY task attribute affects only backup files with a BACKUPKIND file attribute value that is equated to DLBACKUP by the SB (Substitute Backup) system command. For an illustration of this restriction, refer to the examples at the end of this subsection. The effect of the BACKUPFAMILY task attribute can be overridden for individual backup files by the FAMILYNAME print attribute. For an introduction to printing issues, refer to the discussion of controlling process I/O usage in the Task Management Programming Guide. Default The BACKUPFAMILY value defaults to the current DL BACKUP family defined by the DL (Disk Location) system command. Range The BACKUPFAMILY value typically must conform to the syntax for as defined under “Format of the Descriptions” in this section. However, when BACKUPFAMILY is assigned by an MCS or tasking program, the value can optionally be in standard form. For an explanation of standard form, refer to the description of the DISPLAYTOSTANDARD function in the Unisys e-@ction ClearPath 3–16 8600 0502–407 BACKUPFAMILY Enterprise Servers DCALGOL Programming Reference Manual. The system extracts the first identifier from the standard form value and uses this as the BACKUPFAMILY. Inheritance A process inherits its parent's BACKUPFAMILY value if the parent has a non-null value and the process is running on the same host as its parent. If you explicitly assign a null string to the BACKUPFAMILY attribute, the attribute receives the DL BACKUP value in effect at process initiation. The DL BACKUP setting is specified by the DL (Disk Location) system command. A process initiated from a MARC session receives the BACKUPFAMILY value associated with that session. Examples Suppose an operator has used the SB (Substitute Backup) system command to create the following SB settings for the system: SB DISK = DLBACKUP PACK = PACK TAPE = TAPE Suppose also that an operator has used the DL (Disk Location) system command to create the following DL BACKUP setting for the system: DISK LOCATION: BACKUP ON DBFAM The following WFL job creates a backup file: 100 ?BEGIN JOB; 110 BACKUPFAMILY = SYSPK; 120 FILE F(KIND=PRINTER,BACKUPKIND=DISK); 130 OPEN(F); 140 LOCK(F); 150 ?END JOB Line 120 of the WFL job specifies a BACKUPKIND value of DISK; but the SB setting equates DISK to DLBACKUP. The DL BACKUP setting in turn is DBFAM. Thus, by default the printer backup file would have been created on DBFAM. However, the BACKUPFAMILY statement at line 110 overrides the DL BACKUP family and causes the backup file to be created on SYSPK instead. 8600 0502–407 3–17 BACKUPFAMILY Now suppose that line 120 of the WFL job is changed to specify a BACKUPKIND of PACK for the backup file. The following is the modified WFL job: 100 ?BEGIN JOB; 110 BACKUPFAMILY = SYSPK; 120 FILE F(KIND=PRINTER,BACKUPKIND=PACK); 130 OPEN(F); 140 LOCK(F); 150 ?END JOB This version of the job specifies a BACKUPKIND value of PACK. The SB setting equates PACK to PACK, and the backup file is created on the family called PACK. The system ignores the BACKUPFAMILY assignment in the WFL job because BACKUPFAMILY affects only backup files that are redirected to the DL BACKUP family by an SB substitution. Run-Time Error BACKUPFAMILY ATTRIBUTE MAY ONLY BE SET BY AN MCS OR TASKING PROGRAM A process that was not an MCS or tasking program attempted to assign a value to BACKUPFAMILY. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 54 (ONLYMCSTASKINGV). 3–18 8600 0502–407 BDNAME BDNAME Type String Units Not applicable Range Default Null string Read Time Anytime Write Time Anytime Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Synonym Restrictions Standard Supported 29 BACKUPPREFIX None Range ÚêÄÄÄÄÄÄÄÄ / ÄÄÄÄÄÄÄ¿ ÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÁÄ/9\Ä ÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄ ( ÄÄ ÄÄ ) Ä´ ÀÄ * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Explanation The BDNAME task attribute causes backup files declared by the process to be permanently saved under the file name prefix specified by the BDNAME value and prevents the backup files from being automatically queued for printing. The user can print out the backup files later by using a WFL PRINT statement. If BDNAME is used by a nonprivileged process, backup files are saved under the usercode of the process that declares the file. An error results if a nonprivileged process attempts to assign a BDNAME value that includes a usercode different from the process usercode, or an asterisk (*) in place of a usercode. A privileged process can include a different usercode or an asterisk (*) at the start of the BDNAME value and thus create backup files that do not have the same usercode as the process. The titles of the backup files follow the normal backup file titling conventions, except that a usercode or asterisk (*) and the BDNAME value replaces the usual prefix of *BD or *BP. For a discussion of backup file titling conventions, refer to the discussion of controlling process I/O usage in the Task Management Programming Guide. 8600 0502–407 3–19 BDNAME File names can be a maximum of 12 nodes long, not counting the usercode. However, the BDNAME value should not be that long because the system adds two or more nodes to the BDNAME value when constructing the file title. In most cases, the system adds three nodes to the title. If the BDNAME value is changed after initiation, only backup files opened after the change are affected. Note that the BDNAME task attribute affects only backup files declared by the process. Any backup files written to by the process, but declared by another process, are not affected. When originally implemented, the BDNAME task attribute had effect only if the BDBASE option of the OPTION task attribute was set. This is no longer the case; whether the BDBASE option is set or not set has no effect on the BDNAME task attribute. The BDNAME task attribute has no effect on the job summary. For information about saving a copy of the job summary on disk, refer to the description of the JOBSUMMARYTITLE task attribute. The effects of the BDNAME task attribute can also be achieved using several print attributes. For information about the interaction of BDNAME and these print attributes, refer to the discussion of controlling process I/O usage in the Task Management Programming Guide. Run-Time Errors BDNAME ATTRIBUTE IS READONLY ON ACTIVE TASK A process attempted to change the BDNAME value of another in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYONACTIVEV). BDNAME ATTRIBUTE INCORRECT SYNTAX BDNAME was assigned a value that does not conform to the backup prefix format. The assigning process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). FILE OPEN ERROR: TOO MANY NAMES This error occurs when the backup file is opened if the BDNAME value caused the backup file title to have more than the allowed number of nodes. The process is discontinued with HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) and HISTORYREASON = 18 (GTR14ERR). 3–20 8600 0502–407 BLOCKCREDENTIALS BLOCKCREDENTIALS Type Boolean Units Not applicable Range TRUE, FALSE Default FALSE Read Time Anytime Write Time See below Inheritance From parent Overwrite Rules Host Services Attribute Number Synonym Restrictions Standard Not supported 146 BLOCKCREDS None Explanation The BLOCKCREDENTIALS attribute is used by a task to temporarily inhibit use of its credentials. This is useful, for example, during the execution of external or library functions. Any procedure called while BLOCKCREDENTIALS is TRUE does not have access to the stack’s credentials. Such procedure is also unable to set BLOCKCREDENTIALS to FALSE, because the stack level from which BLOCKCREDENTIALS was set to TRUE is recorded. All processes initiated while credentials of the task owner are blocked do not inherit credentials. All processes initiated with their own BLOCKCREDENTIALS set to TRUE inherit credentials but cannot use them until the task’s parent sets the value to FALSE. For information about credential management and Generic Security Service Application Program Interface (GSS-API), see Appendix G in the Security Administration Guide. Write Time BLOCKCREDENTIALS may be updated before initiation by the parent of the task or, after initiation, by the task itself. If BLOCKCREDENTIALS is updated by the task itself, it may be set to • TRUE only if the current value is FALSE. • FALSE only if it was previously set to TRUE from an equal or higher stack offset (deeper nested program code location). 8600 0502–407 3–21 BLOCKCREDENTIALS Example LIBRARY LIB; PROCEDURE PROC; LIBRARY LIB; MYSELF.BLOCKCREDENTIALS := TRUE; PROC; %% Ensure that PROC cannot use my client credentials MYSELF.BLOCKCREDENTIALS := FALSE; 3–22 8600 0502–407 BOTTIMESTAMP BOTTIMESTAMP Type Real Units Not applicable Range Default See “Explanation” below 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules None Host Services Attribute Number Supported 159 Synonym None Restrictions None Explanation The BOTTIMESTAMP task attribute is a read-only attribute that returns the date and time the task began execution in the following format: 0 & (JULIANDATE-70000) [47:16] & (TIME(11) DIV 16) [31:32] For a task that has not been initiated or that has terminated, this attribute returns 0 (zero). Note: This Julian date is in YYYDDD format where the value changes from 099365 to 100001 at midnight on December 31, 1999. 8600 0502–407 3–23 BRCLASS BRCLASS Type Mnemonic Units Not applicable Range Default See “Explanation” below NOBR Read Time Anytime Write Time Anytime Inheritance From parent Fork() Inheritance Overwrite Rules Host Services Attribute Number None Object code file dominant Not supported 83 Synonym None Restrictions None Explanation The BRCLASS task attribute controls how the process responds to a BR (Breakout) system command. The operator can use the BR command to initiate a checkpoint for an in-use process. For a general discussion of checkpointing, refer to the discussion of restarting jobs and tasks in the Task Management Programming Guide. This attribute is meaningful only if the CHECKPOINTABLE attribute is TRUE. Refer to the CHECKPOINTABLE description for details. The following are the possible values and their meanings: 3–24 Mnemonic Value Integer Value NOBR 0 The operator is not allowed to initiate a checkpoint for this process. ONCEONLY 1 The operator can initiate a checkpoint for this process. The process is not allowed to continue after the checkpoint. The recovery files created by an operator BR (Breakpoint) system command are removed as soon as the RERUN statement has completed. This restriction prevents a process from being restarted more than once from this checkpoint. Meaning 8600 0502–407 BRCLASS Mnemonic Value Integer Value MULTIPLE 2 Meaning The operator can initiate a checkpoint for this process. The process is allowed to continue execution after the checkpoint. Note: The MULTIPLE value has effect only if it is set for the parent WFL job as well as for the checkpointed process. The BRCLASS attribute is reset to NOBR when the process terminates. Example In the following WFL job, the job attribute list assigns the job a BRCLASS value of MULTIPLE. This value is inherited by OBJECT/PROGDATA, which becomes eligible for multiple operator checkpoints. ?BEGIN JOB; BRCLASS = MULTIPLE; RUN OBJECT/PROGDATA; ?END JOB Run-Time Error BRCLASS ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign BRCLASS either an invalid mnemonic or a value less than 0 or greater than 2. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). 8600 0502–407 3–25 CHARGE CHARGE Type String Units Not applicable Range Default Null string Read Time Anytime Write Time See below Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions From parent Standard Supported 42 CHARGECODE None Range ÚêÄÄÄÄÄÄÄÄ / ÄÄÄÄÄÄÄÄ¿ ÄÄÁÄ/12\Ä ÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ Explanation The CHARGE task attribute contains the charge code of the process. The system logs the charge code information for each process. This information can be used by a log analysis program that computes billing charges at a site. For further information about billing, refer to the System Administration Guide. When a process is initiated, the system examines the USERCODE task attribute of the process and examines the usercode definition in the USERDATAFILE to determine whether the CHARGEREQ usercode attribute is set. If not, any CHARGE task attribute is accepted. If CHARGEREQ is set, the system performs the following steps to determine whether the CHARGE task attribute value is legal for the process. Remember when reading these steps that the system applies any inherited value to the process before making the following checks: 3–26 • If the CHARGE value of the process is null, the system discontinues the process. • If the CHARGE value of the process is not null, the system compares the value with the CHARGECODE usercode attribute. If the CHARGE value does not correspond to any of the values stored in the CHARGECODE usercode attribute, the system discontinues the process. 8600 0502–407 CHARGE • For a WFL job, the WFL compiler checks the usercode of the job to see if the CHARGEREQ usercode attribute is set. If it is, the WFL compiler gives a syntax error if the CHARGE value of the job is null. The WFL compiler also gives a syntax error if the CHARGE value of the job is not null and does not correspond to any of the values in the CHARGECODE usercode attribute. (A WFL job can receive a CHARGE value at compile time either through inheritance or through an assignment in the job attribute list.) Write Time In general, CHARGE can be assigned only before a process is initiated. However, processes with MCS or tasking privileges can change the CHARGE value at any time. Note that the system validates the CHARGE value only when a process is initiated. Therefore, an MCS or tasking process should check the validity of a new CHARGE value before assigning it to any running process. If an MCS or tasking process assigns an invalid CHARGE value to a running process, the operating system allows that process to run with a CHARGE that would not normally be permitted. Inheritance A process inherits the CHARGE value of its parent. For library processes initiated by the library linkage mechanism, the USERCODE attribute inherits the USERCODE value of the process that is linking to the library. The system administrator can assign one or more charge codes to the CHARGECODE attribute of a usercode. If the system administrator also sets the USEDEFAULTCHARGE attribute of the usercode, then MARC or CANDE sessions receive the first charge code from the CHARGECODE usercode attribute at log-on time. Otherwise, MARC or CANDE requests the user to enter a charge code. Processes initiated from a MARC or CANDE session inherit the CHARGE value of the session. A WFL job inherits a charge code from the usercode definition if all the following conditions are true: • The job attribute list includes a USERCODE assignment or inherits the usercode of the initiating source (such as an ODT that has a terminal usercode). • The job attribute list did not include a CHARGE assignment and the job was submitted from a source that had no CHARGE value associated with it. (An ODT is an example of such a source.) • The system administrator has assigned CHARGECODE and USEDEFAULTCHARGE attributes to the usercode. 8600 0502–407 3–27 CHARGE Run-Time Errors CHARGECODE ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign CHARGE a value that was not in simple name format. If the assigning process is nonprivileged, it is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). CHARGECODE READONLY ON ACTIVE TASK, NOT CHANGED An attempt was made to change the CHARGE value after initiation. This is a warning message rather than an error message. The process continues normally, but the requested change is not made. INVALID CHARGECODE The charge code assigned at initiation is not allowed for this usercode. The new process (not the assigning process) is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 14 (INVALIDCHARGECODEV). 3–28 8600 0502–407 CHECKPOINTABLE CHECKPOINTABLE Type Boolean Units Not applicable Range TRUE, FALSE Default FALSE Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Not supported 82 Synonym None Restrictions None Explanation The CHECKPOINTABLE task attribute specifies whether a checkpoint can be initiated for this process. A value of TRUE indicates that a checkpoint can be initiated for this process. This value does not guarantee that the checkpoint will be executed successfully. The checkpoint can fail because of factors that are not reflected by the CHECKPOINTABLE value. A value of FALSE indicates that the task is not allowed to execute a checkpoint. The value of this attribute is computed at the time it is accessed. The system evaluates the following conditions once. If any are true, the system sets the CHECKPOINTABLE attribute to FALSE for the life of the process: • The process is an MCS or a process initiated by an MCS. This category includes processes initiated from sessions. • The process is a frozen library. (For information about libraries, refer to the Task Management Programming Guide.) • The process was not initiated by a RUN statement in a WFL job. • The code was not compiled by one of the following compilers: − ALGOL, DCALGOL, DMALGOL, or BDMSALGOL − COBOL74 or BDMSCOBOL 8600 0502–407 3–29 CHECKPOINTABLE In addition, at every access of the attribute the system checks to see whether the process has any offspring. If so, CHECKPOINTABLE returns a value of FALSE. Another task attribute related to checkpointing, called BRCLASS, is discussed elsewhere in this manual. For more information about checkpointing, refer to the discussion of restarting jobs and tasks in the Task Management Programming Guide. 3–30 8600 0502–407 CLASS CLASS Type Integer Units Not applicable Range 0 through 1023 Default See below Read Time Anytime Write Time See below Inheritance See below Fork() Inheritance 0 Overwrite Rules See below Host Services Supported Attribute Number Synonym Restrictions 34 QUEUE None Explanation For WFL jobs or descendants of WFL jobs, the CLASS task attribute specifies the number of the job queue from which the WFL job is initiated. For processes not descended from WFL jobs, CLASS stores a value of 0. The CLASS task attribute is only one of many factors affecting the job queue chosen for a WFL job. The system compares any user-specified CLASS value with the job queue definitions and terminates the WFL job if the specified CLASS is not appropriate. The system also terminates the WFL job if its CLASS value is not allowed by the CLASSLIST, ANYOTHERCLASSOK and CLASS attributes of the WFL job's usercode. If a CLASS value is not explicitly assigned, the system selects a queue for the WFL job. The job queue selection depends on such factors as the system default queue specification, the usercode definition, and any resource limits set for the job queue. For a detailed explanation of job queues, refer to the System Administration Guide. Write Time The CLASS task attribute can be assigned only in WFL jobs. Within a WFL job, CLASS can be assigned only in the job attribute list. Overwrite Rules This attribute can be assigned only in the job attribute list of a WFL job. For information about job attribute lists, refer to the Work Flow Language (WFL) Programming Reference Manual. 8600 0502–407 3–31 CLASS Inheritance A WFL job inherits a CLASS value from the usercode definition if all the following conditions are true: • The job attribute list includes a USERCODE assignment or the job has inherited the usercode of the initiating source (such as an ODT that has a terminal usercode). • The job attribute list did not include a CLASS assignment, and the job was submitted from a source that had no CLASS value associated with it. An example of such a source is an ODT that has no UQ (Unit Queue) assignment and no terminal usercode. • The system administrator has assigned a CLASS value to the usercode. Descendants of WFL jobs inherit the CLASS value of the job. However, because only WFL jobs go through the job queue mechanism, the CLASS value has no effect on the descendants. Example The following is an example of a CLASS assignment in the job attribute list of a WFL job: ?BEGIN JOB; CLASS = 2; RUN OBJECT/X; ?END JOB 3–32 8600 0502–407 CONVENTION CONVENTION Type String Units Not applicable Range Default See below Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Supported 120 Synonym None Restrictions None Range ÄÄ ÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÀÄÁÄ/16\ÄÂÄ ÄÂÄÁÄÙ ÀÄ ÄÄÄÄÄÄÄÄÄÄÄÄÙ Explanation The CONVENTION task attribute specifies the date, time, and currency conventions used by a process. This task attribute affects only processes that use the CENTRALSUPPORT library to handle conventions for localization. When a process invokes a conventions procedure in the CENTRALSUPPORT library, the process can optionally use parameters to specify the convention that is desired. If the process does not request a convention in the procedure parameters, the CONVENTION task attribute of the user process determines the convention that is used. Changes made to the value of this attribute take effect immediately. That is, subsequent calls to the conventions procedures in CENTRALSUPPORT use the new value of CONVENTION. However, if the job attribute list also contains a PRINTDEFAULTS assignment, the PRINTDEFAULTS attribute of the usercode is ignored. For further information about the CENTRALSUPPORT library, refer to the Unisys e-@ction ClearPath Enterprise Servers MultiLingual System Administration, Operations, and Programming Guide. 8600 0502–407 3–33 CONVENTION Default and Inheritance A process inherits the CONVENTION value of its parent. The default convention is ASERIESNATIVE. If you purchase your system through an international subsidiary, they may have already altered the CENTRALSUPPORT library to provide a different default convention. The system administrator can establish a different default convention value for the whole system by using the SYSOPS (System Options) system command. The system administrator can selectively override the system default convention by including a CONVENTION attribute in usercode definitions in the USERDATAFILE. This CONVENTION value does not directly affect processes, but it is inherited by MARC and CANDE sessions with that usercode. The user can also use the MARC or CANDE CONVENTION command to change the convention of a session. Processes initiated from the session inherit the current convention of the session. The CONVENTION attribute of a usercode also is inherited by WFL jobs that are assigned that usercode in the job attribute list. Example Processes that differ only in the conventions they use can benefit from this task attribute. For example, a company might have a program that needs to print invoices for customers in several different countries. The invoices have to be printed using the conventions of each country. The following ALGOL statements run the program three times, assigning a different CONVENTION value to each run: REPLACE T1.CONVENTION BY "UNITEDKINGDOM1."; CALL DONOTHING [T1]; REPLACE T2.CONVENTION BY "FRANCELISTING."; CALL DONOTHING [T2]; REPLACE T3.CONVENTION BY "EUROPEANSTANDARD."; CALL DONOTHING [T3]; Each of these processes calls the appropriate CENTRALSUPPORT library procedures to format date, time, and currency information while generating invoices appropriate for each country. 3–34 8600 0502–407 CORE CORE Type Integer Units Words Range Default 0 to 1048575 See below Read Time Anytime (except in WFL) Write Time See below Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions From parent Standard Not supported 2 COREESTIMATE See below Explanation The CORE task attribute provides an estimate of the amount of main memory that a process needs for code and data areas in order to execute efficiently. The system schedules a new process if the CORE value exceeds the amount of available memory. You can override the default core estimate by assigning a different value to this task attribute. For more information, refer to the discussion of controlling process memory usage in the Task Management Programming Guide. Default The default value of CORE is taken from compiler and operating system core estimates that are stored in the object code file. For information about these estimates, refer to the discussion of process memory usage in the Task Management Programming Guide. Write Time The CORE task attribute can be written at any time. However, the CORE value is used only at initiation time. Assignments made to CORE after initiation have no effect on the process. 8600 0502–407 3–35 CORE Restrictions In WFL, CORE can be assigned separate data core and code core values or a single total core value. Other sources can assign CORE only a single value, which is a data core estimate. The CORE task attribute cannot be read in WFL. Examples The following WFL statement initiates the program OBJECT/PROG and assigns CORE a data estimate of 3000 and a code estimate of 1300: RUN OBJECT/PROG; CORE = (3000,1300); The following WFL statement initiates the program OBJECT/PROG and assigns CORE a total memory estimate of 4300: RUN OBJECT/PROG; CORE = 4300; Run-Time Error CORE ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign CORE a value outside the allowed range. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). 3–36 8600 0502–407 COUNTRY COUNTRY Type String Units Not applicable Range Default See below Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Not supported 157 Synonym None Restrictions None Explanation The COUNTRY task attribute specifies the country identifier associated with the process. Be careful when you enter a value for the COUNTRY task attribute because no checks are made against locally defined values. Instead, the system accepts any combination of letters and numbers that conforms to the syntax. For more information about the syntax, refer to the System Commands Operations Reference Manual. Default and Inheritance The COUNTRY task attribute is inherited from the parent. The default value for the COUNTRY task attribute is UNITEDSTATES. The system administrator can establish a different default COUNTRY value by using the SYSOPS (System Options) system command. 8600 0502–407 3–37 CREDENTIALS CREDENTIALS Type Integer Units Not applicable Range Default See below 0 Read Time Anytime Write Time See below Inheritance See below Overwrite Rules Not applicable Host Services Not supported Attribute Number 147 Synonym None Restrictions None Explanation The CREDENTIALS task attribute identifies the mix number of the entity that authenticated the task’s identity. This attribute is used for security verification purposes. For information about credential management and Generic Security Service Application Program Interface (GSS-API), see Appendix G in the Security Administration Guide. Range A valid mix number. Write Time Only stacks with PP:TASKING privilege are allowed to assign a value to CREDENTIALS. Inheritance If INHERITCREDENTIALS is set to TRUE, a non-zero value is inherited. If CREDENTIALSBASE is set to FALSE, CREDENTIALS is set to the task parent’s mix number. If CREDENTIALSBASE is set to TRUE, or the task is an independent task, CREDENTIALS is set to the mix number of the task and credentials are copied to that mix number. 3–38 8600 0502–407 CREDENTIALS Example %% Tasking Program Dependent Process Initiation: REPLACE CLIENT_TASK.USERCODE BY CLIENT_USERDATA; REPLACE CLIENT_TASK.ACCESSCODE BY CLIENT_ACCESSCODE; REPLACE CLIENT_TASK.CHARGECODE BY CLIENT_CHARGECODE; CLIENT_TASK.CREDENTIALS := CLIENT_CREDENTIALS; PROCESS PROC [CLIENT_TASK]; %% Proc can perform actions on behalf of Client. %% Tasking Program Worker Process: %% Assume Client USERCODE (call USERCODE) %% Assume Client ACCESSCODEASSESSCODE (call USERDATA) REPLACE MYSELF.CHARGECODE BY CLIENT_CHARGECODE; MYSELF.CREDENTIALS := CLIENT_CREDENTIALS; %% Perform actions on behalf of client %% All client's credentials are usable at this point MYSELF.CREDENTIALS := 0; %% Even though USERCODE, ACCESSCODE, and CHARGECODE are still in effect, %% the client's credentials can no longer be used. 8600 0502–407 3–39 CREDENTIALSBASE CREDENTIALSBASE Type Boolean Units Not applicable Range TRUE, FALSE Default FALSE Read Time Anytime Write Time Before initiation Inheritance None Overwrite Rules Host Services Attribute Number Standard Supported 148 Synonym None Restrictions None Explanation The CREDENTIALSBASE task attribute controls whether the task is to be regarded as a new base for acquiring credentials. CREDENTIALSBASE is evaluated only when a dependent task is initiated with INHERITCREDENTIALS set to TRUE. In these circumstances, if CREDENTIALSBASE is set to TRUE, all credentials are copied from the parent task. Otherwise, they are shared with the parent task. This is required if a task initiated from a session needs to use server credentials. If the task were to share credentials with the session that initiated it, any new credentials acquired by the task would also be shared by the parent session. This is not permitted: a session is explicitly limited to a single set of credentials. For information about credential management and Generic Security Service Application Program Interface (GSS-API), see Appendix G in the Security Administration Guide. Examples The following examples show the syntax used to run a program that needs to use server credentials: • To run a program, from MARC or CANDE, that needs to use server credentials, enter the following command: RUN SYSTEM/SPECIAL/SERVICE; CREDENTIALSBASE • To run a program, from MARC or CANDE, that needs to use server credentials but is not allowed to use the credentials of a particular user’s session, enter the following command: RUN SYSTEM/SPECIAL/SERVICE; CREDENTIALSBASE; INHERITCREDENTIALS = FALSE 3–40 8600 0502–407 CURRENTDIRECTORY CURRENTDIRECTORY Type String Units Not applicable Range Default or Null string, which is interpreted as "/" Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Not supported 137 Synonym None Restrictions None Range ÄÄ / ÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ ÄÙ ÚêÄÄÄÄÄÄÄ / ÄÄÄÄÄÄÄ¿ ÄÄÁÄ/13\Ä ÄÁÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ / ÄÙ A sequence of 1 to 17 EBCDIC characters whose values are greater than or equal to 4'40', except for the slash [/], double quote ["], and left parenthesis [(]. This set includes uppercase and lowercase letters, digits, and most special characters. Note: Blank spaces are treated as significant when included in the CURRENTDIRECTORY value. For example, a CURRENTDIRECTORY value of “/A / B” does not match a directory path named “/A/B”. Explanation The CURRENTDIRECTORY task attribute specifies a directory to be used as the prefix for relative pathnames referenced by this process. A pathname is a file title that is encoded in a way defined by the POSIX standard. Pathnames are stored in the PATHNAME file attribute. The TITLE file attribute and the PATHNAME file attribute store the same value, but in a different format. Changes to the 8600 0502–407 3–41 CURRENTDIRECTORY PATHNAME file attribute are immediately reflected by the TITLE file attribute, and vice versa. For example, the following two WFL statements are equivalent: F(TITLE = (JASMITH)DATA/TEST/ONE ON MYFAM); F(PATHNAME = "/-/MYFAM/USERCODE/JASMITH/DATA/TEST/ONE"); There are two types of pathnames: • Absolute pathnames, which begin with the root directory, end with the file name, and include all the subdirectories leading from the root directory to the file name. Absolute pathnames always begin with a slash, signifying the root directory. For example, the following is an absolute pathname: "/-/MYFAM/USERCODE/JASMITH/DATA/TEST/ONE" • Relative pathnames, which are a short cut method you can use for specifying file names that are nested under a common directory. Relative pathnames omit the root directory and one or more of the leftmost subdirectories, which are supplied by the CURRENTDIRECTORY task attribute instead. The following are relative pathnames that could refer to the same file as the previous example, if used together with appropriate CURRENTDIRECTORY values: "-/MYFAM/USERCODE/JASMITH/DATA/TEST/ONE" "MYFAM/USERCODE/JASMITH/DATA/TEST/ONE" "USERCODE/JASMITH/DATA/TEST/ONE" "DATA/TEST/ONE" "TEST/ONE" "ONE" TITLE file attribute assignments result in an absolute PATHNAME value if the TITLE assignment contains a usercode or a family name. Otherwise, TITLE assignments result in a relative PATHNAME value. The following table shows TITLE assignments and the resulting PATHNAME values: 3–42 TITLE Assignment Resulting PATHNAME Absolute or Relative (JASMITH)A/B /USERCODE/JASMITH/A/B Absolute A/B ON MYFAM /-/MYFAM/A/B Absolute A/B A/B Relative 8600 0502–407 CURRENTDIRECTORY When POSIX search rules are used, the system combines relative pathnames with the CURRENTDIRECTORY value to create resolved pathnames at file open time. If you want to use POSIX search rules for relative pathnames in your program, you need to do the following: • Ensure that a root family has been defined for your system by the DL ROOT form of the DL (Disk Location) system command. • Ensure that the CURRENTDIRECTORY task attribute has a value corresponding to the left part of the pathname. • Assign the SEARCHRULE file attribute of each file a value of POSIX. • Assign relative pathnames by way of the PATHNAME or TITLE file attributes. For example, consider the following WFL statements: MYSELF (CURRENTDIRECTORY = "/-/MYFAM/USERCODE/JASMITH/DATA"); FILE F1(SEARCHRULE = POSIX, PATHNAME = "TEST/ONE"); FILE F2(SEARCHRULE = POSIX, PATHNAME = "REPORT/BRIEF"); The preceding statements have the same effect as the following statements: FILE F1(SEARCHRULE PATHNAME = FILE F2(SEARCHRULE PATHNAME = = POSIX, "/-/MYFAM/USERCODE/JASMITH/DATA/TEST/ONE"); = POSIX, "/-/MYFAM/USERCODE/JASMITH/DATA/REPORT/BRIEF"); The SEARCHRULE = POSIX assignment has two side effects that you should be aware of: • The FAMILY task attribute is ignored. The family, if not specified in the resolved pathname, defaults to the DL ROOT family. • If the resolved pathname does not include a usercode, the system searches for or creates the file only as a nonusercoded (*) file. By contrast, when SEARCHRULE = NATIVE, the system searches for the file under the usercode of the process first. If the SEARCHRULE value is NATIVE, rather than POSIX, then the system conducts the file search based on native rules, and the CURRENTDIRECTORY value is ignored. For further information about the PATHNAME and SEARCHRULE file attributes, refer to the File Attributes Programming Reference Manual. 8600 0502–407 3–43 CURRENTDIRECTORY Write Time The following restrictions vary, depending on the time when CURRENTDIRECTORY is assigned: • For an in-use process, the CURRENTDIRECTORY value can be changed only by the process itself. • For an in-use process, CURRENTDIRECTORY can be assigned either an absolute or a relative pathname. If CURRENTDIRECTORY is assigned a relative pathname, the system adds the relative pathname to the end of the existing CURRENTDIRECTORY value, and sets CURRENTDIRECTORY to this combined value. • If the process is not in-use, then only absolute pathnames can be assigned to CURRENTDIRECTORY. You can assign the CURRENTDIRECTORY value either through conventional task attribute assignments or through one of the following methods: • The C language chdir function. For information about the chdir function, refer to the MCP/AS C Programming Reference Manual, Volume 2: Headers and Functions. • The POSIX_CHANGEDIR procedure of the MCPSUPPORT library. For information about this procedure, refer to the MCP/AS ALGOL and MCP Interfaces to POSIX Features Programming Reference Manual. Default and Inheritance The default value for CURRENTDIRECTORY is the null string. At file open time, this default is treated as equivalent to a single slash, indicating the root directory. System administrators can define a default CURRENTDIRECTORY value for each usercode with the POSIXINITDIR usercode attribute. A task inherits the CURRENTDIRECTORY value of its parent, unless this value is overridden by explicit assignments. Examples In ALGOL, you must explicitly terminate CURRENTDIRECTORY assignments with a null character, as shown in the following example: REPLACE T1.CURRENTDIRECTORY BY "/-/DBFAM/USERCODE/JANEDOE/TESTCASE/ONE" 48"00"; In COBOL74 and COBOL85, you must first define a group item that ends with a null character, as in the following example: WORKING-STORAGE SECTION. 01 X. 03 Y PIC X(6) VALUE "aa/bbb". 03 Z PIC X(1) VALUE @00@. 3–44 8600 0502–407 CURRENTDIRECTORY You can use a statement such as the following to assign the group item to CURRENTDIRECTORY: CHANGE ATTRIBUTE CURRENTDIRECTORY OF MYSELF TO X. Run-Time Errors CURRENTDIRECTORY NOT CHANGED: INVALID SYNTAX An attempt was made to assign CURRENTDIRECTORY a value that does not conform to pathname syntax. The assigning process continues to run normally, but the CURRENTDIRECTORY value remains unchanged. CURRENTDIRECTORY NOT CHANGED: ACCESS ERROR An attempt was made to assign CURRENTDIRECTORY a directory that does not exist, or a directory to which this process does not have access rights. The assigning process continues running normally, but the CURRENTDIRECTORY value remains unchanged. CURRENTDIRECTORY WRITABLE ONLY BY OWNER STACK ON ACTIVE TASK A process attempted to modify the CURRENTDIRECTORY value of another, in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 56 (NONOWNERACCESSV). CURRENTDIRECTORY MUST BE ABSOLUTE ON INACTIVE TASK An attempt was made to assign a relative pathname to the CURRENTDIRECTORY of a task variable that is not in-use. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). REQUIRES ROOT FAMILY TO BE SET WITH DL COMMAND An attempt was made to assign CURRENTDIRECTORY, and no DL ROOT family has been defined for this system. The is the value being assigned to CURRENTDIRECTORY, expressed in TITLE form rather than pathname form. The assigning process is suspended with the above RSVP message. The operator can respond in either of the following ways: • With a DS (Discontinue) command to terminate the suspended process. • With the DL ROOT ON form of the DL (Disk Location) system command. The suspended process resumes execution when the DL ROOT family is defined. 8600 0502–407 3–45 DATABASE DATABASE Type String Units Not applicable Range Default Null string Read Time See below Write Time See below Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Standard Not supported 73 Synonym None Restrictions None Range ÄÄ DATABASE ÄÄ ÄÄ ( ÄÄ TITLE ÄÄ = ÄÄ ÄÄ ) ÄÄÄÄÄÄÄÄÄÄÄ´ Explanation The DATABASE task attribute causes a process to use a different database than it otherwise would. In the DATABASE value, the simple name is the internal name by which the process refers to the original database. The title is the title of the database that is to be used instead. Your title should be the title of an Enterprise Database Server control file. Read Time The DATABASE task attribute can be read at any time from an ALGOL program. However, the value returned is encoded in an internal form that does not resemble the original DATABASE assignment. The DATABASE task attribute returns a null value if read from COBOL and cannot be read from WFL at all. 3–46 8600 0502–407 DATABASE Write Time The DATABASE task attribute can only be assigned by a DATABASE equation statement in a WFL program. For information about database equation, refer to the Work Flow Language (WFL) Programming Reference Manual. Assigning the DATABASE task attribute from an ALGOL or COBOL program causes a run-time error. Examples The following example shows this attribute being used in a WFL job: RUN USERPROG; DATABASE TESTDB(TITLE= /CONTROL); The database internal name or the database title can be replaced by string variables, which must be prefixed with a pound sign (#). The following example uses the string variables STRINT and STRTITLE: RUN USERPROG; DATABASE #STRINT(TITLE=#STRTITLE); Run-Time Error DATABASE ATTRIBUTE - RESTRICTED ACCESS A non-WFL process attempted to assign a value to the DATABASE attribute, or a WFL process attempted to assign a value to the DATABASE attribute of an in-use task variable. An attempt was made to assign a value to the DATABASE attribute of an in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 128 (RESTRICTEDACCESSV). 8600 0502–407 3–47 DATEOFFSET DATEOFFSET Type Integer Units Days Range Default 0 to 4095 0 Read Time Anytime Write Time Anytime Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Standard Supported 154 Synonym None Restrictions None Explanation The DATEOFFSET task attribute provides a means for a task to adjust the date returned to the task when calling the TIME intrinsic. All TIME functions that return a date are adjusted by DATEOFFSET days, except for functions 36 and 136, which return the halt/load time in TIME(6) format. Notes: 3–48 • In a library environment the attribute value for a client program is used if the TIME intrinsic is invoked in a library entrypoint. If the result from the TIME intrinsic is stored globally and compared with values obtained from different calls from different clients, the results are unpredictable. It is recommended that in such an environment the library and all clients are assigned the same value for the DATEOFFSET attribute. • If the system option NODATEOFFSET is set, the value of the DATEOFFSET attribute can only be set to 0 (zero). Attempts to set the attribute to any other value within the range of 1 to 4095 results in a warning message, and the attribute value is not changed. 8600 0502–407 DCIINPUTEVENT DCIINPUTEVENT Type Event Units Not applicable Range Default HAPPENED, NOT HAPPENED None Read Time See below Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number Synonym Restrictions None (read-only) Not supported 127 None Not available in WFL Explanation The DCIINPUTEVENT task attribute can be used by the Transaction Server direct window programs to detect the presence of user input. Direct window programs should use DCIINPUTEVENT together with the DCITASKEVENT task attribute. When input is available, the system causes one or the other of these attributes, but not both. For input that is available to any of the copies of a program, the system causes the DCIINPUTEVENT of all the program copies. For input that is available only to a particular copy of the program, the system causes the DCITASKEVENT of that program copy. Before attempting to wait on the DCIINPUTEVENT task attribute, the direct window program must successfully execute an ENABLE statement with the ONLINE option. If the program attempts to execute the WAIT statement before executing the ENABLE statement, the system discontinues the program. A program awakened by the DCIINPUTEVENT might find that no input is available because one of the other copies of the program executed a RECEIVE statement first. Therefore, the program should always use the DONTWAIT option of the RECEIVE statement to prevent the risk of hanging indefinitely. The system automatically resets DCIINPUTEVENT after a direct program executes the RECEIVE statement. 8600 0502–407 3–49 DCIINPUTEVENT The program should use only WAIT statements or IF HAPPENED expressions with DCIINPUTEVENT. The program should not use statements that cause the event or reset the event, because such statements overwrite the effects of cause actions and reset actions issued by the system. Examples of such statements include the ALGOL language, WAITANDRESET, CAUSE, and CAUSEANDRESET. The system does not issue any error for the programs that cause or reset DCIINPUTEVENT, but the program is likely to not work as intended. Run-Time Errors Transaction Process is DSED because task is empty or TP is not under COMS control An attempt was made to wait on or interrogate the DCIINPUTEVENT or DCITASKEVENT attribute, and one of the following conditions is true: • The task variable is not currently in use, because the task has not been initiated or has already terminated. • The task variable refers to a process that is not a Transaction Server direct window program. The system recognizes a process as a Transaction Server direct window program when the process executes an ENABLE statement with the ONLINE option. The process that waited on or interrogated the task attribute is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 128 (RESTRICTEDACCESSV). Note that the same HISTORYCAUSE and HISTORYREASON values are associated with the following messages. Transaction Processor is DSED because DS or BADGOTO was encountered during linking Transaction Process is DSED because unable to link to the Transaction Processor Transaction Process is DSED because during linkage to TP an error was encountered Transaction Process is DSED because link error occurred during DCIWAIT linkage The preceding four messages each indicate that a system software error occurred when a process attempted to wait on or interrogate the DCIINPUTEVENT or DCITASKEVENT task attribute. The process that waited on or interrogated the task attribute is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 128 (RESTRICTEDACCESSV). These diagnostic messages should not normally occur, but if they do occur, you should notify system support personnel. 3–50 8600 0502–407 DCITASKEVENT DCITASKEVENT Type Event Units Not applicable Range Default HAPPENED, NOT HAPPENED None Read Time See below Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number Synonym Restrictions None (read-only) Not supported 128 None Not available in WFL Explanation The DCITASKEVENT task attribute can be used by Transaction Server direct window programs to detect the presence of user input. Direct window programs should use DCITASKEVENT together with the DCIINPUTEVENT task attribute. When input is available, the system causes one or the other of these attributes, but not both. For input that is available to any of the copies of a direct window program, the system causes the DCIINPUTEVENT of all the program copies. For input that is available only to a particular copy of the program, the system causes the DCITASKEVENT of that program copy. Before attempting to wait on the DCITASKEVENT task attribute, the direct window program must successfully execute an ENABLE statement with the ONLINE option. If the program attempts to execute the WAIT statement before executing the ENABLE statement, the system discontinues the program. If a program is awakened by DCITASKEVENT, then there is no possibility that another copy of the program might read the input before this copy does. However, it is still a good idea to use the DONTWAIT option of the RECEIVE statement in case the input becomes unavailable for some reason. The system automatically resets DCITASKEVENT after a program executes the RECEIVE statement. 8600 0502–407 3–51 DCITASKEVENT The program should use only WAIT statements or IF HAPPENED expressions with DCITASKEVENT. The program should not use statements that cause the event or reset the event, because such statements overwrite the effects of cause actions and reset actions issued by the system. Examples of such statements include the ALGOL language, WAITANDRESET, CAUSE, and CAUSEANDRESET. Although, the system does not issue errors for the direct window programs that cause or reset DCITASKEVENT, the direct window program might not work as intended. Run-Time Errors Refer to the discussion of run-time errors for the DCIINPUTEVENT task attribute. 3–52 8600 0502–407 DECKGROUPNO DECKGROUPNO Type Integer Units Not applicable Range Default 0 to 549755813887 0 Read Time Anytime; accurate while in use Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Not supported 33 Synonym None Restrictions None Explanation The DECKGROUPNO task attribute stores an index that is assigned by WFL to each task initiated by a WFL job. The first task that appears in a WFL job is assigned a DECKGROUPNO of 1, the second task a DECKGROUPNO of 2, and so on. WFL uses this information internally to determine which local data specifications are associated with which tasks. A process initiated from any source but WFL has a DECKGROUPNO of 0. For information about local data specifications, refer to the Work Flow Language (WFL) Programming Reference Manual. Example The following WFL example includes a number of statements that display the value of DECKGROUPNO at different points during job execution. The comments at the right of the example show the values displayed by these statements. ?BEGIN JOB WFL/TEST; TASK T1, T2, T3; DISPLAY STRING(T1(DECKGROUPNO),*); PROCESS RUN OBJECT/ALGOL/ERROR [T1]; DISPLAY STRING(T1(DECKGROUPNO),*); PROCESS RUN OBJECT/ALGOL/ERROR [T2]; DISPLAY STRING(T2(DECKGROUPNO),*); PROCESS RUN OBJECT/ALGOL/ERROR [T3]; DISPLAY STRING(T3(DECKGROUPNO),*); ?END JOB 8600 0502–407 % Displays 0 % Displays 1 % Displays 2 % Displays 3 3–53 DEFAULTFILEGROUP DEFAULTFILEGROUP Type String Units Not applicable Range Default Null String Read Time Anytime Write Time Never Inheritance See below Overwrite Rules See below Host Services Attribute Number Not supported 153 Synonym None Restrictions None Explanation The DEFAULTFILEGROUP task attribute is a read-only attribute that is used to interrogate the effective FILEGROUP value used by the task when creating disk files. The value returned by this task attribute specifies the group name that is assigned to any newly created disk files that are owned by the task. If the FILEGROUP attribute for the task is set, then the task’s FILEGROUP value is returned. Otherwise, if the FILEGROUP value associated with the user is set on the task, the user’s FILEGROUP value is returned. Otherwise, interrogating the DEFAULTFILEGROUP attribute returns “.”. Refer to the FILEGROUP task attribute for more information. 3–54 8600 0502–407 DEPTASKACCOUNTING DEPTASKACCOUNTING Type Mnemonic Units Not applicable Range Default See “Explanation” below See below Read Time Anytime Write Time Before initiation Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number Set to IDENTIFIED if IDENTIFIED is specified for the parent, the usercode, or the system; otherwise, set to ANONYMOUS Standard Not supported 124 Synonym None Restrictions None Explanation The DEPTASKACCOUNTING task attribute specifies whether the system should generate log entries and system messages when the process is initiated and when the process terminates. You can use DEPTASKACCOUNTING to improve overall system performance by reducing the number of log entries the system generates. The best way to achieve this effect is by establishing a system-wide DEPTASKACCOUNTING default, as described later under “Default and Inheritance.” The DEPTASKACCOUNTING task attribute can be assigned to any process. However, the system enforces the value of this task attribute only for processes that meet all the following criteria: • The process is a task (that is, a dependent process). • The process has the same usercode as its parent. • The process is not initiated directly from a CANDE or MARC session or from a WFL job. 8600 0502–407 3–55 DEPTASKACCOUNTING The following are the possible values of DEPTASKACCOUNTING: Mnemonic Value Integer Value UNSPECIFIED 0 This value has no effect on logging or message displays. ANONYMOUS 1 The system does not generate Major Type 1, Minor Type 2 (BOT Entry) or Major Type 1, Minor Type 4 (EOT Entry) log entries for this process. If the system generates any other log entries for this process, the system places a Major Type 0, Minor Type 1 (Establish Identity) log entry before the first of these other entries and generates a Major Type 0, Minor Type 1 (Empty Establish Identity) log entry when the process terminates. These logging effects apply equally to the system log and the job log. Meaning When the process terminates, the resource usage statistics of the process are added to those of the parent and are reflected in the Major Type 1, Minor Type 2 (EOJ Entry) or Minor Type 4 (EOT Entry) log entry that the system issues for the parent. For details about which fields in the parent's log entry can reflect statistics from an ANONYMOUS offspring, refer to the Unisys e-@ction ClearPath Enterprise Servers System Log Programming Reference Manual. Further, no BOT or EOT messages are sent to the originating station, and the process does not appear in the C (Completed Mix Entries) system command display. This value also affects enforcement of the FILEACCOUNTING task attribute. Refer to the FILEACCOUNTING task attribute description. IDENTIFIED 2 The system generates BOT and EOT log entries for the process. The system sends BOT and EOT messages to the originating terminal, and the process termination is recorded in the C (Completed Mix Entries) display. Note that an operator can use the LOGGING (Logging Options) system command to prevent logging of any BOT and EOT log entries. In this case, even processes with DEPTASKACCOUNTING = IDENTIFIED do not receive BOT or EOT log entries. 3–56 8600 0502–407 DEPTASKACCOUNTING Default and Inheritance A process inherits the DEPTASKACCOUNTING value of its parent. The system administrator can use the ACCOUNTING (Resource Accounting) system command to specify a system-wide default for DEPTASKACCOUNTING. The system administrator can also associate a default value with a usercode by including a DEPTASKACCOUNTING usercode attribute in the usercode definition in the USERDATAFILE. When a process is initiated, the system assigns the DEPTASKACCOUNTING task attribute the maximum of its current value (whether assigned or inherited), the system default value, and the usercode value. The integer values for each DEPTASKACCOUNTING mnemonic were previously listed under the “Explanation” subheading. For example, suppose that DEPTASKACCOUNTING has a value of ANONYMOUS in the task variable, a value of IDENTIFIED at the system level, and a value of UNSPECIFIED at the usercode level. At initiation time, the process is assigned a DEPTASKACCOUNTING value of IDENTIFIED by the system, because IDENTIFIED has a higher numeric value (2) than ANONYMOUS or UNSPECIFIED. On a system running Security Services for ClearPath MCP with a security class of S2, or with the security option ANONACCOUNTING set to the value NOTOK, the system sets DEPTASKACCOUNTING to IDENTIFIED for all processes when they are initiated. This rule overrides all of the other factors affecting the DEPTASKACCOUNTING value. 8600 0502–407 3–57 DESTNAME DESTNAME Type String Units Not applicable Range Default SITE Read Time Anytime Write Time Before initiation Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions From parent Standard Supported 44 BACKUPDESTINATION None Explanation The DESTNAME task attribute specifies a destination station for printer or punch output created by the process. This attribute is useful at sites where some of the printers are connected to data comm lines. This attribute can be set to any of the following values: • Any station name in the DATACOMINFO file data comm definition for the system. • SITE. This value specifies that there is no destination station for the process. Other factors, such as the default destination, determine the routing of printer and punch files. Setting this attribute to something other than SITE causes printer files to be built under the directory *REMLPnn/= , and punch files to be created under the directory *REMCPnn/= . The nn in the titles is the MCS number defined by the data comm subsystem for the MCS that controls the destination station. The remainder of the file name includes the job number, mix number, and so on, as described in the process I/O usage discussion in the Task Management Programming Guide. An alternate method of specifying the destination station for a process is the DESTSTATION task attribute. DESTSTATION specifies the logical station number (LSN) of the destination station. Assigning a valid station name to DESTNAME causes DESTSTATION to receive the corresponding LSN. Similarly, assigning a valid LSN to DESTSTATION causes DESTNAME to be updated with the corresponding station name. The MCS, which controls the destination station, might print the files automatically, depending on which MCS is involved. Otherwise, the files remain on disk until removed or printed by application software supplied by the site. 3–58 8600 0502–407 DESTNAME If the Transaction Server controls the destination station, the files will not be printed automatically. If you want the output to be printed at a Transaction Server station, you must assign the DESTINATION file attribute to the desired station. You can assign this file attribute for a particular file, or you can assign a default DESTINATION value as a part of the PRINTDEFAULTS task attribute. For information about remote printing, refer to the Print System and Remote Print System Administration, Operations, and Programming Guide. Using DESTNAME with JOBSUMMARY and JOBSUMMARYTITLE The DESTNAME task attribute exists only to support legacy printing applications through message control systems (MCSs). DESTNAME cannot be used to generate print requests. However, if DESTNAME is specified to deliver job summaries, the following rules apply: • The JOBSUMMARY task attribute determines whether a job summary is printed by the Print System and whether one is created for an MCS to print. • A job summary file is created for each service (Print System or MCS) for which printed output is generated. You can control the name of the job summary file created for the Print System with the JOBSUMMARYTITLE task attribute. • If no printed output is created and the JOBSUMMARY task attribute is specified, a job summary is created for the Print System. If no printed output is created and the DESTNAME task attribute is specified, a job summary is created for an MCS. If both the DESTNAME and JOBSUMMARYTITLE attributes are set, two files are created. Whether the Print System job summary is printed depends on the setting of the JOBSUMMARY attribute. For information on the JOBSUMMARY and JOBSUMMARYTITLE task attributes, refer to Section 4 in this manual. Inheritance A process inherits the DESTNAME value of its parent. A process initiated from a MARC or CANDE session inherits the DESTNAME value of the session. If the CANDEDESTNAME usercode attribute is set for a usercode, then MARC and CANDE use this value as the DESTNAME for sessions with that usercode. (For information about setting CANDEDESTNAME, refer to the Security Administration Guide.) The DESTNAME value for the current session can be changed using the MARC or CANDE DESTNAME command. 8600 0502–407 3–59 DESTNAME Run-Time Errors BACKUPDESTINATION ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign DESTNAME a value that was not in title format. (Note that BACKUPDESTINATION is a synonym for DESTNAME.) The current values of DESTNAME and DESTSTATION remain unchanged. The assigning process, unless privileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). DESTNAME ATTRIBUTE IS READ ONLY ON ACTIVE TASK An attempt was made to assign DESTNAME for an in-use process. The assigning process, if it is nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYONACTIVEV). INVALID DESTINATION The process was initiated with a DESTNAME value that does not correspond to any existing station or pseudostation. Note that no error is given for assigning such a DESTNAME value to a task variable. When the assignment is first made, DESTNAME is changed to the requested value and DESTSTATION is changed to zero. When the task variable is later used to initiate a process, the new process suffers the error. The process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 46 (BADTASKATTRIBUTEV). The INVALIDDESTINATION error message can also be displayed for a bad DESTSTATION task attribute assignment; refer to the description of the DESTSTATION task attribute. UNABLE TO OBTAIN STATION NAME An attempt was made to read DESTNAME when DESTNAME was set to the name of a nonexistent station. This error is not fatal. 3–60 8600 0502–407 DESTSTATION DESTSTATION Type Integer Units Not applicable Range Default Valid LSNs 0 Read Time Anytime Write Time Before initiation Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Supported 46 Synonym None Restrictions None Explanation The DESTSTATION task attribute specifies a destination station for printer or punch output created by the process. This attribute is useful at sites where some of the printers are connected to data comm lines. DESTSTATION serves the same purpose as the DESTNAME task attribute. The difference is that DESTSTATION specifies the logical station number (LSN) of the destination station rather than the station name. Assigning a valid LSN to DESTSTATION causes DESTNAME to be updated with the corresponding station name. Similarly, assigning a valid station name to DESTNAME causes DESTSTATION to receive the corresponding LSN. DESTSTATION can be set to the LSN of any station on the system or to 0. If DESTSTATION is 0, there is no destination station for the process. In that case, other factors, such as the default printer pool definition, determine the routing of printer and punch files. Inheritance A process inherits its parent's DESTSTATION value. A process initiated from a MARC or CANDE session inherits the DESTNAME value of the session, and this DESTNAME, in turn, determines the DESTSTATION value. 8600 0502–407 3–61 DESTSTATION Run-Time Errors DATACOMM MUST BE ACTIVE TO SET DESTSTATION An attempt was made to set DESTSTATION to a nonzero value while the number of data comm users was zero. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 134 (DATACOMMNOTACTIVEV). DESTSTATION ATTRIBUTE IS READ ONLY ON ACTIVE TASK An attempt was made to assign DESTSTATION for an in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYONACTIVEV). INVALID DESTINATION An attempt was made to set DESTSTATION to a value that is not a valid LSN. The DESTSTATION value is set to zero, and the DESTNAME value remains unchanged. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 133 (INVALIDLSNV). The INVALID DESTINATION error message can also result indirectly from a bad DESTNAME task attribute assignment; refer to the description of the DESTNAME task attribute. 3–62 8600 0502–407 DISPLAYONLYTOMCS DISPLAYONLYTOMCS Type Boolean Units Not applicable Range TRUE, FALSE Default FALSE Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Object code file dominant Not supported 103 Synonym None Restrictions None Explanation The DISPLAYONLYTOMCS task attribute specifies whether any DISPLAY messages created by the process are included in the system messages. The operator can use the MSG (Display Messages) system command to list recent system messages. If a process was not created from an MCS session, DISPLAY messages appear in the MSG command output, regardless of the setting of DISPLAYONLYTOMCS. If a process was initiated from an MCS session and DISPLAYONLYTOMCS is FALSE, then DISPLAY messages appear in the MSG command output, as well as at the session that initiated the process. If a process was initiated from an MCS session and DISPLAYONLYTOMCS is TRUE, then DISPLAY messages appear only at the session that initiated the process. A DISPLAYONLYTOMCS value of TRUE allows a process to communicate with an end user without distracting the operator. The ?MSG command in CANDE displays messages regardless of the value of DISPLAYONLYTOMCS. Further, the MSG ALL and MSG FULL forms of the MSG (Display Messages) system command display messages regardless of the value of DISPLAYONLYTOMCS. The DISPLAYONLYTOMCS task attribute does not affect the logging of DISPLAY messages in either the job log or the system log. DISPLAY messages will be included in these logs unless the operator has used selective logging features to suppress the logging of DISPLAY messages. (For a description of selective logging features, refer to the Security Administration Guide.) For information about DISPLAY messages, refer to the discussion of tasking from interactive sources in the Task Management Programming Guide. 8600 0502–407 3–63 DISPLAYONLYTOMCS The system also provides methods for suppressing other types of messages. These methods include • The SUPPRESSWARNING task attribute (discussed in this manual) and SUPPRESSWARNING system command (discussed in the System Commands Operations Reference Manual). • The MSC SUPPRESS form of the MSC command, which is discussed in the MCP/AS Menu-Assisted Resource Control (MARC) Operations Guide. Inheritance The value of DISPLAYONLYTOMCS is not inherited from the parent process. CANDE supports several methods of providing default values for the DISPLAYONLYTOMCS task attribute. The ?OP DISPLAYONLYTOMCS control option provides a default setting for the DISPLAYONLYTOMCS session option, for example: To cause DISPLAYONLYTOMCS to default to . . . Enter . . . TRUE ?OP + DISPLAYONLYTOMCS FALSE ?OP – DISPLAYONLYTOMCS The ?SO and ?RO user commands override the previous setting and establish a default DISPLAYONLYTOMCS value for all processes initiated from the current CANDE session, for example: 3–64 To establish a default of . . . Enter . . . TRUE ?SO DISPLAYONLYTOMCS FALSE ?RO DISPLAYONLYTOMCS 8600 0502–407 ELAPSEDLIMIT ELAPSEDLIMIT Type Real Units Seconds Range Default 0 to about 4.31E+68 = 4.31*10 exp 68 0 (no limit) Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Supported 57 Synonym None Restrictions None Explanation The ELAPSEDLIMIT task attribute specifies the maximum elapsed time for a process. If the ELAPSEDTIME task attribute value reaches the same value as ELAPSEDLIMIT, the process is discontinued. Refer to the ELAPSEDTIME task attribute description for details. Inheritance Although ELAPSEDLIMIT is not inherited from the parent, the ELAPSEDLIMIT value of a process indirectly limits the elapsed time for all its descendants. This is true because when a process terminates, any in-use descendants of that process are discontinued with a “PARENT PROCESS TERMINATED” error. If the operator defines a default value for the ELAPSEDLIMIT attribute of a job queue, the value is inherited by WFL jobs run from that job queue. If the operator defines a limit value for the ELAPSEDLIMIT attribute of a job queue, then WFL jobs that specify a greater ELAPSEDLIMIT in the job attribute list are not allowed in that job queue. For an introduction to job queue defaults and limits, refer to the discussion of tasking from programming languages in the Task Management Programming Guide. Run-Time Error ELAPSED TIME LIMIT EXCEEDED The process ran for longer than the time specified by ELAPSEDLIMIT. The process is discontinued with HISTORYCAUSE = 3 (RESOURCECAUSEV) and HISTORYREASON = 10 (ELAPSEDEXCEEDEDV). 8600 0502–407 3–65 ELAPSEDTIME ELAPSEDTIME Type Real Units See below Range Default 0 to about 4.31E+68 = 4.31*10 exp 68 None Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Supported 15 Synonym None Restrictions None Explanation The ELAPSEDTIME task attribute records the total amount of time that has passed since the initiation of the process. The process is discontinued if the value of the ELAPSEDTIME task attribute reaches the same value as the ELAPSEDLIMIT task attribute. Refer to the ELAPSEDLIMIT description for details. The ELAPSEDTIME value is unaffected by any DR (Date Reset) or TR (Time Reset) system commands entered while the process is in use. However, the ELAPSEDTIME value of a WFL job is set to zero when the job is restarted after a halt/load. If ELAPSEDTIME is accessed through Host Services, bit 47 will always be 0 (zero). Units When accessed from WFL, the ELAPSEDTIME value is expressed in units of seconds. When accessed from other languages, the value is expressed in units of 2.4 microseconds. 3–66 8600 0502–407 ERROR ERROR Type Real (string in WFL) Units Not applicable Range Default See “Explanation” below 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions From parent None (read only) Not supported 25 TASKATTERR None Explanation The ERROR task attribute indicates whether an error resulted from the most recent attempt to access a task attribute of this process. If an error did result, the ERROR value also indicates which task attribute was being accessed. If read in WFL, the ERROR task attribute returns a string value. If the most recent task attribute access had an error, then the string is the name of the task attribute that was being accessed. If the most recent task attribute access did not cause an error, the ERROR task attribute returns a null string. If read in other languages, the ERROR task attribute returns a real value. If the most recent task attribute access caused an error, the ERROR value is the negative of the attribute number of the attribute in error. (The USERCODE task attribute is an exception, as discussed in the following table.) If the most recent task attribute access did not cause an error, the ERROR value is 0 (zero). 8600 0502–407 3–67 ERROR The ERROR value has the following fields, which can be accessed at the bit level: Field Meaning [46:01] If set, the last task attribute access caused an error, and the remaining fields of the word are used. Otherwise, the last task attribute access did not cause an error, and the remaining fields of the word are not used. [27:20] If the last attribute to be assigned was the USERCODE attribute, then this field contains a USERDATA error code. For a list of the most common USERDATA errors that can be stored in this field, refer to Table 3–1, “USERDATA Errors.” For a complete list, and general information about USERDATA errors, refer to the Security Administration Guide. If the last attribute to be assigned was not the USERCODE attribute, then this field stores an error code in one of the following ranges of numbers: 1 through 999. Such an error code corresponds to the HISTORYREASON task attribute value. For an explanation of values in this range, refer to the HISTORYREASON task attribute description. 1000 or greater. Such an error code corresponds to the HANDLEATTRIBUTES error number. For an explanation of values in this range, refer to Table 1–1, “HANDLEATTRIBUTES Error Numbers.” [07:08] If the task attribute most recently assigned was FILECARDS, then this field stores the number of the file attribute that was assigned incorrectly. For a list of file attributes ordered by number, refer to the relevant appendix of the File Attributes Programming Reference Manual. If the task attribute most recently assigned was LIBRARY, then this field stores the number of the library attribute that was assigned incorrectly. For a list of the possible values and the corresponding LIBRARY attributes, refer to Table 3–2, “Library Attributes by Number.” If the task attribute most recently accessed was neither FILECARDS nor LIBRARY, then this field stores the number of the task attribute that was most recently accessed. The task attributes are listed by number in Table 3–3, “Task Attributes by Number.” For details about how to access these fields, refer to “Accessing Task Attributes at the Bit Level” in Section 1, “Accessing Task Attributes.” The value of the ERROR task attribute is automatically erased when the task attribute is read by any process. Most MCSs read this task attribute for processes initiated from sessions. Therefore, if you initiate a process from a session, you can expect the ERROR task attribute to be blank even if a task attribute error has occurred. 3–68 8600 0502–407 ERROR In a memory dump or a program dump, you might see an ERROR value even though no task attribute error occurred. This occurs because the ERROR task attribute contains the attribute number of the task attribute most recently assigned, even if no error occurred. In addition, the ERROR value is used by the system software as scratch storage while a job is being restarted. Both these types of values are visible only in dumps; a program that reads the task attribute finds a value of 0. For more information about task attribute errors, refer to “Task Attribute Errors” in Section 1, “Accessing Task Attributes.” Table 3–1 lists and defines the USERDATA error numbers that can occur in field [27:20] of the ERROR task attribute value. Table 3–1. USERDATA Errors Error Code Definition 8 No *SYSTEM/USERDATA file present. 9 No entry exists with the requested usercode. 10 The password supplied was invalid, or none was supplied when one was required. 16 This usercode is not a viable usercode; its entry has no system node. 17 This usercode has been marked SUSPENDED. 35 The usercode/password syntax was incorrect. 36 No usercode was specified. 45 The password has expired. 51 The password associated with the usercode has expired, and ENFORCEEXPIREDPW is true for the usercode. Table 3–2 lists the library attribute numbers that can occur in field [07:08] of the ERROR task attribute value. Table 3–2. 8600 0502–407 Library Attributes by Number Number Name 0 INTNAME 1 TITLE 2 LIBPARAMETER 3 FUNCTIONNAME 4 LIBACCESS 13 CONNECTIONS 14 CHANGE 3–69 ERROR Table 3–2. Library Attributes by Number Number Name 15 APPROVAL 16 SINGLE 17 STATE 18 AUTOLINK 20 DELINKEVENT 21 CLUSAGE Table 3–3 lists the numbers that can be returned in field [07:08] of the ERROR task attribute value, and the names of the corresponding task attributes. Note that some numbers are intentionally omitted because no task attributes correspond to those numbers. Table 3–3. Number 3–70 Task Attributes by Number Name 0 NAME 1 MIXNUMBER 2 CORE 3 PRIORITY 4 MAXPROCTIME 5 MAXIOTIME 6 TARGET 7 STACKSIZE 8 USERCODE 9 TASKVALUE 10 HISTORY 11 TYPE 12 STATUS 13 ACCUMPROCTIME 14 ACCUMIOTIME 15 ELAPSEDTIME 16 EXCEPTIONTASK 17 LOCKED 18 STOPPOINT 8600 0502–407 ERROR Table 3–3. Number 8600 0502–407 Task Attributes by Number Name 19 PARTNER 20 STATION 21 EXCEPTIONEVENT 22 OPTION 23 VALIDITYBITS 24 FILECARDS 25 ERROR 27 PARTNEREXISTS 28 RESTART 29 BDNAME 30 STACKHISTORY 32 TASKFILE 33 DECKGROUPNO 34 CLASS 37 MYPPB 38 ORGUNIT 39 MAXCARDS 40 MAXLINES 41 JOBNUMBER 42 CHARGE 44 DESTNAME 45 SOURCESTATION 46 DESTSTATION 47 SOURCEKIND 48 RESTARTED 49 MAXWAIT 50 STACKLIMIT 52 FETCH 53 RESOURCE 55 FAMILY 56 WAITLIMIT 57 ELAPSEDLIMIT 3–71 ERROR Table 3–3. Number 3–72 Task Attributes by Number Name 58 TASKLIMIT 60 TANKING 61 ACCESSCODE 63 BACKUPFAMILY 64 HOSTNAME 66 HISTORYTYPE 67 HISTORYCAUSE 68 HISTORYREASON 70 HSPARAMSIZE 72 ITINERARY 73 DATABASE 74 LIBRARY 78 TIMESTARTED 79 STARTTIME 81 JOBSUMMARY 82 CHECKPOINTABLE 83 BRCLASS 84 SW1 85 SW2 86 SW3 87 SW4 88 SW5 89 SW6 90 SW7 91 SW8 92 INHERITMCSSTATUS 94 TADS 95 LANGUAGE 97 JOBSUMMARYTITLE 98 NOJOBSUMMARYIO 99 PRINTDEFAULTS 100 ACCEPTEVENT 8600 0502–407 ERROR Table 3–3. 8600 0502–407 Task Attributes by Number Number Name 101 LIBRARYUSERS 102 AUTOSWITCHTOMARC 103 DISPLAYONLYTOMCS 104 INITPBITCOUNT 105 INITPBITTIME 106 OTHERPBITCOUNT 107 OTHERPBITTIME 108 LIBRARYSTATE 109 TASKWARNINGS 110 SUPPRESSWARNING 111 FILEACCESSRULE 112 SAVEMEMORYLIMIT 113 TASKSTRING 116 APPLYLIST 117 TASKERROR 118 TEMPFILELIMIT 119 TEMPFILEMBYTES 120 CONVENTION 121 SOURCENAME 122 MCSNAME 123 AUTORESTORE 124 DEPTASKACCOUNTING 125 FILEACCOUNTING 126 LABELFORMAT 127 DCIINPUTEVENT 128 DCITASKEVENT 129 AX 130 REALUSERCODE 131 SAVEDUSERCODE 132 GROUPCODE 133 REALGROUPCODE 134 SAVEDGROUPCODE 3–73 ERROR Table 3–3. Task Attributes by Number Number Name 136 NETPATH 137 CURRENTDIRECTORY 138 PRIORHISTORY 139 PRIORHISTORYTYPE 140 PRIORHISTORYCAUSE 141 PRIORHISTORYREASON 142 SUPPLEMENTARYGRPS 143 FILEMASK 144 STATIONNAME 145 PUMPTITLE 146 BLOCKCREDENTIALS 147 CREDENTIALS 148 CREDENTIALSBASE 149 INHERITCREDENTIALS 152 FILEGROUP 153 DEFAULTGROUP 154 DATEOFFSET 155 OPTIONAL 156 REPORTBADINITIATE 157 COUNTRY 158 MPID 159 BOTTIMESTAMP Run-Time Error ERROR ATTRIBUTE IS READONLY An attempt was made to assign a value to the ERROR task attribute. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 9 (ATTREADONLYV). 3–74 8600 0502–407 EXCEPTIONEVENT EXCEPTIONEVENT Type Event Units Not applicable Range Default HAPPENED, NOT HAPPENED NOT HAPPENED Read Time Anytime Write Time See below Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions Indeterminate; software interrupts remain attached See below Not supported 21 None Not available in WFL Explanation The EXCEPTIONEVENT task attribute accesses a predeclared event called the exception event that is associated with each process. When the STATUS task attribute of a process changes value, the system causes the exception event of the exception task of that process. By default, the parent is the exception task of a dependent process. Therefore, the exception event of the parent is a convenient means of informing the parent when one of its offspring has terminated or otherwise changed status. The system also causes the exception event of a permanent library or control library whenever the value of the LIBRARYUSERS task attribute changes to zero. The operator can also cause the exception event of a process by using the HI (Cause EXCEPTIONEVENT) system command. The EXCEPTIONEVENT task attribute can be used in any ALGOL or COBOL statement that operates on an event. For example, a process can wait on the EXCEPTIONEVENT task attribute or can cause it. A process can access the exception event of itself or of an ancestor process. The process cannot access the exception event of a descendant, sibling, or cousin process. For a discussion of exception tasks, ancestors, siblings, cousins, local-parent/remote-task logic and descendants, refer to the Task Management Programming Guide. 8600 0502–407 3–75 EXCEPTIONEVENT Write Time A process can cause or reset the EXCEPTIONEVENT at any time. However, a process can never assign an event variable to EXCEPTIONEVENT. For example, the following ALGOL statement compiles successfully, but produces a run-time error: T.EXCEPTIONEVENT := EVNT; Overwrite Rules The statements that access EXCEPTIONEVENT can be applied only to an in-use process. Run-Time Errors EXCEPTIONEVENT ATTRIBUTE IS READONLY A process attempted to assign an event variable to the EXCEPTIONEVENT task attribute. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 9 (ATTREADONLYV). NON-ANCESTRAL TASK REFERENCE A process attempted to access the exception event of a descendant, sibling, or cousin process. The process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 130 (NONANCESTRALEXCEPTEVENTV). 3–76 8600 0502–407 EXCEPTIONTASK EXCEPTIONTASK Type Task Units Not applicable Range See below Default See below Read Time Anytime Write Time Anytime Inheritance None Fork() Inheritance MYSELF Overwrite Rules Standard Host Services Attribute Number Synonym Restrictions Not supported 16 None Not available in WFL Explanation The EXCEPTIONTASK task attribute specifies the exception task for a process. When the STATUS task attribute of a process changes value, the system causes the exception event of the exception task for that process. (Note that the “exception task” is not necessarily a task; it could be a job.) A program can use the EXCEPTIONTASK task attribute to assign the process that is to be used as the exception task, or to access task attributes of the exception task. For further information, refer to the discussion of interprocess relationships in the Task Management Programming Guide. Range A process can assign any ancestral, sibling, or cousin process as the exception task. Descendant processes cannot be assigned as the exception task. (For a discussion of ancestral, sibling, cousin, and descendant processes, refer to the discussion of interprocess relationships in the Task Management Programming Guide.) An independent process has no exception task. When any process attempts to access the exception task of an independent process, the attempt is treated as a reference to the MYSELF task variable of the accessing process. For remote tasks, the exception task is always the parent process. No other process can be assigned as the exception task. For information about remote tasks, refer to the discussion of tasking across multihost networks in the Task Management Programming Guide. 8600 0502–407 3–77 EXCEPTIONTASK Default For a task, the parent is the default exception task. For a job, the job is its own default exception task. For a task initiated by a session, the controlling MCS is the default exception task. Run-Time Errors UP LEVEL TASK ASSIGNMENT An attempt was made to assign a descendant process as the exception task. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 and HISTORYREASON = 113. NON-ANCESTRAL TASK REFERENCE A sibling or cousin process is assigned as the exception task, and an attempt was made to access the exception event of the exception task using a statement such as “CAUSE (MYSELF.EXCEPTIONTASK.EXCEPTIONEVENT)”. The accessing process is discontinued, even if it is privileged, with HISTORYCAUSE= 2 (PROGRAMCAUSEV) and HISTORYREASON = 130 (NONANCESTRALEXCEPTEVENTV). 3–78 8600 0502–407 Section 4 Task Attributes F through K This section contains task attributes starting with the letters F through K. 8600 0502–407 4–1 FAMILY FAMILY Type String Units Not applicable Range Default See below Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Object code file dominant Supported 55 Synonym None Restrictions None Range ÄÄ ÄÄ = ÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄë ëÄÂÄ OTHERWISE ÄÄ ÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄ ONLY ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ These are each nonquote identifiers. Explanation The FAMILY task attribute can assign one or two substitute disk families to be used whenever the process references the target disk family. The substitute families are called the primary family and the alternate family. The alternate family is optional. The process searches for and creates files on the substitute families whenever it would have used the target family. The following rules determine whether both substitute families, or only the primary family, are searched: • 4–2 When an existing file is being opened or executed, if the file cannot be found on the primary family, the alternate family is searched. If the TITLE file attribute does not include a usercode, then the file is searched for first under the usercode of the process and then as a nonusercoded file on each of the substitute families. 8600 0502–407 FAMILY • When a file is being created, or when the file is the subject of a CHANGE, REMOVE, ARCHIVE, SECURITY, or CATALOG statement, only the primary family is searched. The alternate family is not used. • In the ALTER, MOVE, RESTORE, RESTOREADD, COPY and ADD statements, only the primary family is used for both sources and destinations; the alternate family is not used. The most typical use of this task attribute is to establish a default family for files that do not have a family specified. Such files default to DISK if the FAMILY task attribute is not used. However, if the FAMILY task attribute is used, and the target family specified is DISK, then such files default to the substitute family in the FAMILY value. The following is an example of a FAMILY value that establishes ORDSPACK as the default family for a process: DISK = ORDSPACK OTHERWISE DISK The target family, primary family, and alternate family must be disk families. TAPE cannot be specified as the name of the target family, primary family, or alternate family. During process initiation, when the system searches for an object code file to initiate, the system does not consult the FAMILY attribute of the new process. Instead, the system consults the NAME attribute of the new process and the FAMILY attribute of the initiator, and applies family substitution if appropriate. This applies mainly if you are writing programs that process external code files. Note: The FAMILY attribute has no effect on files that have the SEARCHRULE file attribute set to POSIX. For further information, refer to the descriptions of the SEARCHRULE and PATHNAME file attributes in the File Attributes Programming Reference Manual. Refer also to the description of the CURRENTDIRECTORY task attribute later in this section. Default The default FAMILY setting is null, which means that no substitution takes place. The family specified by the TITLE or FAMILYNAME file attribute is used. If no family name is assigned to either of these file attributes, then DISK is used by default. Inheritance A process inherits the FAMILY value of its parent. A process initiated from a MARC or CANDE session inherits the FAMILY value associated with the session. At log-on time, the session receives the FAMILY usercode attribute associated with the usercode in the USERDATAFILE. The session FAMILY can be changed using a MARC or CANDE FAMILY command. If the job attribute list of a WFL job includes a USERCODE assignment, but no FAMILY assignment, then the job inherits any FAMILY usercode attribute that is defined for the usercode in the USERDATAFILE. 8600 0502–407 4–3 FAMILY If a FAMILY value is assigned to a job queue, that value is inherited by WFL jobs run from that queue. A WFL job is not allowed in a job queue if the job attribute list specifies a FAMILY value different from that of the job queue. However, the job can assign a different FAMILY value after initiation. Examples Consider the following ALGOL program, which declares and opens two different disk files: BEGIN FILE FILE OPEN OPEN END. F(KIND=DISK,DEPENDENTSPECS=TRUE,TITLE="F ON TOOLS."); G(KIND=DISK,DEPENDENTSPECS=TRUE); (F); (G); The following WFL statement would run the program and cause it to search for file F on ORDSPACK and then on DISK if necessary, and to search for file G on DISK: RUN OBJECT/FILEOPEN;FAMILY TOOLS = ORDSPACK OTHERWISE DISK; The following WFL statement would run the program and cause it to search for file F on TOOLS and for file G on ORDSPACK, and then on DISK if necessary: RUN OBJECT/FILEOPEN;FAMILY DISK = ORDSPACK OTHERWISE DISK; WFL supports several different syntax forms for assigning the FAMILY task attribute. The syntax using unquoted literals is shown in the preceding two examples. In addition, WFL supports the use of string primaries to specify the family names, and the use of a single string expression to specify the entire FAMILY value. The following are examples of these forms of the FAMILY syntax: STR1 := "DISK"; STR2 := "USERPACK"; STR3 := "SYS41"; RUN OBJECT/PROG; FAMILY #STR1 = #STR2 OTHERWISE #STR3; STR4 := "USERPACK OTHERWISE SYS41"; RUN OBJECT/PROG; FAMILY = STR1 & " = " & STR4; 4–4 8600 0502–407 FAMILY Run-Time Errors FAMILY ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign FAMILY a value that does not follow the syntax for family specification. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). REQUIRES *PK is the name of the family being searched for, and is the value of the FILENAME attribute of the requested file. > The process waits until an operator takes action. Refer to the System Operations Guide for information on how to respond to waiting processes. 8600 0502–407 4–5 FETCH FETCH Type String Units Not applicable Range Default Null string Read Time Never Write Time Before initiation Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number Synonym Restrictions See below Not supported 52 None Available only in WFL Range A string of up to 256 EBCDIC characters. Explanation The FETCH task attribute stores instructions for the operator. The programmer can assign a string of text to FETCH. The operator can use the PF (Print Fetch) system command to display the FETCH value. If a WFL job contains a FETCH specification, and the system option NOFETCH is reset, then the job cannot be initiated until the operator enters an OK (Reactivate) system command. The operator can set or reset the NOFETCH system option with the OP (Options) system command. Overwrite Rules The FETCH task attribute can be assigned only in the job attribute list in a WFL job. For the syntax of this assignment, refer to the Work Flow Language (WFL) Programming Reference Manual. 4–6 8600 0502–407 FETCH Example The following is an example of a WFL job that contains a FETCH specification. This specification asks the operator to mount several tapes before allowing the job to proceed. BEGIN JOB FILEIT; FETCH = "THIS JOB NEEDS THREE TAPE DRIVES"; RUN NIGHTLY/UPDATE; END JOB 8600 0502–407 4–7 FILEACCESSRULE FILEACCESSRULE Type Mnemonic Units Not applicable Range Default See “Explanation” below DEFAULT Read Time Anytime Write Time See below Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Supported 111 Synonym None Restrictions None Explanation The FILEACCESSRULE task attribute specifies whether file access security checking is based on the identity of the process that declares the file or the process that opens the file. This task attribute is relevant only in cases where the declaring process and the opening process are different because a logical file is being shared among processes. For these cases, the value of the FILEACCESSRULE task attribute of the accessing process determines which type of security checking is used. The following are the possible values and their meanings: Mnemonic Value Integer Value Meaning DEFAULT 0 This value is synonymous with DECLARER. ACTOR 1 File access security checking is based on the identity of the process that accesses the file. Only an MCS or a process with privileged status or tasking status can assign this value to FILEACCESSRULE. DECLARER 2 File access security checking is based on the identity of the process that declares the file. For a further discussion of file access security, refer to the discussion of shared files in the Task Management Programming Guide. 4–8 8600 0502–407 FILEACCESSRULE Write Time The ACTOR value can be assigned only after the process is initiated. The DEFAULT and DECLARER values can be assigned at any time. Inheritance A process inherits the FILEACCESSRULE value of its parent. Run-Time Errors FILEACCESSRULE ATTRIBUTE INCORRECT SYNTAX A process attempted to assign FILEACCESSRULE a value not in the possible range of values. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). PRIVILEGED REQUIRED TO SET FILEACCESSRULE = ACTOR A process that was not an MCS and did not have privileged status or tasking status attempted to assign the FILEACCESSRULE attribute the value ACTOR. The assigning process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 136 (PRIVILEGEREQUIREDV). SETTING FILEACCESSRULE TO ACTOR IS RESTRICTED TO ACTIVE TASKS A process attempted to assign a value of ACTOR to the FILEACCESSRULE task attribute of a task variable that is not in use. This message can also occur if the ACTOR value is assigned through run-time task equation or is inherited from a FILEACCESSRULE assignment in the object code file. This error is nonfatal, but the requested assignment is ignored. 8600 0502–407 4–9 FILEACCOUNTING FILEACCOUNTING Type Mnemonic Units Not applicable Range Default See “Explanation” below See below Read Time Anytime Write Time Before initiation Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number Set to IDENTIFIED if IDENTIFIED is specified for the parent, the usercode, or the system; otherwise, set to ANONYMOUS Standard Not supported 125 Synonym None Restrictions None Explanation The FILEACCOUNTING task attribute specifies whether the system should generate log entries when the process opens or closes a file. You can use FILEACCOUNTING to improve overall system performance by reducing the number of log entries the system generates. The best way to achieve this effect is by establishing a system-wide FILEACCOUNTING default, as described later under “Default and Inheritance.” The following are the possible values of FILEACCOUNTING: 4–10 Mnemonic Value Integer Value Meaning UNSPECIFIED 0 This value has no effect on logging. ANONYMOUS 1 The system does not generate Major Type 1, Minor Type 5 (File Open) or Major Type 1, Minor Type 6 (File Close) log entries for this process. The system keeps general statistics on the file usage of the process, and issues a summary of these statistics as the Major Type 1, Minor Type 25 (File Statistics) log entry when the process terminates. However, if the system is enforcing a DEPTASKACCOUNTING value of ANONYMOUS for the process, then at termination time the system does not generate this log entry. Instead, the system adds the file usage statistics of the process to the file usage statistics of the parent. (Refer to the discussion of the DEPTASKACCOUNTING task attribute.) 8600 0502–407 FILEACCOUNTING Mnemonic Value Integer Value IDENTIFIED 2 Meaning The system generates File Open and File Close log entries for this process. The system does not create any File Statistics log entry for the process, nor does it add file statistics for the process to the parent's statistics. Note that an operator can use the LOGGING (Logging Options) system command to prevent logging of any File Open and File Close log entries. In this case, even processes with FILEACCOUNTING = IDENTIFIED do not receive File Open or File Close log entries. Default and Inheritance A process inherits the FILEACCOUNTING value of its parent. The system administrator can use the ACCOUNTING (Resource Accounting) system command to specify a system-wide default for FILEACCOUNTING. The system administrator can also associate a default value with a usercode by including a FILEACCOUNTING usercode attribute in the usercode definition in the USERDATAFILE. When a process is initiated, the system assigns the FILEACCOUNTING task attribute the maximum of its current value (whether assigned or inherited), the system default value, and the usercode value. The integer values for each FILEACCOUNTING mnemonic were previously listed under the “Explanation” subheading. For example, suppose that FILEACCOUNTING has a value of ANONYMOUS in the task variable, a value of IDENTIFIED at the system level, and a value of UNSPECIFIED at the usercode level. At initiation time, the process is assigned a FILEACCOUNTING value of IDENTIFIED by the system, because IDENTIFIED has a higher numeric value (2) than ANONYMOUS or UNSPECIFIED. On a system running InfoGuard software with a security class of S2, or with the security option ANONACCOUNTING set to the value NOTOK, the system sets FILEACCOUNTING to IDENTIFIED for all processes when they are initiated. This rule overrides all of the other factors affecting the FILEACCOUNTING value. 8600 0502–407 4–11 FILECARDS FILECARDS Type String Units Not applicable Range Default Null string Read Time See below Write Time Anytime Inheritance See below Fork() Inheritance From parent Overwrite Rules See below Host Services Supported Attribute Number Synonym Restrictions 24 FILE None Range ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ , ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÄÄÁÄ FILE ÄÁÄ ÄÄ ÄÁÄÁÄÄ´ ÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ , ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÄÄ ( ÄÁÄ ÄÄ = ÄÄ ÄÁÄ ) ÄÄÄÄÄÄÄÄÄÄÄÄ´ For descriptions of all the file attributes and the values they can be assigned, refer to the File Attributes Programming Reference Manual. 4–12 8600 0502–407 FILECARDS Explanation The FILECARDS task attribute can be used to assign file attributes to one or more of the files declared by the process. Assignments to the FILECARDS task attribute are sometimes referred to as file equations. This task attribute is most frequently assigned by the parent in order to cause a task to use a file different from the one it otherwise would use. The variable corresponds to the internal name of the file as it is declared in the process. The internal name is the value of the INTNAME file attribute. If INTNAME is not assigned for the file, then it receives the file identifier as its value. The FILENAME file attribute has no effect on the internal name. Thus, the following ALGOL file declarations both declare files with an internal name of CARD: FILE CARD(FILENAME="INPUT/DATA."); FILE LINE(INTNAME="CARD.",FILENAME="INPUT/DATA."); If the FILECARDS value assigns attributes to a file that is not declared in the process, no error results, but the file attribute assignments are never used. The file attributes assigned by FILECARDS are assigned to the logical file the first time the process references the file. A process is said to reference a file whenever it accesses a file attribute or opens a file. The FILECARDS file attribute assignments are merged with those in the file declaration. Where there is a conflict, the values assigned through FILECARDS override those assigned in the declaration. The file attributes assigned by FILECARDS, in turn, can be overridden by file attribute assignment statements later in the process. FILECARDS can be assigned either before or during process execution. A given FILECARDS assignment has no affect on files that the process has already referenced at the time the FILECARDS assignment is made. Note that, for a file declared within a procedure, the system creates a new logical file each time the process enters that procedure, and deallocates the logical file each time the process exits the procedure. The system applies the FILECARDS values to the logical file the first time the process references the file after each time the process enters the procedure. Read Time The FILECARDS task attribute can be read at any time from ALGOL. However, the value returned is encoded in an internal form that does not resemble the original FILECARDS assignments. The FILECARDS task attribute returns a null value if read from COBOL and cannot be read from WFL at all. Inheritance Internal processes inherit the FILECARDS value of the parent. 8600 0502–407 4–13 FILECARDS Overwrite Rules In ALGOL or COBOL, if the FILECARDS attribute of a task variable is assigned more than once, each assignment is merged with the previous value of the FILECARDS attribute. A file attribute assignment in the existing value is overwritten only in the following cases: • If the new assignment specifies a different value for the same attribute of the same file. • If a null string is assigned to FILECARDS. In this case, the FILECARDS value is restored to null. In WFL, a FILECARDS assignment is generally merged with the existing FILECARDS value for the same task. However, if the same file is affected by two FILECARDS assignments in the same statement, then the file might be affected only by the later FILECARDS assignment. The two sets of FILECARDS assignments to that file are merged only if at least one of the following conditions is true: • The later FILECARDS assignment includes an asterisk (*) • The construct in the later FILECARDS assignment is a string primary. If neither of the preceding conditions is true, then the first of the two FILECARDS assignments in the statement is discarded. Refer to the WFL examples later under this heading. When a process is initiated, the FILECARDS values given through assignments to the task variable, object code file assignments, and inheritance from the parent are merged into a single FILECARDS value. If these sources assign conflicting values to the same file attribute of the same file, then standard overwrite rules determine which file attribute assignment takes precedence. Examples In WFL, the syntax for assigning FILECARDS is distinguished by several special features, which are illustrated in the following example: 500 RUN OBJECT/DELTA ON PACK; 600 FILE OUT(KIND=DISK,TITLE=(BARNES)ACCUM/DATA ON ORDSPACK); 700 FILE IN=(JACOB)INPUT/DATA ON ORDSPACK; 800 FILECARDS CARD(KIND=READER); The RUN statement at line 500 initiates a task. The statements at lines 600, 700, and 800 are all assignments to the FILECARDS attribute of that task. Although FILECARDS is a string-valued task attribute, in WFL the FILECARDS value is not enclosed in quotation marks ("). The assignment at line 600 shows how multiple file attributes can be assigned to the same file. The assignment at line 700 shows an abbreviated syntax that can be used if TITLE is the only attribute being assigned to a file. Line 800 shows the same syntax as line 600, except that FILECARDS is used instead of its synonym FILE. 4–14 8600 0502–407 FILECARDS The following example demonstrates how repeated FILECARDS assignments are handled in WFL. The comments within the example explain the effects of each assignment. TASK T(FILE OUTFILE(KIND=READER,NEWFILE=TRUE,PROTECTION=SAVE)); % File OUTFILE receives all three file attribute assignments because % they are all part of a single FILECARDS assignment T(FILE OUTFILE(TITLE=A/B), FILE OUTFILE(KIND=DISK), FILE SOURCE(KIND=TAPE), FILE SOURCE(*,TITLE=A/B)); % The second OUTFILE assignment overrides the first one, while the % second SOURCE assignment is merged with the first one because of % the asterisk. The resulting task assignment is equivalent to: % (FILE OUTFILE(KIND=DISK), FILE SOURCE(KIND=TAPE,TITLE=A/B)) % However, this task assignment is merged with the FILECARDS % assignment in the TASK T declaration, with the following result: % (FILE OUTFILE(KIND=DISK,NEWFILE=TRUE,PROTECTION=SAVE), % FILE SOURCE(KIND=TAPE,TITLE=A/B)); RUN OBJECT/TEST [T]; FILE OUTFILE(TITLE=OTHERDATA); FILE OUTFILE(*,SECURITYTYPE=PUBLIC); % The second OUTFILE assignment is merged with the first, because of % the *. Then the result is merged with the previous assignments to % the task variable, for the following combined effect: % (FILE OUTFILE(KIND=DISK,NEWFILE=TRUE,PROTECTION=SAVE,TITLE=OTHERDATA, % SECURITYTYPE=PUBLIC), FILE SOURCE(KIND=TAPE,TITLE=A/B); The CANDE and MARC syntaxes for assigning FILECARDS are the same as the WFL syntax, except that FILECARDS must be referred to by its synonym, FILE. The ALGOL syntax for assigning FILECARDS also differs from that used to assign other string-valued task attributes. The value is terminated by 48"00" instead of by a period (.). The following is an example: REPLACE CTASK.FILECARDS BY "FILE CARD (KIND=DISK, TITLE=ALGOL/TASK);" "FILE CODE (KIND=DISK, TITLE=OBJECT/ALGOL/TASK);" 48"00"; The following ALGOL statement resets the FILECARDS value to a null string: REPLACE T.FILECARDS BY 48"00" ; The following COBOL74 or COBOL85 statements assign attributes to two files. The second assignment does not overwrite the first assignment, but rather is merged with it: CHANGE ATTRIBUTE FILECARDS OF TASK-VAR-1 TO "FILE CARD(KIND=DISK,TITLE=JUNK/JUNK);". CHANGE ATTRIBUTE FILECARDS OF TASK-VAR-1 TO "FILE LINE(KIND=DISK,TITLE=JUNK/JUNK3);". 8600 0502–407 4–15 FILECARDS Run-Time Errors FILECARDS ATTRIBUTE IS READONLY ON ACTIVE TASK An attempt was made to assign the FILECARDS value of an in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYONACTIVEV). FILECARDS ATTRIBUTE INCORRECT SYNTAX There were one or more syntax errors in the file attribute assignments in the FILECARDS value. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). 4–16 8600 0502–407 FILEGROUP FILEGROUP Type String Units Not applicable Range Default Null string Read Time Anytime Write Time Anytime Inheritance See below Overwrite Rules See below Host Services Supported Attribute Number 152 Synonym None Restrictions None Explanation The FILEGROUP task attribute specifies the default group name to be assigned to the GROUP file attribute of any newly created disk files that are owned by the task. The FILEGROUP attribute can be set on the task or in the USERDATAFILE entry for a user. The value set on the task always takes precedence over any value set in the USERDATAFILE for the USERCODE associated with the task. Explicit assignment on the file always takes precedence over any default value set on the task or assigned from the USERDATAFILE. Setting the FILEGROUP attribute to “.” deletes the value set on the task and restores the default setting from the USERDATAFILE (if set). Interrogating the FILEGROUP attribute only returns the value set on the task. The FILEGROUP attribute set for the user is not returned by this task attribute. Use the DEFAULTGROUP task attribute to determine the “effective” FILEGROUP value associated with the task. Refer to the DEFAULTFILEGROUP task attribute description for more information. Setting the FILEGROUP attribute to 48"00" causes both the FILEGROUP value assigned to the task and the task’s FILEGROUP value assigned from the USERDATAFILE to be deleted. This can be used to disable any default group assignment by the task. Inheritance The FILEGROUP attribute set on the task is inherited from the parent if not set on the child task. The FILEGROUP attribute associated with the USERCODE follows inheritance of the USERCODE attribute. That is, if the USERCODE attribute of a task is inherited from the 8600 0502–407 4–17 FILEGROUP parent, then the task also inherits the user’s setting for the FILEGROUP attribute if it is set in the parent task. If the user’s FILEGROUP value is not set on the parent task, then any user FILEGROUP value for the child task is deleted. When the USERCODE attribute of a task is changed, the task’s FILEGROUP value associated with the user is changed to the value associated with the new usercode. For task-to-task assignment of the USERCODE attribute, the value is assigned from the source task variable. For string assignment of the USERCODE attribute, the value is assigned from the USERDATAFILE. In either case, if the value is not set for the new USERCODE, the user FILEGROUP value for the task is deleted. If the USERCODE attribute of the task is set to “.”, then the user FILEGROUP value for the task is deleted. The FILEGROUP value assigned to the task is unaffected by changes to the USERCODE attribute. 4–18 8600 0502–407 FILEMASK FILEMASK Type Real Units Not applicable Range 0 to (2**9) - 1 Default 0 Read Time Anytime Write Time Anytime Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Standard Supported 143 Synonym None Restrictions None Explanation The FILEMASK task attribute is used in conjunction with the SECURITYMODE file attribute to control the security of newly created disk files. FILEMASK and SECURITYMODE are related as follows: • Any bits that are set to 1 in the FILEMASK task attribute cause the corresponding bits to be set to 0 in the SECURITYMODE attribute when a disk file is created by the process. Note that this effect is stronger than establishing a default. Bits that are set in the FILEMASK value override even SECURITYMODE bits that were previously set by file attribute assignments in effect when creating the file. • Any bits that are set to 0 in the FILEMASK task attribute have no effect on the corresponding bits of the SECURITYMODE attribute. 8600 0502–407 4–19 FILEMASK The following are the effects of the individual bits in the FILEMASK value: Field Meaning if Set to 1 [47:39] Field reserved for future use. [08:01] Prevents the owner from reading the file. [07:01] Prevents the owner from writing to the file. [06:01] Prevents the owner from executing the file. [05:01] Prevents group members from reading the file. [04:01] Prevents group members from writing to the file. [03:01] Prevents group members from executing the file. [02:01] Prevents other users from reading the file. [01:01] Prevents other users from writing to the file. [00:01] Prevents other users from executing the file. This task attribute has no effect on the security of existing files. For details about the SECURITYMODE file attribute, refer to the I/O Subsystem Programming Guide and the File Attributes Programming Reference Manual. Example The following ALGOL statement sets all of the bits in the task's FILEMASK attribute. MYSELF.FILEMASK := REAL (NOT FALSE); The preceding statement causes all the file permission bits of the SECURITYMODE file attribute to be set to 0 when the file is created. 4–20 8600 0502–407 GROUPCODE GROUPCODE Type String Units Not applicable Range Default Null string Read Time Anytime Write Time Never Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent None (read-only) Supported 132 Synonym None Restrictions None Explanation and Inheritance The GROUPCODE task attribute is a read-only attribute that specifies the group code of the process. Group codes play the following roles in system security: • Group codes affect the file access rights accorded to processes. The SECURITYMODE file attribute specifies file access rights for processes whose GROUPCODE or SUPPLEMENTARYGRPS values match the GROUP attribute of a file. • Group codes help control access rights for signals and semaphores, which are described in the POSIX User's Guide. When a process is initiated from a CANDE or MARC session, the GROUPCODE task attribute inherits the value of the GROUPCODE usercode attribute associated with the usercode of the process. Similarly, whenever a WFL job is initiated, the GROUPCODE task attribute inherits the value of the GROUPCODE usercode attribute associated with the usercode of the job. For library processes initiated by the library linkage mechanism, GROUPCODE inherits the GROUPCODE value of the process that is linking to the library. Any process that inherits the USERCODE attribute from the parent also inherits the GROUPCODE attribute from the parent. 8600 0502–407 4–21 GROUPCODE If the SETGROUPCODE subattribute of the SECURITYMODE attribute of the code file was set, then • The initial GROUPCODE value is taken from the GROUP attribute of the code file. A copy of the initial GROUPCODE value is stored in the SAVEDGROUPCODE task attribute. A copy of the GROUPCODE value the process would have received from the initiating process is stored in the REALGROUPCODE task attribute. A process can use various functions to toggle the GROUPCODE attribute value between the values stored in the REALGROUPCODE and SAVEDGROUPCODE task attributes. For further information about toggling between the real and saved group codes, refer to the discussion of process identities in the Task Management Programming Guide. • The system nulls the GROUPCODE value in the task variable when the process terminates. If a process is initiated with a different USERCODE value than the parent, or if the process is assigned a different USERCODE value after being initiated, then the system automatically updates the GROUPCODE task attribute value in one of the following ways: • If USERCODE is assigned the USERCODE value of another task variable, the system updates the GROUPCODE value with the GROUPCODE of the other task variable. For example, suppose the following statement is used: REPLACE MYSELF.USERCODE BY TVAR.USERCODE; In this case, the system copies the value from TVAR.GROUPCODE to MYSELF.GROUPCODE. • If USERCODE is assigned in any other way, the system updates the GROUPCODE task attribute with the value of the GROUPCODE usercode attribute for the new usercode. For example, suppose the following statement is used: REPLACE MYSELF.USERCODE BY "REXP/MYPASS."; In this case, the system examines the REXP usercode definition in the USERDATAFILE, and copies the value of the GROUPCODE usercode attribute to MYSELF.GROUPCODE. 4–22 8600 0502–407 HISTORY HISTORY Type Real Units Not applicable Range Default See “Explanation” below 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Not supported 10 Synonym None Restrictions None Explanation The HISTORY task attribute records the type of termination a process had, and if termination were abnormal, it stores information about why the abnormal termination occurred. The HISTORY value is divided into the following fields: Field Meaning [47:01] The operating system sometimes sets this bit for internal purposes. [46:01] If this bit is set, and field [07:08] stores a value of 4, then process initiation failed. [45:01] If this bit is set, the process cannot be discontinued. [44:01] This bit indicates a DS not trappable by TRY error-handling code unless the PROTECTED option is set. For more information about the TRY statement, refer to the Task Management Programming Guide. [43:20] The operating system sometimes stores information in this field for internal purposes. [23:08] If the process was discontinued or is suspended, this field stores the specific reason. This field corresponds to the value of the HISTORYREASON task attribute. Refer to the HISTORYREASON description for details. [15:08] If this process was discontinued or is suspended, this field stores the general reason. This field corresponds to the value of the HISTORYCAUSE task attribute. Refer to the HISTORYCAUSE description for details. [07:08] This field stores information about the process state. If the process has terminated, this field also records the general type of termination. This field corresponds to the value of the HISTORYTYPE task attribute. Refer to the HISTORYTYPE description for details. For details about how to access these fields, refer to “Accessing Task Attributes at the Bit Level” in Section 1. 8600 0502–407 4–23 HISTORYCAUSE HISTORYCAUSE Type Mnemonic Units Not applicable Range Default See “Explanation” below 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Supported 67 Synonym None Restrictions None Explanation The HISTORYCAUSE task attribute specifies what general type of condition caused the process to terminate abnormally or to suspend. The HISTORYCAUSE value is the same as field [15:08] of the HISTORY task attribute. If the process did not terminate abnormally and is not suspended, the HISTORYCAUSE value is 0. No mnemonic is associated with this value. If the process terminated abnormally, then the HISTORYTYPE value is DSEDV, and the following are the possible HISTORYCAUSE values and their meanings: Mnemonic Value Integer Value (none) 0 The process has not been initiated, is still in use, or terminated normally. OPERATORCAUSEV 1 The process was discontinued by a system command such as DS (Discontinue). PROGRAMCAUSEV 2 The process was deliberately terminated for one of the following reasons: RESOURCECAUSEV 4–24 3 Meaning • A value of TERMINATED was programmatically assigned to the STATUS task attribute. • The process attempted an action that is not allowed by the operating system. The process was terminated for exceeding a resource limit, such as MAXPROCTIME or MAXIOTIME. 8600 0502–407 HISTORYCAUSE Mnemonic Value Integer Value FAULTCAUSEV 4 The process was terminated because it requested a machine operation that could not be executed, such as dividing by zero or reading past the end of an array. SYSTEMCAUSEV 5 The process was terminated because it violated a system parameter, such as overlay row size or the amount of memory allowed. DCERRCAUSEV or DCERRV 6 The process was terminated because of a data comm error. IOERRCAUSEV or IOERRV 7 The process was terminated because of a physical I/O error. SOFTIOERRCAUSEV or SOFTIOERRV 8 The process was terminated because of a logical I/O error. NEWIOERRCAUSEV or NEWIOERRV 9 The process was terminated because of an error in opening a file. UNIMPLEMENTEDCAUSEV or UNIMPLEMENTEDV 10 The process was terminated because it attempted to use a feature that has not been implemented. UNSPECIFIEDCAUSEV 11 The process was terminated because of an error of an unknown type. EBDMSERRCAUSEV or EBDMSERRV 12 The process was terminated because of a Data Management System II (DMSII) error. NETWORKCAUSEV 13 The process was terminated because of a BNArelated error. For example, the process might have failed initiation because of a missing host or a missing object code file on a remote host. SOFTIOERR2CAUSEV or SOFTIOERR2V 14 The process was terminated because of a logical I/O error. Meaning If the process is suspended, then the HISTORYTYPE value is STEDV, and the following are the possible HISTORYCAUSE values and their meanings: Mnemonic Value Integer Value OPERATORCAUSEV 1 The process was suspended by the ST (Stop) system command. PROGRAMCAUSEV 2 The process was suspended for one of the following reasons: 8600 0502–407 Meaning • A resource needed by the process is missing. • The STATUS task attribute was programmatically assigned a value of SUSPENDED. 4–25 HISTORYCAUSE Mnemonic Value Integer Value SYSTEMCAUSEV 5 The process was suspended because of a shortage of available memory. NETWORKCAUSEV 13 The process was suspended because of a BNA condition. Meaning For a list of process termination messages and their relationship to HISTORYCAUSE values, refer to the discussion of process history in the Task Management Programming Guide. 4–26 8600 0502–407 HISTORYREASON HISTORYREASON Type Mnemonic Units Not applicable Range Default See “Explanation” below 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number Synonym Restrictions None (read-only) Supported 68 None Not available in WFL; however, for a description of how to extract the same information from the HISTORY task attribute, refer to “Accessing Task Attributes at the Bit Level” in Section 1. Explanation The HISTORYREASON task attribute indicates the specific reason why a process terminated abnormally, failed to initiate or was suspended. The HISTORYREASON value corresponds to field [23:08] of the HISTORY task attribute. Most HISTORYREASON integer values have mnemonics associated with them. Each mnemonic briefly describes one reason this HISTORYREASON integer value could have occurred. You can determine which mnemonic applies in a particular case by using the HISTORYREASON integer value with the HISTORYTYPE and HISTORYCAUSE values. If the process did not terminate abnormally and is not suspended, the HISTORYREASON value is 0. No mnemonic is associated with this value. One standard method of reading mnemonic-valued task attributes might yield confusing results if applied to HISTORYREASON. The following is an ALGOL example of this method: IF T.HISTORYREASON = VALUE(DIVIDEBYZEROV) THEN ... The mnemonic DIVIDEBYZERO is associated with a HISTORYREASON value of 1. The expression shown in the example evaluates to TRUE whenever HISTORYREASON has a value of 1. However, a HISTORYREASON value of 1 indicates a DIVIDEBYZERO error only if HISTORYTYPE = DSEDV and HISTORYCAUSE = FAULTCAUSEV. 8600 0502–407 4–27 HISTORYREASON The following is a better method of reading HISTORYREASON. This example evaluates to TRUE only if a DIVIDEBYZERO error occurred: IF T.HISTORYTYPE = VALUE(DSEDV) AND T.HISTORYCAUSE = VALUE(FAULTCAUSEV) AND T.HISTORYREASON = VALUE(DIVIDEBYZEROV) THEN ... The following pages list the possible HISTORYREASON values for each combination of HISTORYTYPE and HISTORYCAUSE values. For HISTORYREASON values that have mnemonics, the mnemonics are listed under the column heading “Mnemonic Value.” For HISTORYREASON values that do not have mnemonics, a short explanatory phrase is listed under the column heading “History Reason (No Mnemonic).” HISTORYTYPE = 3 (STEDV), HISTORYCAUSE = 1 (OPERATORCAUSEV) Integer Value Mnemonic Value 0 (No mnemonic. This value means the ST (Stop) system command was entered from an ODT.) 1 REMOTELYCAUSEDV HISTORYTYPE = 3 (STEDV), HISTORYCAUSE = 2 (PROGRAMCAUSEV) Integer Value 1 Mnemonic Value RESPONSEREQUIRED HISTORYTYPE = 3 (STEDV), HISTORYCAUSE = 13 (NETWORKCAUSEV) Integer Value 3 Mnemonic Value SUSPENDEDV HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 1 (OPERATORCAUSEV) Integer Value 4–28 Mnemonic Value 0 RSVPV 1 CLEARUNITV 2 JUSTDSEDV 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 2 (PROGRAMCAUSEV) Integer Value 8600 0502–407 Mnemonic Value 0 MISSINGCODEFILENAMEV 1 MISSINGCODEFILEV 2 ALREADYRUNNINGV 3 INITACTIVETASKV 4 NOEXTERNALRUNV 5 VISITNONACTIVEV 6 ILLEGALVISITV 7 DYNCODEEOFV 8 BADD1STRETCHV 9 ATTREADONLYV 11 NOTSESSIONNUMBERV 12 NONANCESTRALTASKFILEV 13 NOTIMPLEMENTEDV 14 INVALIDCHARGECODEV 15 INCOMPATIBLEBOXESV 18 DEATHINFAMILYV 19 CRITICALBLOCKV 20 BADGOTOV 23 INVALIDPARAMETERV 25 INCOMPATIBLECODEV 26 NOTEXECUTABLEV 27 UNMATCHEDPARAMSV 28 INVCOMPILERVV 29 SECURITYERRORV 30 LIBMAINTV 31 ILLEGALTASKXFERV 32 BADRESIZEDEALLOCV 33 READONLYONACTIVEV 37 MISSINGINTRINSICV 38 INCOMPATIBLELEVELV 39 INFANTICIDEV 40 NOTBOUNDV 41 ILLEGALOWNARRAYV 4–29 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 2 (PROGRAMCAUSEV) Integer Value 4–30 Mnemonic Value 42 DIMSIZERRORV 43 UPLEVELATTACHV 44 ILLEGALSWAPV 46 BADTASKATTRIBUTEV 47 MISSINGCARDDECKV 48 BADRESTARTV 49 BADEVENTUSAGEV 50 BADGIVELOCKV 51 BADGETLOCKV 52 ONLYMCSMAYSETV 53 DCKEYINSIZEV 54 ONLYMCSTASKINGV 56 NONOWNERACCESSV 57 COMPILERSONLYV 58 TASKLIMITEXCEEDEDV 59 AXBADARRAYV 60 RUNTIMEWFLV 61 COMPILERERRORV 62 XSPARAMSV 63 SORTKILLV 66 LIBMISSINGNAMEV 68 LIBNOTINITIATEDV 69 CYCLICPROVISIONV 70 PREVIOUSLYFROZENLIBV 71 LIBIMPLEMENTATIONERRORV 73 NONUNIQLIBV 74 SAVELIBTASKNEVERCALLEDV 75 LIBNEVERFROZEV 77 BADLIBTASKV 78 LIBFEATURENOTIMPLEMENTEDV 79 BADCOMPILERINDEXV 80 LIBNOTPROCESSEDORRUNV 82 INVALIDPARAMV 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 2 (PROGRAMCAUSEV) Integer Value 8600 0502–407 Mnemonic Value 83 FORTRANERRV 84 PLIRUNTIMEERRV 85 INTRINSICSERRV 86 MATHERRV 87 FORMATERRV 88 LIBDEIMPLEMENTATIONERRORV 89 LIBLEVELINCOMPATIBLEV 90 BADLIBTITLEV 91 CANTLINKTOASYSTEMLIBV 92 NOTASYSTEMLIBV 93 NOTLIBRARYCAPABLEV 94 LISTSERRORV 95 LIBPARENTNOTALIBV 96 HOLDNOTALLOWEDV 97 INVALIDATTVALUEV 98 UNAUTHORIZEDLIBUSEV 99 FOREIGNTASKINITFAILV 100 PORTSERRORV 101 LIBCANCELERRV 102 INVALIDSAVECORELIMITV 103 NONVISTASKFILEV 104 BADINSCRIBEV 105 BADERASEV 106 CLIENTDIEDINACRV 107 BADPOBOXUSAGEV 108 INVALIDSTKNOV 109 BADTCPREQV 110 BYRESTRICTIONV 111 LIBWRONGMARKLEVELV 112 NOINITIATORV 113 UPLEVELTASKASSIGNV 114 FRAMEEXCEEDEDV 115 CODEFILEINCOMPATIBLEWITHMCPV 4–31 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 2 (PROGRAMCAUSEV) Integer Value 4–32 Mnemonic Value 116 CODEFILENOTACTIVEV 117 BADPPBV 123 STACKHASFAMILYV 124 FASTTASKFAULTEDV 125 DATABASEDIEDV 126 LIBRARYDIEDV 127 STACKHASUNITATTACHEDV 128 RESTRICTEDACCESSV 129 ATTWRITEONLYV 130 NONANCESTRALEXCEPTEVENTV 131 INCORRECTSYNTAXV 132 ATTACCESSFAULTV 133 INVALIDLSNV 134 DATACOMMNOTACTIVEV 135 VALUETOOLARGEV 136 PRIVILEGEREQUIREDV 137 NONLOCALACCEPTEVENTV 138 INVSCHEDACTV 139 INVTIMESTATV 140 INVREACTIVATEV 141 INVSOURCEV 142 INVDUMPPARAMV 143 INVCPMACTIONV 144 INVPREFACTIONV 145 INVDISCONNECTV 146 INVDESTINATIONV 147 BLOCKHASNOSCWV 148 PRPROVIDERGONEV 149 LIBWRONGCODEFILEV 150 STEPPARENTDIEDV 151 CRITICALSBDESTROYDV 152 BADCLINDEXV 153 BADAPPROVALRSLTV 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 2 (PROGRAMCAUSEV) Integer Value Mnemonic Value 154 CHANGEFAULTV 155 APPROVALFAULTV 156 LINKFAILEDV 157 LINKNOTALLOWEDV 158 AUTOLINKERRV 159 CIAINCORRECTSTATEV 160 CIABADPARAMETERV 161 CIABADLEVELSV 162 CIADSEDV 163 CIAUNSUPPORTEDV 164 BADFPBV HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 3 (RESOURCECAUSEV) Integer Value 8600 0502–407 Mnemonic Value 0 PROCESSEXCEEDEDV 1 IOEXCEEDEDV 2 STACKEXCEEDEDV 3 PRINTEXCEEDEDV 6 MEMORYEXCEEDEDV 8 TAPEEXCEEDEDV 9 WAITEXCEEDEDV 10 ELAPSEDEXCEEDEDV 12 STRINGPOOLEXCEEDEDV 13 FAMILYSIZEEXCEEDEDV 14 SAVECORELIMITEXCEEDEDV 15 CAUEXCEEDEDV 16 SEGLIMITEXCEEDEDV 4–33 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 4 (FAULTCAUSEV) 4–34 Integer Value Mnemonic Value 1 DIVIDEBYZEROV 2 EXPOVERFLOWV 3 EXPUNDERFLOWV 4 INVALIDINDEXV 5 INTEGEROVERFLOWV 6 INACTIVEQV 7 MEMORYPROTECTV 8 INVALIDOPV 9 LOOPV 10 MEMORYPARITYV 11 SCANPARITYV 12 INVALIDADDRESSV 13 STACKOVERFLOWV 14 STRINGPROTECTV 16 FALSEASSERTV 17 SEQUENCEERRORV 18 INVALIDPCWV 19 STACKUNDERFLOWV 21 LIBLINKERRORV 22 INVALIDINTV 23 MEMFAIL1V 26 MEMORYFAIL2V 30 PROCINTERNALV 35 PROCDIEDV 37 BCLPOINTERV 40 DISKPARITYV 41 EMODEVIOLATIONV 42 NOACTIVELINKV 43 PROCLINKPARITYV 45 BOTTOMOFSTACKV 46 RUNLIGHTOUTV 47 STACKSTRUCTUREV 48 BADMSCWV 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 5 (SYSTEMCAUSEV) Integer Value Mnemonic Value 1 NOMEMV 2 PARITYONPBITV 3 ARRAYTOOLARGEV 4 INCOMPATIBLEWFLJOBFILEV 8 FORCIBLECLOSEV The process was using an object code file or a data file on a disk unit that was closed by the CLOSE PK :DS form of the CLOSE (Close Pack) system command. 9 SOFTINTERRORV The MCP encountered an error while handling software interrupts. 10 APPLICATIONTIMEOUTV A registered application failed to check in. HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 6 (DCERRCAUSEV) Integer Value History Reason (No Mnemonic) 10 Message size error 12 Unknown file or station 13 File subtraction error HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 7 (IOERRCAUSEV) Integer Value History Reason (No Mnemonic) 0 Either a train printer I/O error occurred and could not be resolved, or else the MCP procedure PATHRES did not successfully complete. PATHRES performs functions such as loading disk controller firmware. 6 Direct I/O attribute error HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 8600 0502–407 History Reason (No Mnemonic) 0 No error 1 Label parity error 2 Parity error on position 4–35 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 4–36 History Reason (No Mnemonic) 3 Invalid translation 4 Incompatible blocking 5 Illegal output reverse 6 Illegal input reverse 7 Short tape blocking 8 Illegal output file 9 No buffer space 10 No space in header 11 Duplicated file 12 Illegal direct I/O 14 Exceeded resources 15 No unit 16 Illegal optional file 17 Illegal final reel 18 Too many names 19 Failed entry 20 Illegal MYUSE value 21 Illegal NEWFILE value 22 DCOPEN failed 23 No write ring 24 Failed volume entry 25 Illegal unlabeled volume 26 Illegal BLOCKSTRUCTURE or FILETYPE 27 Illegal reel number 28 Find routines failed 29 Illegal backward seek 30 Illegal read reverse 31 Illegal seek 32 Parity error on seek 33 Read on output file 34 Read on unopened file 35 Read reverse on unopened file 36 Seek on unopened file 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 8600 0502–407 History Reason (No Mnemonic) 37 Space forward on output file 38 Write on code file 39 Write on input file 40 Write on unopened file 41 Buffer in use 42 Up-level event 43 Security error 44 No room for buffer 45 Unknown error 46 Logic error 47 Already closed 48 No read before rewrite 49 No read before delete 50 Delete on non-I/O file 51 Illegal update file 52 Incompatible file organization 53 Close not called 54 File information block (FIB) stack transition error 55 Locking error 56 Kind list not allowed 57 Dialog communication failure with other host 59 File not removed on disk 60 File not cataloged 61 Checkpoint file title not changed 62 Write user label error 63 RELEASEHEADER error 64 Tried to write beyond end of file (EOF) 65 Rewrite on non-I/O file 66 Logical/physical file mismatch 67 Seek on output file 68 Tape position error 69 Distributed systems service (DSS) cannot handle this file 70 Access restricted to APL 4–37 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 4–38 History Reason (No Mnemonic) 71 Open after close with lock 72 Illegal write random 73 Illegal read random 74 Not closed 75 Unexpected I/O error 76 Exception in IOHANDLER 77 Cannot link to IOHANDLER 78 Data error 79 Deleted/duplicate record 80 Parity error 81 I/O not done 82 Invalid subfile 83 Broadcast read error 84 Subfile is closed 85 No available buffer 86 No available message 87 Port not connected 88 End of file (EOF) 89 Illegal short block read 90 Break on output 91 Unit in rewind 92 Time limit exceeded 93 File not available 94 No file 95 Mismatched genealogy 96 Mismatched serial number 97 File not resident 98 Pack not present 99 Invalid access code 100 Foreign file open error 101 Port offer error 102 Illegal hostname for foreign file 103 Data might have been lost 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 8600 0502–407 History Reason (No Mnemonic) 104 Record count error 105 Block count error 106 Host not reachable 107 Write lockout 108 FRAMESIZE and INTMODE values incompatible 109 Binary I/O not allowed 110 End of page 111 BCL not allowed on this machine 112 No continuation pack for audited file 113 Cannot be audit file 114 I/O error occurred during flushing of buffers 115 Too many backup files 116 Maximum audit length exceeded 117 Unable to position file at end 118 Unsupported function 119 Bad use of use routines 120 Must have usercode to use DSS 121 Invalid port name 122 Requires direct I/O 123 SB must contain a disk/pack unit 124 EIO logic error 125 Invalid array index 126 Incompatible I/O length 127 SIZEVISIBLE/FRAMESIZE/INTMODE value conflict 128 I/O error occurred during closing of file 129 I/O support library error 130 I/O error 131 INQ_LIST allocation failed 132 End file not allowed 133 I/O error changing host control (HC) unit access mask register (AMR) 134 Unsupported protocol type 135 Protocol error 136 No resource to open port 4–39 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 4–40 History Reason (No Mnemonic) 137 YOURHOST is not in YOURHOSTGROUP 138 User is not an authorized user of the application group 139 Support library unavailable 140 Error in one or more port-subfiles open operations 141 Error in one or more port-subfiles close operations 142 Incompatible attribute value or values 143 Function not available 144 Unacceptable character set 145 Networking not supported 146 TRANSLATE=FORCESOFT not allowed with binary I/O 147 I/O error clearing adapter or unit 148 Access restrictions not met 149 Cannot create restricted file 150 Security error on output tape open 151 Cannot write on guard file 152 Logical I/O not supported for this type of unit 153 Attribute already set in physical file 154 FAMILYOWNER conflicts with task usercode 155 Illegal I/O to coactive disk 156 Coactive unit not in output mode 157 Incompatible with this MCP version 158 DSS dialogue number too large for logical I/O 159 I/O error occurred during closing of file 160 Tape drive mode change operation failed 161 BYTES is not supported by this unit 162 Random add not allowed unless delete-capable 163 Not delete-capable 164 Record has not been read 165 Beyond extend area 166 Record not locked 167 Record position occupied 168 Sequential write not permitted to EFS direct file 170 Attempt to exceed family limit 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 8600 0502–407 History Reason (No Mnemonic) 171 Family integral limit exceeded 172 Attempt to exceed temporary file limit 174 Illegal write option specified 175 Invalid specification of ANYSIZEIO 176 Area length exceeds maximum allowed 177 Logical file INTMODE incompatible with permanent file FRAMESIZE 178 Incompatible FILESTRUCTURE 179 Permanent file FILESTRUCTURE must be STREAM 180 Logical file MAXRECSIZE inconsistent with permanent file MAXRECSIZE 181 Logical file BLOCKSIZE inconsistent with permanent file BLOCKSIZE 182 MAXRECSIZE exceeds AREALENGTH 183 Logical file FRAMESIZE incompatible with permanent file area length 184 Unsupported parameter for this service 185 Local interprocess communication (IPC) not supported for this service 186 Unsupported translation for this service 187 DIOFILESTRUCTURE value requires FILESTRUCTURE to be set 188 Not in proper state for direct I/O to unit EIO 189 Cannot access a file of this FILEKIND 190 Open rejected by correspondent 191 Close rejected by correspondent 192 Endpoint not registered 193 Invalid respond option 194 Service invalid for provider 195 Provider restricted 196 Connect time limit exceeded 197 Correspondent does not support APPLICATIONCONTEXT value 198 Correspondent rejected DEFAULTPCONTEXT value 199 Invalid value or values for DEFINEDPCONTEXTSET 200 Warning—DEFINEDPCONTEXTSET values have changed 201 Warning—port attribute ignored 4–41 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value 4–42 History Reason (No Mnemonic) 202 Invalid associated data 203 Associated data too long 204 Invalid attribute values for respond 205 Invalid attribute values for AWAITOPEN 206 DEPENDENTSPECS must be TRUE when DIOFILESTRUCTURE=SECTORSTREAM 207 Warning—initiator close collision 208 Warning—responder close collision 209 Endpoint incompatible with service 210 Unsupported primitive 211 Open failure in KEYEDIO library 212 Read reverse is not supported by this unit 213 Specified MAXRECSIZE is not supported by this unit 214 MAXRECSIZE must equal BLOCKSIZE for this unit 215 MCP does not support Enterprise Database Server use of this FILESTRUCTURE 216 Insufficient disk space 217 Operator entered OF (Optional File) system command 218 KEYEDIOII write error occurred 219 Unmatched DIOFILESTRUCTURE value 220 Invalid connect TIMELIMIT value 221 Error encoding data 222 No data available to be read 223 Error on broadcast write 224 No buffer available for write 226 Open data was received 227 Open response data was received 228 Close request data was received 229 Close abort data was received 230 Close response data was received 231 More data to come 232 Fault in use routine 233 Logical file MINRECSIZE inconsistent with permanent file MINRECSIZE 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 8 (SOFTIOERRCAUSEV) Integer Value History Reason (No Mnemonic) 233 Logical file MINRECSIZE inconsistent with permanent file MINRECSIZE 234 BASICSERVICE violation 235 Action not valid in this FILESTATE 236 Transparent LOCALSYNTAX cannot be supported for this subfile 237 Open aborted by correspondent 238 Open rejected—transient 241 Requested PROVIDERGROUP not defined 244 Write on read-only file 245 During a file open, either the CENTRALSUPPORT library could not be accessed, or CENTRALSUPPORT reported an error related to CCSVERSION validation, INTMODE/EXTMODE validation, or translation tables availability 248 Operation requires ownership of all available tokens 249 Tape was changed while assigned 250 Word oriented access not supported for KIND=CD 251 NETBIOS name in use 252 Warning: switching between read and write might result in program being discontinued 253 Print System error during backup file open HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 9 (NEWIOERRV) Integer Value Mnemonic Value (No Mnemonic) 20 Data error—no label 37 Remote backup disk error 38 Unknown station 39 Invalid set of attributes HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 10 (UNIMPLEMENTEDCAUSEV) Integer Value 1 8600 0502–407 Mnemonic Value DYNAMICOWNARRAYV 4–43 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 12 (EBDMSERRCAUSEV) There are no mnemonics. The possible numeric values correspond to the category numbers for major categories of Enterprise Database Server exceptions and errors. For a list of the major category numbers and their meanings, refer to the MCP/AS DMSII Application Program Interfaces Programming Guide or the MCP/AS DMSII Interpretive Interface Programming Reference Manual. (Both manuals include the same list of exception and error values.) HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 13 (NETWORKCAUSEV) Integer Value Mnemonic Value 1 DISCONNECTEDV 5 HOSTNOTREACHABLEV 12 TASKPROTOCOLERRORV HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 14 (SOFTIOERR2CAUSEV) Integer Value 4–44 History Reason (No Mnemonic) 12 Reopen stopped by TAPEMANAGER 13 Creation stopped by TAPESERVER 14 Library cannot open this file 15 Assignment stopped by TAPEMANAGER 16 X400: All segments of data were not sent 17 Warning: Attempt to purge LOCKEDFILE tape 18 Warning: Attempt to purge write-protected tape 19 Domain name error: Resolver not available 20 Domain name error: Name service not available 21 Domain name error: Name service unreachable 22 TCP: Connection in use 23 KEYEDIOII: Deadlock, deadly embrace 24 KEYEDIOII: Deadlock, timeout 25 Disk address out of range 26 Destination unreachable 27 An open or close error was reported by the IOHANDLER library 28 Invalid specification of BUFFERSHARING 29 File open with exclusive BUFFERSHARING 30 File open without BUFFERSHARING 31 Last I/O before REWRITE or DELETE must be a READ 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 14 (SOFTIOERR2CAUSEV) Integer Value 8600 0502–407 History Reason (No Mnemonic) 32 Different length record 33 Port file read failed: Buffer less than a segment 34 Port file read failed: Data length specified exceeds the buffer size 35 Port file read failed: Data length exceeds 63000 36 Port file read failed: All segments were not sent 37 Port file read failed: Segment I/O attribute was not set 38 Open error: UNIQUETOKEN expansion exceeds node size 39 Blocks of both logical and permanent file must be integral number of sectors 40 My application process title not recognized 41 My application process invocation ID not recognized 42 My application entity invocation ID not recognized 43 My application entity qualifier not recognized 44 Your application process title not recognized 45 Your application process invocation ID not recognized 46 Your application entity invocation ID not recognized 47 Your application entity qualifier not recognized 48 Invalid specification of APPEND 49 Random write with APPEND set 50 Attempt to purge unlabelled tape 51 Illegal SEEK option specified 52 Illegal READ option specified 53 Incompatible attributes on OPEN where FILEKIND=FIFO 54 FIFO currently has no readers 55 FIFO in use from this logical file 56 Write to FIFO which has no readers 59 Invalid control value for laser beam printer file 60 File already exists 63 Invalid use of TRUNCATE option 64 Open type incompatible with retained file 65 Open type incompatible with duplicated file 67 EXTMODEs of logical file and physical file incompatible 68 Cannot use file, ‘AREAS’, ‘AREASIZE’, or file too large 69 Incompatible FILEUSE specified 4–45 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 14 (SOFTIOERR2CAUSEV) Integer Value 4–46 History Reason (No Mnemonic) 70 Incompatible attributes on OPEN where FILEKIND indicates a special file 71 The permanent directory already exists 72 The permanent directory is not empty 73 Name contains too many nodes 74 Name contains invalid character 78 Read/write interrupted by signal 79 Read/write interrupted by signal, process group is orphaned 85 Sequential I/O after reaching EOF 86 Sequential I/O after unsuccessful seek 87 Interrupted by signal during OPEN 89 Incompatible attributes on OPEN where FILEKIND indicates a permanent directory 90 File IDs longer than 17 characters are not allowed for this kind of file 91 The complex translation failed because the array was too small to hold the translated data 92 The complex translation failed because it ran out of source data prematurely 93 The complex input translation (EXTMODE to INTMODE) failed because it is not supported by the CENTRALSUPPORT library 94 The complex output translation (INTMODE to EXTMODE) failed because it is not supported by the CENTRALSUPPORT library 95 An error occurred in the CENTRALSUPPORT library 96 A fault occurred in the CENTRALSUPPORT library 97 The SYSTEM/CCSFILE is not accessible or is missing 98 User-supplied translate tables cannot be used when complex translation is required 99 Complex translation is not allowed or supported for this file 100 Complex characters are not allowed or supported for this file 101 The CENTRALSUPPORT library does not support complex translation for the INTMODE/EXTMODE values provided 102 The target family for the new permanent directory is not present or is not a volumed disk 103 Cannot open a new file on a shared disk family with this share level 104 The file must be input only or output only 106 A value of the EXTDELIMITER attribute was specified that is incompatible with the other attributes of the file 8600 0502–407 HISTORYREASON HISTORYTYPE = 4 (DSEDV), HISTORYCAUSE = 14 (SOFTIOERR2CAUSEV) Integer Value History Reason (No Mnemonic) 107 An IOHANDLER library did not recognize the version of the INFO array passed to the open routine, and rejected the open 108 The IOHANDLER detected an error in the IOHSTRING parameter set in the virtual file and passed to the IOHANDLER library open procedure 109 The REDIRECTOR IOHANDLER library encountered a protocol error communicating with the server 110 The REDIRECTOR IOHANDLER library could not establish the required NETBIOS session with the server. The address or name of the server is incorrectly specified, the server is offline, or the underlying network software is not working 111 The server responded to the REDIRECTOR negotiate protocol request indicating that it did not support any of the protocols the REDIRECTOR supported 112 The server rejected the credentials supplied during the session setup phase of file open 113 The server rejected the open for capacity reasons 114 The server rejected the share connection requested 115 The file name supplied during the OPEN of a redirected file was invalid for REDIRECTOR 116 The file name supplied during the OPEN of a redirected file indicated that it was formatted as a UNC (Uniform Naming Convention) file name, but was incorrectly formatted 117 The BLOCKSTRUCTURE value for the logical file is incompatible with the BLOCKSTRUCTURE value for the permanent file 119 Library cannot close this file Examples Suppose that the following task attributes have the values shown: HISTORYTYPE = 4 (DSEDV) HISTORYCAUSE = 4 (FAULTCAUSEV) HISTORYREASON = 1 In this context, a HISTORYREASON of 1 means DIVIDEBYZEROV. In other words, the process was discontinued because it attempted to divide by zero. 8600 0502–407 4–47 HISTORYREASON Now suppose that these task attributes have the following values: HISTORYTYPE = 4 (DSEDV) HISTORYCAUSE = 3 (RESOURCECAUSEV) HISTORYREASON = 1 In this context, a HISTORYREASON of 1 means IOEXCEEDEDV. In other words, the process was discontinued because it used more I/O time than was allowed by its MAXIOTIME task attribute value. 4–48 8600 0502–407 HISTORYTYPE HISTORYTYPE Type Mnemonic Units Not applicable Range Default See “Explanation” below NORMALV Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Supported 66 Synonym None Restrictions None Explanation The HISTORYTYPE indicates the type of termination that occurred for a process. The HISTORYTYPE value is identical to field [07:08] of the HISTORY task attribute. Possible values are as follows: Mnemonic Value Integer Value NORMALV 0 The process is still in-use or has not yet been initiated. DUMPINGV 1 The process is performing a program dump. QTEDV 2 The QT system command was used against the process. STEDV 3 The process is suspended. DSEDV 4 The process was discontinued (terminated abnormally). NORMALEOTV 5 The process terminated normally. SYNTAXERRORV 6 The process was a compilation that failed because of syntax errors in the source program. UNKNOWNEOTV 7 The process was terminated by an unknown cause or by a cause related to job queues. DSEDINEPILOGV 8 The process was a WFL job whose initiation failed because the job attribute list included an invalid task attribute assignment; or, the process is executing an EPILOG procedure after having been discontinued. 8600 0502–407 Meaning 4–49 HOSTNAME HOSTNAME Type String Units Not applicable Range Default None Read Time Anytime Write Time Before initiation Inheritance From parent Fork() Inheritance From parent Overwrite Rules See below Host Services Supported Attribute Number 64 Synonym None Restrictions None Range A valid HOSTNAME contains from 1 to 17 alphanumeric characters that include the uppercase letters A through Z and the numerals 0 through 9 only. Explanation The HOSTNAME task attribute specifies the host system on which the process runs. If HOSTNAME is specified before initiation, the object code file is searched for and initiated on the requested host. If HOSTNAME is read after initiation, it returns the name of the host where the process is running. For general information about initiating and controlling tasks on remote host systems, refer to the discussion of tasking across multihost networks in the Task Management Programming Guide. Overwrite Rules Standard overwrite rules apply, except that HOSTNAME task attribute assignments should not be made to an object code file. If HOSTNAME is assigned to an object code file, the process is immediately discontinued as soon as it is initiated. 4–50 8600 0502–407 HOSTNAME Run-Time Errors HOSTNAME ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign HOSTNAME a value that did not follow the simple name syntax. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). HOSTNAME ATTRIBUTE IS READONLY ON ACTIVE TASK An attempt was made to assign a HOSTNAME value to an in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYONACTIVEV). ILLEGAL HOST-TO-HOST TRANSFER OF TASK An attempt was made to initiate a process with a compiled-in HOSTNAME task attribute value. The initiating process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 31 (ILLEGALTASKXFERV). 8600 0502–407 4–51 HSPARAMSIZE HSPARAMSIZE Type Integer Units See below Range Default Read –65535 to +65535 0 Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Not supported 70 Synonym None Restrictions None Explanation The HSPARAMSIZE task attribute records the total length of the parameters passed to this process. This attribute is mainly intended for use by the system software, but can also be read by application programs. Units If the value of HSPARAMSIZE is less than 0, the length is expressed in words. If the value of HSPARAMSIZE is greater than 0, the length is expressed in bytes. 4–52 8600 0502–407 INHERITCREDENTIALS INHERITCREDENTIALS Type Boolean Units Not applicable Range TRUE, FALSE Default TRUE Read Time Anytime Write Time Before initiation Inheritance None Overwrite Rules Host Services Attribute Number Synonym Restrictions Standard Not supported 149 INHERITCREDS None Explanation The INHERITCREDENTIALS attribute controls the inheritance of credentials. By default, credentials are inherited unless the parent task’s credentials are blocked. Credentials are copied if the initiation is for an independent task or if CREDENTIALSBASE is set to TRUE. In all other cases, credentials are shared with the parent task. For information about credential management and Generic Security Service Application Program Interface (GSS-API), see Appendix G in the Security Administration Guide. Examples The following examples show the syntax used to run a program that needs to use server credentials: • To run a program, from MARC or CANDE, that needs to use server credentials, enter the following command: RUN SYSTEM/SPECIAL/SERVICE; CREDENTIALSBASE • To run a program, from MARC or CANDE, that needs to use server credentials but is not allowed to use the credentials of a particular user’s session, enter the following command: RUN SYSTEM/SPECIAL/SERVICE; CREDENTIALSBASE; INHERITCREDENTIALS = FALSE 8600 0502–407 4–53 INHERITMCSSTATUS INHERITMCSSTATUS Type Boolean Units Not applicable Range TRUE, FALSE Default See below Read Time See below Write Time See below Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions FALSE See below Not supported 92 None Not available in WFL Explanation The INHERITMCSSTATUS task attribute controls whether a process inherits MCS status, TASKING status and/or locked program status. MCS status confers special privileges and priority, which are discussed in the Task Management Programming Guide. The INHERITMCSSTATUS task attribute, if TRUE, enables a process to inherit the privileges and priority category of an MCS. If the initiating process is not an MCS, then the INHERITMCSSTATUS task attribute can only be used to remove TASKING and/or locked program status from the process. Use INHERITMCSSTATUS to control TASKING status and locked program status of an internal offspring. If set to FALSE, TASKING status and locked program status are not inherited. Refer to the Task Management Programming Guide for more information about tasking status. For information about locked program status, refer to the LOCKED option of the MP command in the System Commands Operations Reference Manual. Note: Although tasking programs have many of the same privileges as an MCS, the INHERITMCSSTATUS task attribute cannot be used to cause tasking status to be inherited. 4–54 8600 0502–407 INHERITMCSSTATUS Range When the INHERITMCSSTATUS attribute is written, the value range is TRUE or FALSE. Other bits in the value are ignored. When the INHERITMCSSTATUS attribute is read, the value returned contains the following additional information: Field Name Value Meaning [47:01] MCS Status 0 Task does not have MCS status. 1 Task has MCS status. [46:07] MCS Number [39:39] Not used [00:01] InheritMCSStatus The MCS number of the task if the task has MCS status. 0 Task does not inherit MCS status, Tasking Status, or Locked Program status from parent process. 1 Task inherits MCS status from parent process. Default INHERITMCSSTATUS defaults to FALSE for most processes. However, the INHERITMCSSTATUS task attribute defaults to TRUE for internal processes initiated by an MCS. Read Time, Write Time, and Overwrite Rules The INHERITMCSSTATUS of a task variable can be read or written at any time, but only by the following types of programs: • Host Services system software • Libraries with a nonzero linkage class • Programs marked with one or more of the following types of security status: compiler status, MCS status, privileged status, or tasking status. (Note that it is the object code file, rather than the process usercode, that must have the special security status.) For information about linkage classes and about the various types of security status, refer to the Task Management Programming Guide. Although you can assign INHERITMCSSTATUS to object code files, such assignments are ignored when the program is initiated. Similarly, although you can assign INHERITMCSSTATUS through task equations in CANDE and MARC, such assignments have no effect. INHERITMCSSTATUS task equations in WFL result in the run-time error or warning “INHERITMCSSTATUS ATTRIBUTE –RESTRICTED ACCESS”, which is described later under this heading. 8600 0502–407 4–55 INHERITMCSSTATUS Run-Time Error INHERITMCSSTATUS ATTRIBUTE – RESTRICTED ACCESS A program lacking the necessary code file privileges attempted to access the INHERITMCSSTATUS task attribute. The accessing process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 128 (RESTRICTEDACCESSV). 4–56 8600 0502–407 INITPBITCOUNT INITPBITCOUNT Type Real Units Presence-bit operations Range Default 0 to about 4.31E+68 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Not supported 104 Synonym None Restrictions None Explanation The INITPBITCOUNT task attribute returns the number of initial presence-bit interrupts that have been performed for the process since its initiation. For information about initial presence-bit operations, refer to the discussion of controlling process memory usage in the Task Management Programming Guide. 8600 0502–407 4–57 INITPBITTIME INITPBITTIME Type Real Units See below Range Default 0 to about 4.31E+68 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Not supported 105 Synonym None Restrictions None Explanation The INITPBITTIME task attribute returns the total time spent processing initial presencebit interrupts for this process. For information about initial presence-bit operations, refer to the discussion of controlling process memory usage in the Task Management Programming Guide. Units In WFL, this value is returned in units of seconds. In all other languages, this value is returned in units of 2.4 microseconds. 4–58 8600 0502–407 ITINERARY ITINERARY Type String Units Not applicable Range Default Null string Read Time Anytime Write Time Never Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent None (read-only) Supported 72 Synonym None Restrictions None Range ÚêÄÄÄÄÄÄ , ÄÄÄÄÄ¿ ÄÄÁÄ ÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ Explanation The ITINERARY task attribute contains a record of the remote hosts where ancestors of this process were initiated. The leftmost entry in the string is the hostname of the most recent remote ancestor of the process. The next entry in the string is the hostname of the host where the next most recent remote ancestor was initiated, and so forth. The default value of null indicates that the process has no remote ancestors. Inheritance This attribute is inherited verbatim from parent to offspring when the parent and offspring are running on the same host. When the parent and offspring are on different hosts, the offspring inherits the parent's ITINERARY value with an added entry at the left that records the host where the parent is running. 8600 0502–407 4–59 ITINERARY Examples The contents of the ITINERARY attribute for four related processes are shown in the following table: Process ITINERARY Value of Process A “.” B “BLUE.” C “BLUE.” D “YELLOW, BLUE.” The relationship of the processes is as follows: 4–60 • Job A starts on host BLUE. • Job A initiates task B on host YELLOW. • Task B initiates task C on host YELLOW. • Task C initiates task D on host RED. Note that RED does not appear in the ITINERARY value for D because the ITINERARY reflects only the ancestors of D. 8600 0502–407 JOBNUMBER JOBNUMBER Type Integer Units Not applicable Range 100 to 65,535 Default See below Read Time Anytime Write Time See below Inheritance See below Fork() Inheritance Overwrite rules Host Services Attribute Number Value of MIXNUMBER See “Write Time” below Supported 41 Synonym None Restrictions None Explanation For a task, the JOBNUMBER task attribute records the mix number of the job that owns the task. For a job, the JOBNUMBER task attribute value records the job's own mix number. The mix number is a number that uniquely identifies a process and which the system assigns to the process at initiation. A process can read the mix number by using the MIXNUMBER task attribute. For further information about mix numbers and relationships between jobs and tasks, refer to the Task Management Programming Guide. Default and Inheritance The JOBNUMBER value is 0 before initiation. At initiation, a job is automatically assigned a JOBNUMBER value by the system. When you initiate a task from a MARC or CANDE session, the task receives a JOBNUMBER value equal to the session number. All other tasks inherit the JOBNUMBER value of their parents, unless the BDBASE bit is set in the process's OPTION task attribute. In this case, the JOBNUMBER of the process is set to the process's mix number. Range For tasks initiated from a MARC or CANDE session, the JOBNUMBER value equals the session number and can range from 100 up to 65,535. Tasks not initiated from MARC or CANDE inherit the JOBNUMBER value of their parents, unless the BDBASE bit is set in the OPTION task attribute of the process. In this case, the JOBNUMBER of the process is set to the mix number of the process. For 8600 0502–407 4–61 JOBNUMBER these processes, the JOBNUMBER value equals the MIXNUMBER value of MYJOB and is in the range from 100 up to 65,535. Write Time Only a tasking program, MCS, or other system software can effectively assign the JOBNUMBER value. WFL MODIFY statements can assign a JOBNUMBER value to an object code file, but the JOBNUMBER is overridden by the system at initiation time. Similarly, CANDE permits you to specify JOBNUMBER in task equations, but the system overrides the JOBNUMBER value at task initiation time. Run-Time Errors The following errors are fatal unless the accessing process is privileged. JOBNUMBER ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign JOBNUMBER a value less than 0 or greater than 65,535. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). JOBNUMBER ATTRIBUTE IS READONLY ON ACTIVE TASK An attempt was made to assign a JOBNUMBER value to an in-use process. The accessing process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYONACTIVEV). JOBNUMBER ATTRIBUTE MAY ONLY BE SET BY AN MCS OR TASKING PROGRAM A process that was not an MCS or tasking program attempted to assign a value to JOBNUMBER. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 54 (ONLYMCSTASKINGV). JOBNUMBER ATTRIBUTE – RESTRICTED ACCESS A WFL job attempted to task-equate the JOBNUMBER attribute of a task. The WFL job, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 128 (RESTRICTEDACCESSV). JOBNUMBER IS NOT A SESSIONNUMBER An attempt was made to assign JOBNUMBER a value that was not a session number. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 11 (NOTSESSIONNUMBERV). 4–62 8600 0502–407 JOBSUMMARY JOBSUMMARY Type Mnemonic Units Not applicable Range Default See “Explanation” below DEFAULT Read Time Anytime Write Time Anytime Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Inherited from parent if DEPTASKACCOUNTING = IDENTIFIED; otherwise, no job file is created. Standard Supported 81 Synonym None Restrictions None Explanation The JOBSUMMARY task attribute of a job determines whether the job produces a job summary printout. The following are the possible values and their meanings: Mnemonic Value Integer Value DEFAULT 0 If the NOSUMMARY option of the OPTION task attribute is set, then the effects are the same as if JOBSUMMARY had a value of CONDITIONAL. If NOSUMMARY is not set, job summary printing is controlled by the JOBSUMMARY option of the PS DEFAULT system command. This PS DEFAULT JOBSUMMARY option can specify a value of CONDITIONAL, SUPPRESSED, UNCONDITIONAL, or ABORTONLY. These values have the same effects as the corresponding JOBSUMMARY task attribute values. CONDITIONAL 1 The job summary is printed only if one of the following conditions occurs: backup files are produced, the job terminates abnormally, or a descendant compilation encounters a syntax error. 8600 0502–407 Meaning 4–63 JOBSUMMARY Mnemonic Value Integer Value SUPPRESSED 2 Meaning The job summary is suppressed, except in the following circumstances: • The job is submitted from an ODT and has WFL syntax errors. • The job is discontinued because of a job queue conflict, such as requesting a nonexistent job queue, or specifying job attributes that conflict with job queue attributes. Any backup files associated with the job are printed, regardless of whether the job summary prints or not. UNCONDITIONAL 3 The job summary is printed, regardless of how the job terminates or whether there are backup files. ABORTONLY 4 The job summary is printed only if the job or one of its descendants terminates abnormally. The JOBSUMMARY value is not used until the job terminates. If JOBSUMMARY is assigned more than once for an in-use job, only the last assignment before job termination has effect. When a task initiated through a CANDE or MARC RUN command attempts to access its own JOBSUMMARY value, the system actually accesses the JOBSUMMARY value for the session. In other words, for a task initiated by the RUN command from a session, MYSELF.JOBSUMMARY is interpreted as MYJOB.JOBSUMMARY. Any assignments made by the offspring actually affect the job summary for the session. Similarly, for WFL statements submitted through a CANDE or MARC WFL command, MYJOB(JOBSUMMARY) affects the job summary of the session. However, in such WFL statements, MYSELF(JOBSUMMARY) has no effect on the job summary of the session. In MARC, you can also assign the JOBSUMMARY value for a session by using the MARC JOBSUMMARY command. A task initiated from a job can read or modify its own JOBSUMMARY value. However, for a task, the JOBSUMMARY value has no effect, because a task has no job summary. The JOBSUMMARY value of the task's job determines whether a job summary is produced. 4–64 8600 0502–407 JOBSUMMARY Using DESTNAME with JOBSUMMARY The DESTNAME task attribute exists only to support legacy printing applications through message control systems (MCSs). DESTNAME cannot be used to generate print requests. However, if DESTNAME is specified to deliver job summaries, the following rules apply: • The JOBSUMMARY task attribute determines whether a job summary is printed by the Print System and whether one is created for an MCS to print. • A job summary file is created for each service (Print System or MCS) for which printed output is generated. You can control the name of the job summary file created for the Print System with the JOBSUMMARYTITLE task attribute. • If no printed output is created and the JOBSUMMARY task attribute is specified, a job summary is created for the Print System. If no printed output is created and the DESTNAME task attribute is specified, a job summary is created for an MCS. If both the DESTNAME and JOBSUMMARYTITLE attributes are set, two files are created. Whether the Print System job summary is printed depends on the setting of the JOBSUMMARY task attribute. For information on the DESTNAME task attribute, refer to Section 3 in this manual. Run-Time Error JOBSUMMARY ATTRIBUTE INCORRECT SYNTAX An attempt was made to set JOBSUMMARY to a value less than 0 or greater than 3. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). 8600 0502–407 4–65 JOBSUMMARYTITLE JOBSUMMARYTITLE Type String Units Not applicable Range Default Null string Read Time Anytime Write Time Anytime Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Inherited from parent if DEPTASKACCOUNTING = IDENTIFIED; otherwise, set to null string Standard Not supported 97 Synonym None Restrictions None Explanation The JOBSUMMARYTITLE task attribute specifies a title under which the job summary file should be saved. If JOBSUMMARYTITLE is null when the job terminates, then a job summary file is created only if a job summary is to be printed. The job summary file is titled according to default conventions and is removed immediately after printing. If the JOBSUMMARYTITLE value has a nonnull value when the job terminates, then the system creates a permanent job summary file with the value of JOBSUMMARYTITLE as its title. The job summary file is created even if no job summary is to be printed. However, even if a job summary is printed, the job summary file is preserved for possible later use. If the JOBSUMMARYTITLE value includes an ON part, then the file is created on the specified family. Otherwise, the location of the job summary file is determined by the rules discussed for printer backup file media in the Task Management Programming Guide. If a statement assigns JOBSUMMARYTITLE a value that does not include a usercode, then the system automatically prefixes the new JOBSUMMARYTITLE value with the usercode under which the job was initiated. 4–66 8600 0502–407 JOBSUMMARYTITLE Note: If the usercode of the job changes after initiation, and the job then assigns JOBSUMMARYTITLE a value that does not include a usercode, the system prefixes JOBSUMMARYTITLE with the original usercode of the job. If you want the job summary file to be created under the new usercode of the job, you must explicitly specify the desired usercode in the JOBSUMMARYTITLE assignment. Only a privileged process can assign JOBSUMMARYTITLE a usercode different from the usercode of the process. If a nonprivileged process assigns a usercode to JOBSUMMARYTITLE, the usercode must match the usercode of the process and the usercode of the job of the process. A nonprivileged process running without a usercode cannot assign a usercode to JOBSUMMARYTITLE. The JOBSUMMARYTITLE attribute has meaning only for jobs and BDBASE tasks. Whenever a task reads its own JOBSUMMARYTITLE value, a null value is returned. If a task assigns a value to its JOBSUMMARYTITLE value, then no error results but the value remains null. The JOBSUMMARYTITLE for a job is accessed with the MYJOB task variable. The JOBSUMMARYTITLE attribute for a BDBASE task is accessed with the MYSELF task variable. When a task initiated from a CANDE or MARC session attempts to access its own JOBSUMMARYTITLE value, the system actually accesses the JOBSUMMARYTITLE value for the session. In other words, for a task initiated from a session, MYSELF.JOBSUMMARYTITLE is interpreted as MYJOB.JOBSUMMARYTITLE. Any assignments made by the offspring actually affect the job summary for the session. In MARC, you can also assign the JOBSUMMARYTITLE for a session by using the MARC JOBSUMMARYTITLE command. The JOBSUMMARYTITLE value has no effect on the printing of the job summary. For information about controlling job summary printing, and general information about job summaries, refer to the Task Management Programming Guide. Using DESTNAME with JOBSUMMARYTITLE The DESTNAME task attribute exists only to support legacy printing applications through message control systems (MCSs). DESTNAME cannot be used to generate print requests. However, if DESTNAME is specified to deliver job summaries, the following rules apply: • The JOBSUMMARY task attribute determines whether a job summary is printed by the Print System and whether one is created for an MCS to print. • A job summary file is created for each service (Print System or MCS) for which printed output is generated. You can control the name of the job summary file created for the Print System with the JOBSUMMARYTITLE task attribute. • If no printed output is created and the JOBSUMMARY task attribute is specified, a job summary is created for the Print System. If no printed output is created and the DESTNAME task attribute is specified, a job summary is created for an MCS. If both the DESTNAME and JOBSUMMARYTITLE attributes are set, two files are created. Whether the Print System job summary is printed depends on the setting of the JOBSUMMARY task attribute. For information on the DESTNAME task attribute, refer to Section 3 in this manual. 8600 0502–407 4–67 JOBSUMMARYTITLE Run-Time Errors JOBSUMMARYTITLE TASK ATTRIBUTE INCORRECT SYNTAX A process attempted to assign JOBSUMMARYTITLE a value that does not conform to the syntax of a title. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). SECURITY VIOLATION A nonprivileged process attempted to assign JOBSUMMARYTITLE a usercode that is not allowed for that process. The assigning process is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 29 (SECURITYERRORV). The message “INVALID TASK ATTRIBUTE: JOBSUMMARYTITLE” is written in the log. TASK ATTRIBUTE ACCESS FAULT A disk error resulted from an attempt to read or assign the JOBSUMMARYTITLE of a process. The reading or assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 132 (ATTACCESSFAULTV). 4–68 8600 0502–407 Section 5 Task Attributes L through R This section contains task attributes starting with the letters L through R. 8600 0502–407 5–1 LABELFORMAT LABELFORMAT Type Mnemonic Units Not applicable Range Default UNSPECIFIED, ANSI69, ANSI87 UNSPECIFIED Read Time Anytime Write Time Anytime Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Code file dominant Supported 126 Synonym None Restrictions None Explanation The LABELFORMAT task attribute defines the format of the tape label for the first file created on a tape Once the first file on a multifile tape is created, the label format for that tape never changes. The same label format is used for all later files added to a multifile tape, even if the LABELFORMAT value changes before the later files are opened. If a reel switch is performed, all subsequent reels use the same label format as the first file on the first reel. 5–2 8600 0502–407 LABELFORMAT The LABELFORMAT task attribute has three possible values, as follows: Mnemonic Value Integer Value UNSPECIFIED 0 Meaning Generally defaults to the value of the LABELFORMAT system option. The LABELFORMAT system option is controlled through the SYSOPS (System Options) system command; the default value is ANSI69DEFAULT. The system ignores the LABELFORMAT system option and automatically enforces ANSI87 format if the tape drive is compression-capable and either of the following conditions is true: • The COMPRESSIONCONTROL file attribute has a value of SYSTEM and the tape has been purged with the COMPRESSION option. • The COMPRESSIONCONTROL file attribute has a value of USER and the COMPRESSIONREQUESTED file attribute is TRUE. ANSI69 1 Complies with ANSI X3.27 1969 standard. This value overrides the LABELFORMAT system option. ANSI87 2 Complies with ANSI X3.27 1987 standard. This value overrides the LABELFORMAT system option. Note: The system ignores the LABELFORMAT task attribute and automatically enforces the ANSI87 format for the first file on the tape if all the following conditions are true: • The Secure Accountability Facility is activated. • The TAPECHECK security option is set to AUTOMATIC. This option is controlled by the SECOPT (Security Options) system command. • The SECURITYLABELS volume attribute for the tape has a value of TRUE. If the LABELFORMAT value is ANSI69 and the system enforces a value of ANSI87, the system issues the warning message “SECURITYLABELS REQUIRE ANSI87 LABELS BUT OPTION ISN'T SET”. For illustrations of the standard tape label formats supplied by the system software, refer to the I/O Subsystem Programming Guide. 8600 0502–407 5–3 LANGUAGE LANGUAGE Type String Units Not applicable Range Default See below Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Supported 95 Synonym None Restrictions None Range ÄÄ ÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÀÄÁÄ/16\ÄÂÄ ÄÂÄÁÄÙ ÀÄ ÄÄÄÄÄÄÄÄÄÄÄÄÙ Explanation The LANGUAGE task attribute is used by the MultiLingual System (MLS) to determine the language of output messages displayed by a process. The LANGUAGE value affects all messages displayed for the process by the system, including BOT, EOT, and RSVP messages. The LANGUAGE value also establishes a default language to be applied to any MESSAGESEARCHER statements executed by ALGOL programs. You should be especially careful not to misspell the LANGUAGE value, because the system does not notify you of any spelling errors. The system accepts any combination of letters and digits that conforms to the language identifier syntax. If the LANGUAGE value does not correspond to any language that is available on the system, the process messages are displayed in the system default language. Refer to the Unisys e-@ction ClearPath Enterprise Servers MultiLingual System Administration, Operations, and Programming Guide for information about MLS. 5–4 8600 0502–407 LANGUAGE Default and Inheritance A process inherits the LANGUAGE value of its parent. The default value of LANGUAGE is ENGLISH. A different default can be established for the whole system by using the LANGUAGE option of the SYSOPS (System Options) system command. The system administrator can associate a language with a usercode by including a LANGUAGE usercode attribute in the usercode definition in the USERDATAFILE. This language value does not directly affect processes, but it is inherited by MARC or CANDE sessions with that usercode. You can also change the language of a session after log-on by using the MARC or CANDE LANGUAGE command. Processes initiated from the session inherit the current language of the session. The LANGUAGE attribute of a usercode is also inherited by WFL jobs that are assigned that usercode in the job attribute list. However, if the job attribute list also contains a PRINTDEFAULTS assignment, the PRINTDEFAULTS attribute of the usercode is ignored. Run-Time Errors LANGUAGE ATTRIBUTE INCORRECT SYNTAX An attempt was made to assign a LANGUAGE value that did not conform to the language identifier syntax. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). TOO MANY LANGUAGES IN USE BY SYSTEM An attempt was made to assign a language value that would bring the total number of languages in use on the system to greater than 256. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 99 (FOREIGNTASKINITFAILV). 8600 0502–407 5–5 LIBRARY LIBRARY Type String Units Not applicable Range Default Null string Read Time See below Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent See below Not supported 74 Synonym None Restrictions None Range ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ , ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÄÄÁÄ LIBRARY ÄÁÄ ÄÄ ÄÁÄÁÄÄÄÄ´ ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ , ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÄÄ ( ÄÁÄ ÄÄ = ÄÄ ÄÁÄ ) ÄÄÄÄÄÄ´ For a list of possible library attributes and their values, refer to the Task Management Programming Guide Explanation The LIBRARY task attribute assigns library attributes to a client library or connection library declared by the process. The LIBRARY task attribute overrides any conflicting assignments in the library declaration. One typical use of this attribute is to cause a client library to link to a different server library than it otherwise would. The server library to be used can be specified through assignments to the client library attributes LIBACCESS, FUNCTIONNAME, and TITLE. 5–6 8600 0502–407 LIBRARY Another use of the LIBRARY task attribute is to pass a parameter to a library through the LIBPARAMETER library attribute. You can also use the LIBRARY task attribute to cause a connection library to link to a different matching connection library than it otherwise would. The internal name specified in the LIBRARY value should equal the value of the INTNAME library attribute. If the INTNAME attribute was not explicitly assigned a value, then the INTNAME value defaults to the name of the identifier used in the library declaration. LIBRARY can be assigned either before or during process execution. A given LIBRARY assignment has no affect on libraries that the process has already referenced at the time the LIBRARY assignment is made. Read Time The LIBRARY task attribute can be read at any time from ALGOL. However, the value returned is encoded in an internal form that does not resemble the original LIBRARY assignments. The LIBRARY task attribute returns a null value if read from COBOL and cannot be read from WFL at all. Inheritance Internal processes inherit the LIBRARY value of the parent. Overwrite Rules In ALGOL or COBOL, if the LIBRARY attribute of a task variable is assigned more than once, each assignment is merged with the previous value of the LIBRARY attribute. A library attribute assignment in the existing value is overwritten only in the following cases: • If the new assignment specifies a different value for the same attribute of the same library. • If a null string is assigned to LIBRARY. In this case, the LIBRARY value is restored to null. In WFL, a LIBRARY assignment is merged with the existing LIBRARY value if the assignment includes an asterisk or if the library internal name is a string primary. If no asterisk is included, and the library internal name is a name constant, then the previous LIBRARY value is discarded. When a process is initiated, the LIBRARY values assigned through assignments to the task variable, object code file assignments, and inheritance from the parent are merged into a single LIBRARY value. If these sources assign conflicting values to the same library attribute of the same library, then standard overwrite rules determine which library attribute assignment takes precedence. 8600 0502–407 5–7 LIBRARY Examples The following is an example of a LIBRARY assignment in CANDE and in WFL: RUN OBJECT/DAILY/UPDATE; LIBRARY UPDATER (LIBACCESS=BYTITLE, TITLE=OBJECT/UPDATE/MODS); LIBRARY GENROUTINES (TITLE=OBJECT/GENROUTINES/TESTVERSION); The following is an example of a LIBRARY assignment in ALGOL: REPLACE T.LIBRARY BY "LIBRARY L (LIBACCESS = BYFUNCTION,FUNCTIONNAME=MYSUPPORT);" "LIBRARY GENROUTINES (TITLE=OBJECT/GENROUTINES/TEST);" 48"00"; The following ALGOL statement resets the LIBRARY value to a null string: REPLACE T.LIBRARY BY 48"00"; The following COBOL74 or COBOL85 statements assign attributes to two libraries. Both assignments are made to the same task variable, TASK-VAR-1. The second assignment does not overwrite the first assignment, but rather is merged with it: CHANGE ATTRIBUTE LIBRARY OF TASK-VAR-1 TO "LIBRARY L (LIBACCESS=BYFUNCTION,FUNCTIONNAME=""MYSUPPORT"");". CHANGE ATTRIBUTE LIBRARY OF TASK-VAR-1 TO "LIBRARY UPDATER (LIBACCESS = BYFUNCTION);". Run-Time Error LIBRARY ATTRIBUTE INCORRECT SYNTAX There were one or more syntax errors in the library attribute assignments in the LIBRARY value. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). 5–8 8600 0502–407 LIBRARYSTATE LIBRARYSTATE Type Real Units Not applicable Range Default See “Explanation” below 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent None (read-only) Not supported 108 Synonym None Restrictions None Explanation The LIBRARYSTATE task attribute records several types of information about the properties of a library process. The LIBRARYSTATE value is divided into the following fields: Field Name Value [35:01] CL Call 0 Not initiated by connection library linkage 1 Initiated by connection library linkage 0 Private 1 Shared by run unit 4 Shared by all 0 Temporary (The library goes away after the last client delinks.) 1 Permanent (The library remains until thawed and the last client is delinked or the library is DSed.) [30:03] [27:01] Sharing Permanent Note: If a permanent or freeze control library is being thawed or DSed, the exception event for the task will be caused on a transition from permanent to temporary with no users. [26:01] 8600 0502–407 Trusted 0 LINKCLASS is applied to all exported objects 1 Exported objects can each have a LINKCLASS different from the overall process LINKCLASS 5–9 LIBRARYSTATE Field Name Value [25:02] Access 0 Initiated by title 1 Initiated by function Note: Values for this field can be monitored by a parent task or used while in a freeze control procedure. (For example, this could be done to determine the method used by the initiator of the library where initiation by title is not acceptable and the library could then be discontinued.) In addition, the value can change from 0 to 1 if a library was originally initiated by title, but is later accessed by function. [19:04] Security Contains the value of LINKCLASS. See the description of security considerations for libraries in the Task Management Programming Guide for a description of these values. [02:01] Nonresumable 1 Library is not resumable [01:01] Frozen 1 Frozen library [00:01] Library Call 0 Not initiated as a library (for example, a program that was run) 1 Frozen server library process or initiated by the library linkage mechanism. The library linkage mechanism initiates a library program if a process attempts to import an object from a server library or connection library and an instance of the library does not already exist. Note: This field is useful for programs designed to run in either of two ways, as an ordinary process or a frozen server library process. The process reads this field value to determine if it was initiated by the library mechanism; if so, the process executes a FREEZE statement and becomes a frozen server library process. If the process was not initiated by the library linkage mechanism, it can skip the FREEZE statement and take other actions. Example An ALGOL program can use a statement such as the following to determine if it was invoked as a library and take appropriate action: IF BOOLEAN(MYSELF.LIBRARYSTATE) THEN FREEZE(TEMPORARY) ELSE NONLIBACTOR; This IF statement freezes the process as a server library if the process was invoked as a library. Otherwise, it calls a procedure named NONLIBACTOR, which is declared elsewhere in the program. 5–10 8600 0502–407 LIBRARYUSERS LIBRARYUSERS Type Integer Units Linked processes Range Default See below 0 Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number None (read-only) Not supported 101 Synonym None Restrictions None Explanation For server library processes, the LIBRARYUSERS task attribute returns the number of client processes or connection libraries that are currently linked to this server library. If the same process links to the server library through two or more library declarations, the LIBRARYUSERS value counts each declaration as a separate client. If the process is a server library with a permanent or control freeze, then when the LIBRARYUSERS value changes to zero, the system causes the exception event of the process. If LIBRARYUSERS is read for a process that is not a server library, it returns a zero. The LIBRARYUSERS value does not reflect the users of any connection libraries declared by the process. Range The value of LIBRARYUSERS is roughly limited to the number of stacks that a given system is capable of running. This number is anywhere from about 1000 to more than 32000, depending on the model you are using. 8600 0502–407 5–11 LOCKED LOCKED Type Boolean Units Not applicable Range TRUE, FALSE Default FALSE Read Time Anytime Write Time Anytime Inheritance None Fork() Inheritance None Host Services Attribute Number Synonym Not supported 17 None Explanation The LOCKED task attribute provides a means to regulate the timing of two or more processes that access a shared object. If LOCKED has a value of FALSE, then any process can change the value to TRUE and continue normally. However, if LOCKED has a value of TRUE, then any process that attempts to set LOCKED to TRUE stops executing until some other process sets the value of LOCKED to FALSE. If more than one process is waiting to set LOCKED to TRUE, then when another process sets LOCKED to FALSE, one of the waiting processes sets LOCKED back to TRUE and resumes execution. The programmer cannot predict which of the waiting processes resumes execution first. However, the highest priority process has the best chance. The other waiting processes continue to wait until the next time a process sets LOCKED to FALSE. Implicitly, the LOCKED attribute functions by accessing the available state of a predeclared event. This attribute is used mainly in WFL jobs because they cannot access events directly. For a detailed discussion of events, refer to the Task Management Programming Guide. 5–12 8600 0502–407 MAXCARDS MAXCARDS Type Integer Units Punch cards Range Default 0 to 549755813887 0 (unlimited) Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Supported 39 Synonym None Restrictions None Explanation The MAXCARDS task attribute was previously used to limit the number of cards punched by a process. This task attribute is no longer used for that purpose. MAXCARDS stores any integer value assigned to it by a user. The value of this attribute has no effect on the process nor does it report any information. Rather, the value is used for communicating information between processes. Any value stored into a program is inherited in the program’s offspring. Range If a value less than 0 is assigned, the value is changed to 0. If a value greater than the maximum value is assigned, the value is changed to the maximum value, 549755813887. Inheritance A process inherits the MAXCARDS value of its parent. 8600 0502–407 5–13 MAXIOTIME MAXIOTIME Type Real Units Seconds Range Default 0 through about 1319400 (15 days, 6 hours, 30 minutes) See below Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance From parent Overwrite Rules See below Host Services Supported Attribute Number Synonym Restrictions 5 IOTIME None Explanation The MAXIOTIME task attribute specifies the maximum amount of I/O time that a process can use. When the ACCUMIOTIME task attribute reaches the same value as the MAXIOTIME task attribute, the process is discontinued. When a task terminates, the system decrements the MAXIOTIME value of the task's parent by the amount of I/O time recorded by the ACCUMIOTIME attribute of the task. Refer to the ACCUMIOTIME description for details. Default If the MAXIOTIME task attribute is not inherited and the value is not explicitly set, then its value is 0 (zero) and it is treated as unlimited. However, if the value is explicitly set to 0 (zero), it is treated as a limit. If an attempt is made to assign a negative value to the MAXIOTIME attribute, the default value of 0 (zero) is assigned. If MAXIOTIME is accessed through Host Services, bit 47 will always be 0 (zero). 5–14 8600 0502–407 MAXIOTIME Inheritance A process inherits the MAXIOTIME value of its parent. If a job queue has a default value for the IOTIME queue attribute, then that value is inherited by the MAXIOTIME task attribute of WFL jobs run from that queue. If a job queue has a limit value for the IOTIME queue attribute, then WFL jobs that specify a higher MAXIOTIME value in the job attribute list cannot be accepted into that job queue. Overwrite Rules Standard overwrite rules apply, with the following exceptions: • When a task is initiated, the MAXIOTIME value is the minimum of the value inherited from the parent and any value resulting from standard overwrite rules. • For MAXIOTIME assignments to an in-use process, the maximum value that can result is the job's current MAXIOTIME value, minus the amount of I/O time the process has already used. Attempts to assign a higher value result in this maximum value being assigned. No error or warning is issued. Run-Time Errors EXC I/O TIME The process used more I/O time than is allowed by the MAXIOTIME task attribute. The process is discontinued with HISTORYCAUSE = 3 (RESOURCECAUSEV) and HISTORYREASON = 1 (IOEXCEEDEDV). MAXIOTIME ILLEGAL ATTRIBUTE VALUE - TOO LARGE A process attempted to assign MAXIOTIME a value greater than the maximum. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 135 (VALUETOOLARGEV). 8600 0502–407 5–15 MAXLINES MAXLINES Type Integer Units Lines printed Range Default 0 to 274877906943 0 (unlimited) Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance From parent Overwrite Rules See below Host Services Supported Attribute Number Synonym Restrictions 40 PRINTLIMIT None Explanation The MAXLINES task attribute specifies the maximum number of lines that can be printed by a process and its descendants. If a process and its descendants attempt to print more lines than are allowed by this attribute, the process is discontinued. The PRINTCOPIES and DESTINATION file attributes are not considered when determining the number of print lines a process has created. The system uses two different, complementary methods to keep track of the number of lines that have been printed by a parent process and its descendants. 1. For each process, the system maintains a print count that records the total number of lines that have been printed for all the printer files declared by that process. (This print count is stored internally and is not visible to the user.) The system updates this print count whenever the process or any of its descendants writes to a print file declared by the process. The system discontinues the process if the print count reaches a value greater than MAXLINES. 2. If a task declares a print file and then writes to it, the system does not update the print count for the parent of the task. However, when the task terminates, the system subtracts the task's print count from the parent's MAXLINES value and updates the parent's MAXLINES value accordingly. The system discontinues the parent if the new MAXLINES value is lower than the parent's print count. Range If a value less than 0 is assigned, the value is changed to 0. If a value greater than 274877906943 is assigned, the value is changed to 274877906943. 5–16 8600 0502–407 MAXLINES Inheritance A process inherits its parent's MAXLINES value if the parent's MAXLINES value is not unlimited. If a job queue has a default value for the LINES queue attribute, then that value is inherited by the MAXLINES task attribute of WFL jobs run from that queue. If a job queue has a limit value for the LINES queue attribute, then WFL jobs that specify a higher MAXLINES value in the job attribute list cannot be accepted into that job queue. Overwrite Rules Standard overwrite rules apply, with the following exceptions: • When a task is initiated, the MAXLINES value is the minimum of the value inherited from the parent and any value resulting from standard overwrite rules. • For MAXLINES assignments to an in-use process, the maximum value that can result is the job's current MAXLINES value, minus the number of lines the in-use process has already written. Attempts to assign a higher value result in this maximum value being assigned. No error or warning is issued. Run-Time Error PRINT LIMIT EXCEEDED The process attempted to print more lines than were allowed by the MAXLINES value. The process is discontinued with HISTORYCAUSE = 3 (RESOURCECAUSEV) and HISTORYREASON = 3 (PRINTEXCEEDEDV). 8600 0502–407 5–17 MAXPROCTIME MAXPROCTIME Type Real Units Seconds Range Default 0 through about 1319400 (15 days, 6 hours, 30 minutes) See below Read Time Anytime Write Time Anytime Inheritance See below Fork() Inheritance From parent Overwrite Rules See below Host Services Supported Attribute Number 4 Synonym None Restrictions None Explanation The MAXPROCTIME task attribute specifies the maximum amount of processor time that can be used by a process. If the ACCUMPROCTIME task attribute value reaches the same value as MAXPROCTIME, the process is discontinued. When a task terminates, the system decrements the MAXPROCTIME value of the task's parent by the amount of processor time recorded by the ACCUMPROCTIME attribute of the task. Refer to the ACCUMPROCTIME description for details. Default If the MAXPROCTIME attribute is not inherited and the value is not explicitly set, then its value is zero and it is treated as unlimited. However, if the value is explicitly set to zero, it is treated as a limit. If an attempt is made to assign a negative value to the MAXPROCTIME attribute, the default value of zero is assigned. If MAXPROCTIME is accessed through Host Services, bit 47 will always be zero. 5–18 8600 0502–407 MAXPROCTIME Inheritance A process inherits its parent's MAXPROCTIME value if the parent's MAXPROCTIME value is not unlimited. If a job queue has a default value for the PROCESSTIME queue attribute, then that value is inherited by the MAXPROCTIME task attribute of WFL jobs run from that queue. If a job queue has a limit value for the PROCESSTIME queue attribute, then WFL jobs that specify a higher MAXPROCTIME value in the job attribute list cannot be accepted into that job queue. Overwrite Rules Standard overwrite rules apply, with the following exceptions: • When a task is initiated, the MAXPROCTIME value is the minimum of the value inherited from the parent and any value resulting from standard overwrite rules. • For MAXPROCTIME assignments to an in-use process, the maximum value that can result is the job's current MAXPROCTIME value, minus the amount of processor time the process has already used. Attempts to assign a higher value result in this maximum value being assigned. No error or warning is issued. Run-Time Errors EXC PROC TIME The process used more processor time than is allowed by the MAXPROCTIME task attribute. The process is discontinued with HISTORYCAUSE = 3 (RESOURCECAUSEV) and HISTORYREASON = 0 (PROCESSEXCEEDEDV). MAXPROCTIME ILLEGAL ATTRIBUTE VALUE - TOO LARGE A process attempted to assign MAXPROCTIME a value greater than the maximum. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 135 (VALUETOOLARGEV). 8600 0502–407 5–19 MAXWAIT MAXWAIT Type Real Units Seconds Range Default 0 to about 1319400 (15 days, 6 hours, 30 minutes) 0 (Unlimited) Read Time Anytime Write Time Anytime; effective only during Enterprise Database Server operations Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent Standard Supported 49 Synonym None Restrictions None Explanation The MAXWAIT task attribute specifies the maximum number of seconds a process can wait on a BDMS LOCK or SECURE statement in a program. Each of these BDMS statements finds and locks a record in an Enterprise Database Server data set or KEYEDIOII file. These statements cause a process to wait if the requested record is currently locked by another process. The MAXWAIT task attribute also specifies the maximum number of seconds a process can wait on a BDMS BEGIN TRANSACTION or END TRANSACTION statement in a program. In an Enterprise Database Server database, BEGIN TRANSACTION is used to enter transaction state and END TRANSACTION is used to leave transaction state. These statements cause a process to wait if a syncpoint is due and the program in the transaction state that is holding up the syncpoint is not executing any BDMS verbs. If an attempt is made to assign a negative value to the MAXWAIT attribute, the default value of zero is assigned. Note: By default, there is no MAXWAIT value, and the Enterprise Database Server performs an unlimited wait. Once an explicit assignment is made to MAXWAIT, the only means to revert to an unlimited wait is to specify a very large value for the MAXWAIT attribute. An explicit assignment of 0 (or an assignment of a negative value) to MAXWAIT specifies that the process is not to wait at all. If the time limit specified by MAXWAIT is exceeded, the LOCK, BEGIN TRANSACTION, and END TRANSACTION operations fail and the database status word stores a DMERROR of DEADLOCK and a DMERRORTYPE of 2. 5–20 8600 0502–407 MAXWAIT For information about the BDMS LOCK, SECURE, BEGIN TRANSACTION, and END TRANSACTION statements, refer to the MCP/AS ALGOL Programming Reference Manual, Volume 2: Product Interfaces, the MCP/AS COBOL ANSI-85 Programming Reference Manual, Volume 2: Product Interfaces, and the MCP/AS DMSII Application Program Interfaces Programming Guide. If MAXWAIT is accessed through Host Services, bit 47 will always be zero. This attribute should not be confused with the WAITLIMIT task attribute, which specifies the number of seconds a process can wait on an event. Refer to the WAITLIMIT description for details. Inheritance A task inherits the MAXWAIT value of its parent if the parent's MAXWAIT value is not unlimited. Example The following is a BDMSALGOL example: MYSELF.MAXWAIT := 60; LOCK FIRST STUDENT: RSLT; IF BOOLEAN(RSLT) THEN IF RSLT.DMERROR = DEADLOCK THEN IF RSLT.DMERRORTYPE = 2 THEN DISPLAY("RECORD NOT UPDATED - LOCKED BY ANOTHER PROCESS"); In this example, STUDENT is the name of a data set and RSLT is a real variable. Run-Time Error MAXWAIT ILLEGAL ATTRIBUTE VALUE - TOO LARGE A process attempted to assign MAXWAIT a value greater than the maximum. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 135 (VALUETOOLARGEV). 8600 0502–407 5–21 MCSNAME MCSNAME Type String Units Not applicable Range Default See below Read Time Anytime Write Time Never Inheritance See below Fork() Inheritance Overwrite Rules Host Services Attribute Number From parent None (read-only) Supported 122 Synonym None Restrictions None Explanation The MCSNAME task attribute records the name of the message control system (MCS) that initiated this process family, if it was initiated by an MCS. For example, processes initiated from a MARC session have an MCSNAME that refers to COMS. Processes initiated from a CANDE session, even if that session is in a COMS window, have an MCSNAME that refers to CANDE. The exact spelling of the MCSNAME corresponds to the file name of the MCS object code file. No ON part is included. An asterisk (*) might or might not appear at the start of the MCSNAME. For example, the MCSNAME for COMS might be *SYSTEM/COMS. The MCSNAME for CANDE might be SYSTEM/CANDE. Default Before a process is initiated, the default MCSNAME value is a null string. When an MCS sets the SOURCESTATION task attribute of a process, the operating system sets the MCSNAME attribute to the name of the setting MCS. Inheritance A process inherits the MCSNAME value of its parent. If a WFL job is initiated from a CANDE or MARC session or from a task descended from such a session, the WFL job inherits the MCSNAME of the session. 5–22 8600 0502–407 MIXNUMBER MIXNUMBER Type Integer Units Not applicable Range Default -65535 to 65535 See below Read Time Anytime Write Time Never Inheritance None Fork() Inheritance None Overwrite Rules Host Services Attribute Number Synonym Restrictions None (read-only) Supported 1 STACKNO None Explanation The MIXNUMBER task attribute returns the mix number of a process. The mix number uniquely identifies the process in system messages, log entries, and system commands that affect the process. A positive MIXNUMBER value indicates an in-use process or a suspended process. A negative value indicates a terminated process. A zero indicates that the process has not yet been initiated. For a further discussion of mix numbers, refer to the Task Management Programming Guide. Default The system assigns the MIXNUMBER task attribute of a new process the next available mix number that is not in use. 8600 0502–407 5–23 MPID MPID Type String Units Not applicable Range Default Null string Read Time Anytime Write Time Before task initiation Inheritance From parent Fork() Inheritance From parent Overwrite Rules Host Services Attribute Number Standard Not supported 158 Synonym None Restrictions None Explanation The MPID task attribute specifies another identity, in addition to the task name, for a process. This attribute is useful at sites where multiple copies of the same code file are used simultaneously because the attribute value is shown in response to mix-related system commands. Run-Time Errors MPID ATTRIBUTE INCORRECT SYNTAX A process attempted to assign MPID a value that did not conform to the MPID identifier syntax. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 131 (INCORRECTSYNTAXV). MPID ATTRIBUTE IS READONLY ON ACTIVE TASK A process attempted to assign a value to the MPID task attribute of an in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYACTIVEV). 5–24 8600 0502–407 MYPPB MYPPB Type String Units Not applicable Range Default Null Read Time See below Write Time Before initiation Inheritance None Fork() Inheritance Overwrite Rules Host Services Attribute Number Synonym Restrictions From parent Standard Not supported 37 TASK Not available in WFL Range ÚêÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÄÄÁÄÂÄ ÄÂÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄ ÄÄÄÄÄÄÄÄÄÄ´ ÀÄ ÄÄÄÄÄÄÄÄÄÙ For the syntax of these assignments, refer to the Work Flow Language (WFL) Programming Reference Manual. Explanation The MYPPB task attribute provides temporary storage for task equations that are not meant to take effect immediately. The MYPPB task attribute can be assigned only through calls on the HANDLEATTRIBUTES procedure of the WFLSUPPORT system library. The user program can control the behavior of HANDLEATTRIBUTES through several parameters, including one that enables or disables compiler mode and another that specifies a DISPOSITION. 8600 0502–407 5–25 MYPPB HANDLEATTRIBUTES can assign task equations intended for application to a process, task equations intended for application to an object code file, or both. The task equations intended for a process include • Compiler task equations assigned in compiler mode with a DISPOSITION of AIATTACHV. • Noncompiler task equations assigned in noncompiler mode with a DISPOSITION of AIATTACHV. The MYPPB task equations intended for a process are applied when one of the following happens: • The task variable is used in a process initiation statement. • The APPLYLIST task attribute of the task variable is assigned a value of TRUE. The task equations intended for an object code file include all noncompiler task equations assigned in compiler mode with a DISPOSITION of AIATTACHV or AIAPPLYV. The system does not apply these task equations, even when APPLYLIST is set to TRUE or the task variable is used in a process initiation statement. However, if the task variable is used to initiate a compiler, the compiler applies these task equations to the object code file it creates. The HANDLEATTRIBUTES procedure can be invoked repeatedly to make assignments to the MYPPB attribute of the same task variable. In this case, the system merges the task equations provided by each HANDLEATTRIBUTES call with the task equations already stored in MYPPB. If a particular task equation conflicts with an existing task equation, the new task equation overwrites the old one. For a description of the HANDLEATTRIBUTES procedure, refer to “Using WFLSUPPORT to Access Task Attributes” in Section 1, “Accessing Task Attributes.” Read Time The MYPPB task attribute can be read at any time from ALGOL or COBOL. However, the value returned is encoded in an internal form that does not resemble the original MYPPB assignments. Run-Time Error MYPPB ATTRIBUTE IS READONLY ON ACTIVE TASK An attempt was made to assign the MYPPB attribute of an in-use process. The assigning process, if nonprivileged, is discontinued with HISTORYCAUSE = 2 (PROGRAMCAUSEV) and HISTORYREASON = 33 (READONLYONACTIVEV). 5–26 8600 0502–407 NAME NAME Type String Units Not applicable Range Default See below Read Time Anytime Write Time See below Inheritance See below Fork() Inheritance From parent Overwrite Rules See below Host Services Supported Attribute Number 0 Synonym None Restrictions None Explanation The NAME task attribute specifies the name of the process. The name of the process is used in the following ways: • Before initiating an external process, the initiating process typically assigns the NAME task attribute of the task variable of the external process. The NAME value specifies the title of the object code file that is to be initiated. • The NAME value appears in messages and log entries generated for the process. • Guard files can specify that only processes with a given NAME are allowed to access a particular file. Note that the FAMILY attribute used during process initiation is the FAMILY attribute of the initiator, not the FAMILY attribute of the new process. To determine the family to search for the object code file of a process, the system consults the NAME attribute of the new process and the FAMILY attribute of the initiator, and applies family substitution if appropriate. Refer to the FAMILY description for an explanation of family substitution. 8600 0502–407 5–27 NAME Default and Inheritance An internal process inherits the NAME value of its parent. For an external process, the NAME value defaults to the name of the declared external procedure specified in the initiation statement. For example, in ALGOL the following statements initiate a process whose NAME task attribute is DATADC: TASK T; PROCEDURE DATADC; EXTERNAL; PROCESS DATADC [T]; For an internal process, the NAME value is automatically prefixed with the USERCODE task attribute value of the initiating process at initiation time. If an internal process is initiated with a different USERCODE than the initiator, the NAME value is nevertheless prefixed with the USERCODE of the initiator rather than the USERCODE of the internal process. If NAME is explicitly assigned a value that includes a different usercode at the start, this usercode is overwritten with the usercode of the initiating process. For an external process, NAME can specify an object code file with a different usercode than the process or a nonusercoded object code file. If NAME does not explicitly specify a usercode or asterisk (*), then the system searches for the object code file first under the USERCODE of the initiating process, and then as a nonusercoded file. Note that the system uses the USERCODE of the initiating process for this search, not the USERCODE of the new process. Write Time Processes with MCS status or tasking status can modify the NAME task attribute at any time. Processes that lack MCS and tasking status can modify the NAME task attribute only before initiation. 5–28 8600 0502–407 NAME Overwrite Rules Standard overwrite rules are applied. However, you should be aware that the WFL RUN