Y can be a simple character scalar, vector or matrix, or a vector of character vectors representing the names of 0 or more defined functions or operators. Used dyadically, this function closely emulates the APL2 implementation. Used monadically, it returns information that is more appropriate for Dyalog APL.

Y specifies one or more names. If Y specifies a single name as a character scalar, a character vector, or as a scalar enclosed character vector, the result R is a vector. If Y specifies one or more names as a character matrix or as a vector of character vectors R is a matrix with one row per name in Y.

#### Monadic Use

If X is omitted, R is a 4-element vector or a 4 column matrix with the same number of rows as names in Y containing the following attribute information:

R[1] or R[;1]: Each item is a 3-element integer vector representing the function header syntax:

1 | Function result | 0 if the function has no result 1 if the function has an explicit result ¯1 if the function has a shy result |

2 | Function valence | 0 if the object is a niladic function or not a function 1 if the object is a monadic function 2 if the object is a dyadic function ¯2 if the object is an ambivalent function |

3 | Operator valence | 0 if the object is not an operator 1 if the object is a monadic operator 2 if the object is a dyadic operator |

The following values correspond to the syntax shown alongside:

0 0 0 ∇ FOO 1 0 0 ∇ Z←FOO ¯1 0 0 ∇ {Z}←FOO 0 ¯2 0 ∇ {A} FOO B ¯1 1 2 ∇ {Z}←(F OP G)B

R[2] or R[;2]: Each item is the (⎕TS form) timestamp of the time the function was last fixed.

R[3] or R[;3]: Each item is an integer reporting the current ⎕LOCK state of the function:

0 | Not locked |

1 | Cannot display function |

2 | Cannot suspend function |

3 | Cannot display or suspend |

R[4] or R[;4]: Each item is a character vector - the network ID of the user who last fixed (edited) the function.

#### Example

∇ {z}←{l}(fn myop)r [1] ... ∇ z←foo [1] ... ∇ z←{larg}util rarg [1] ... ⎕LOCK'foo' util2←util

]display ⎕AT 'myop' 'foo' 'util' 'util2' .→--------------------------------------------. ↓ .→------. .→-----------------. .→---. | | |¯1 ¯2 1| |1996 8 2 2 13 56 0| 0 |john| | | '~------' '~-----------------' '----' | | .→----. .→------------. .⊖. | | |1 0 0| |0 0 0 0 0 0 0| 3 | | | | '~----' '~------------' '-' | | .→-----. .→------------------. .→---. | | |1 ¯2 0| |1996 3 1 14 12 10 0| 0 |pete| | | '~-----' '~------------------' '----' | | .→-----. .→-------------------. .→-----. | | |1 ¯2 0| |1998 8 26 16 16 42 0| 0 |graeme| | | '~-----' '~-------------------' '------' | '∊--------------------------------------------'

#### Dyadic Use

The dyadic form of ⎕AT emulates APL2. It returns the same rank and shape result containing information that matches the APL2 implementation as closely as possible.

The number of elements or columns in R and their meaning depends upon the value of X which may be 1, 2, 3 or 4.

If X is 1, R specifies valences and contains 3 elements (or columns) whose meaning is as follows:

1 | Explicit result | 1 if the object has an explicit result or is a variable 0 otherwise |

2 | Function valence | 0 if the object is a niladic function or not a function 1 if the object is a monadic function 2 if the object is an ambivalent function |

3 | Operator valence | 0 if the object is not an operator 1 if the object is a monadic operator 2 if the object is a dyadic operator |

If X is 2, R specifies fix times (the time the object was last updated) for functions and operators named in Y. The time is reported as 7 integer elements (or columns) whose meaning is as follows. The fix time reported for names in Y which are not defined functions or operators is 0.

1 | Year |

2 | Month |

3 | Day |

4 | Hour |

5 | Minute |

6 | Second |

7 | Milliseconds (this is always reported as 0) |

If X is 3, R specifies execution properties and contains 4 elements (or columns) whose meaning is as follows:

1 | Displayable | 0 if the object is displayable 1 if the object is not displayable |

2 | Suspendable | 0 if execution will suspend in the object 1 if execution will not suspend in the object |

3 | Weak Interrupt behaviour | 0 if the object responds to interrupt 1 if the object ignores interrupt |

4 | (always 0) |

If X is 4, R specifies object size and contains 2 elements (or columns) which both report the ⎕SIZE of the object.