%PRINT ('File: CLIMAC.REQ, Version V04-000, Edit 3, TJP, 14-DEC-1978') !**************************************************************************** !* * !* COPYRIGHT (c) 1978, 1980, 1982, 1984 BY * !* DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS. * !* ALL RIGHTS RESERVED. * !* * !* THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED * !* ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE * !* INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER * !* COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY * !* OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY * !* TRANSFERRED. * !* * !* THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE * !* AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT * !* CORPORATION. * !* * !* DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS * !* SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. * !* * !* * !**************************************************************************** !++ ! ! MODULE: CLIMAC.REQ ! ! FACILITY: COMMAND LANGUAGE UTILITY INTERFACE ! ! ABSTRACT: REQUIRE FILE WHICH DEFINES THE CLI INTERFACING MACROS ! ! HISTORY: ! ! VERSION: X01.00 ! ! AUTHORS: T.J. PORTER + M.L. JACK 03-MAY-77 ! ! MODIFIED BY: ! ! V03-001 GAS0016 GERRY SMITH 28-OCT-1981 ! FIX $CLIQUALCODES MACRO. ! ! V01-001 T.J. PORTER 14-DEC-1978 ! CHANGE QDFLGS DEFAULT TO NULL STRING ! ! V01-001 C. PETERS 18-APR-1978 ! GIVE QDFLGS A DEFAULT VALUE OF 0. ! ! V01-001 W.W. CLARK 17-OCT-1977 ! ADD QDFLGS AND USRVAL TO $CLIQUALDESC ! !-- !++ ! ! FUNCTIONAL DESCRIPTION: ! ! THIS REQUIRE FILE DEFINES THE BLISS MACROS TO BE USED BY A UTILITY ! WHICH IMPLEMENTS A COMMAND OF THE VMS OPERATING SYSTEM. THE ! MACROS ARE THOSE FOR DECLARING THE BLOCKS USED IN THE COMMUNICATION ! BETWEEN THE UTILITY AND THE RESULT PARSER OF THE COMMAND ! LANGUAGE INTERPRETER. THE NAMES AND CALLING SEQUENCES ARE AS DESCRIBED ! IN VMS DOCUMENTATION. ! !-- ! ! CREATE A CLI REQUEST DESCRIPTOR BLOCK ! KEYWORDMACRO $CLIREQDESC(RQTYPE, BITNUM=0, RQFLGS, ERRACT=0, PRSACT=0, ABSACT=0, QUALST=0)= BLOCK[CLI$C_REQDESC,BYTE] INITIAL( BYTE(%NAME('CLI$K_',RQTYPE)), ! REQUEST TYPE BYTE BYTE(BITNUM), ! PARAMETER BIT NUMBER CLI$BITFLD(BYTE,CLI$V_,RQFLGS), ! FLAGS BYTE BYTE(0), ! STATUS BYTE LONG(ERRACT), ! ERROR ACTION ROUTINE LONG(0,0), ! PARAMETER QUADWORD ! STRING DESCRIPTOR LONG(PRSACT), ! PARAMETER PRESENT ACTION ROUTINE LONG(ABSACT), ! PARAMETER ABSENT ACTION ROUTINE LONG(QUALST))%; ! QUALIFIER DESCRIPTOR LISTHEAD ! ! CREATE A CLI PARAMETER QUALIFIER DESCRIPTOR ! KEYWORDMACRO $CLIQUALDESC(QDCODE, QDFLGS = , TRUACT = 0, FLSACT = 0, USRVAL, TSTLST, SETLST, CLRLST) = BLOCK[CLI$QUALSIZE(USRVAL,TSTLST,SETLST,CLRLST),BYTE] ALIGN(0) INITIAL ( BYTE(CLI$QUALSIZE(USRVAL,TSTLST,SETLST,CLRLST)), BYTE(CLI$QUALNAME(QDCODE)), %IF %NULL(USRVAL) %THEN CLI$BITFLD(BYTE,CLI$V_,QDFLGS) %ELSE CLI$BITFLD(BYTE,CLI$V_,(QDUSRV,%REMOVE(QDFLGS))) %FI, BYTE(0), LONG(0,0), LONG(TRUACT), LONG(FLSACT), %IF %NULL(USRVAL) %THEN %ELSE LONG(USRVAL), %FI %IF %NULL(%REMOVE(TSTLST)) %THEN BYTE(0) %ELSE CLI$BITLIST(%REMOVE(TSTLST))%FI, %IF %NULL(%REMOVE(SETLST)) %THEN BYTE(0) %ELSE CLI$BITLIST(%REMOVE(SETLST))%FI, %IF %NULL(%REMOVE(CLRLST)) %THEN BYTE(0) %ELSE CLI$BITLIST(%REMOVE(CLRLST))%FI)%; ! ! CREATE THE END OF A QUALIFIER LIST ! MACRO $CLIQUALEND = BYTE ALIGN(0) INITIAL(0)%, ! ! DECLARE THE NAMES OF CLI QUALIFIER CODES ! $CLIQUALCODES(UTILNAME) = %IF %DECLARED(%QUOTE %QUOTE CLI$UTILQUALPRE) %THEN UNDECLARE %QUOTE %QUOTE CLI$UTILQUALPRE; %FI MACRO CLI$UTILQUALPRE = %NAME('CLI$K_',CLI$TAKE4(UTILNAME),'_')%QUOTE%; EXTERNAL LITERAL CLI$QUALNAME(%REMAINING)%, ! ! THE FOLLOWING IS A SET OF UTILITY MACROS FOR ALL THE ABOVE ! CLI$BITS(A,B)[]= CLI$MASK(%NAME(A,B)) CLI$OR(%REMAINING) CLI$BITS(A,%REMAINING) %, CLI$MASK(I,P,S,E)= (1^((P)+(S)) - 1^(P)) %, CLI$OR[]= OR %, CLI$BITFLD(ALLOC,PREFIX,VALUE)= %IF %NULL(VALUE) %THEN ALLOC(0) %ELSE ALLOC(CLI$BITS(PREFIX,%REMOVE(VALUE))) %FI %, CLI$LENGTH[] = %LENGTH %, CLI$BITLIST[] = BYTE(%LENGTH,%REMAINING)%, CLI$QUALSIZE(UVAL,TBLST,SBLST,CBLST) = 23 + %IF %NULL(UVAL) %THEN 0 %ELSE 4 %FI + %IF %NULL(%REMOVE(TBLST)) %THEN 0 %ELSE CLI$LENGTH(%REMOVE(TBLST))%FI + %IF %NULL(%REMOVE(SBLST)) %THEN 0 %ELSE CLI$LENGTH(%REMOVE(SBLST))%FI + %IF %NULL(%REMOVE(CBLST)) %THEN 0 %ELSE CLI$LENGTH(%REMOVE(CBLST))%FI%, CLI$TAKE4(SOMESTRING) = CLI$JOIN4(%EXPLODE(SOMESTRING))%, CLI$JOIN4(A,B,C,D) = %STRING(A,B,C,D)%, CLI$QUALNAME[QUALNAME] = %NAME(CLI$UTILQUALPRE,CLI$TAKE4(QUALNAME))%;