.TITLE GETUSR .IDENT /V01/ ; ; FORTRAN-CALLABLE SUBROUTINE TO RETURN LIST OF LOGGED-IN USER NAMES ; AND TERMINALS. ; ; CALL GETUSR(IBUF,LBUF,IER) ; ; IBUF: BUFFER TO RECEIVE NAMES AND TERMINALS ; LBUF: NUMBER OF WORDS IN LBUF ; IER: RETURNS 0 = SUCCESS ; -1 = BUFFER NOT LONG ENOUGH ; ; EACH USER NAME REQUIRES 8. WORDS: NAME (12. BYTES, 6. WORDS), ; TERMINAL TYPE (2 BYTES, 1 WORD), TERMINAL NUMBER (1 WORD) ; ; TASK MUST BE LINKED WITH SGA=IASCOM ; ; MOD DATE ; 001 4-JAN-83 RUN THROUGH ALL CLI'S ; ; DEFINITIONS ; ; O2=0 ;(IASCOM IS NOT P.I.) ; GETUSR:: MOV 2(R5),R1 ;ADDRESS BUFFER MOV @4(R5),R2 ;LENGTH OF BUFFER MOV .CITHD+O2,R3 ;ADDRESS CIT 10$: MOV C.TU(R3),R4 ;++001 ADDRESS NEXT UTN 1$: CMP R4,C.TL(R3) ;DONE WITH LIST? BEQ 50$ TST I.UN(R4) ;LOGGED IN? BEQ 5$ SUB #8.,R2 ;COUNT WORDS LEFT BLT ERROR ;NOT ENOUGH MOV I.UN(R4),(R1)+ ;YES--COPY NAME MOV I.UN+2(R4),(R1)+ MOV I.UN+4(R4),(R1)+ MOV I.UN+6(R4),(R1)+ MOV I.UN+10(R4),(R1)+ MOV I.UN+12(R4),(R1)+ MOV I.DN(R4),(R1)+ ;DEVICE TYPE MOVB I.TT(R4),R0 ;DEVICE NUMBER MOV R0,(R1)+ 5$: MOV @R4,R4 ;ADDRESS NEXT UTN BR 1$ ;LOOP ; 50$: ;DONE ALL UTNS TST R2 ;BUFFER FULL? BLE RETN ;YES--RETURN ADD .CITSZ+O2,R3 ;++001 LOOK AT NEXT CLI CMP R3,.CITEND+O2 ;++001 IS THERE ANOTHER? BNE 10$ ;++001 LOOP IF YES CLR (R1)+ ;NO--FLAG END RETN: CLR @6(R5) ;CLEAR RETURN CODE RETURN ; ERROR: MOV #-1,@6(R5) ;ERROR RETURN RETURN .END