      PROGRAM SHOW_PROC
C
C     This program types out your current
C     process name, PID, and image name.
C
      INTEGER*4 IOSB(2),TABLE(10),PROCESS_ID
      CHARACTER*15 PROCESS_NAME
      CHARACTER*80 IMAGE_NAME
      EXTERNAL JPI$_PRCNAM,JPI$_PID
      EXTERNAL JPI$_IMAGNAME
C     Ask for process name
C     We insert 2 words into a longword table
C     by shifting the second one and ORing in the
C     first one.
      TABLE(1) = ISHFT(%LOC(JPI$_PRCNAM),16).OR.
     &   LEN(PROCESS_NAME)
C     We insert an address into the table with %LOC
      TABLE(2) = %LOC(PROCESS_NAME)
      TABLE(3) = %LOC(NAME_LENGTH)
C     Ask for Process ID (PID)
      TABLE(4) = ISHFT(%LOC(JPI$_PID),16).OR.4
      TABLE(5) = %LOC(PROCESS_ID)
C     Specify no length return by putting in 0.
      TABLE(6) = 0
C     Ask for image name
      TABLE(7) = ISHFT(%LOC(JPI$_IMAGNAME),16).OR.
     &   LEN(IMAGE_NAME)
      TABLE(8) = %LOC(IMAGE_NAME)
      TABLE(9) = %LOC(IMAGE_LENGTH)
C     Insert zero to end list
      TABLE(10) = 0
C     I have no idea what goes in the IOSB below !
      CALL IFERR(SYS$GETJPI(%VAL(1),,,TABLE,IOSB,
     &   ,))
      TYPE 100,PROCESS_ID,PROCESS_NAME(1:
     &   NAME_LENGTH)
100   FORMAT(' PROCESS ID : ',Z8,
     &   '. YOUR PROCESS NAME IS : ',A)
      TYPE 101,IMAGE_NAME(1:IMAGE_LENGTH)
101   FORMAT(' FURTHERMORE, YOU ARE RUNNING : ',A)
      STOP 'ALL DONE'
      END
