$! ................... Cut between dotted lines and save. ................... $!........................................................................... $! VAX/VMS archive file created by VMS_SHARE V06.10 7-FEB-1989. $! $! VMS_SHARE was written by James Gray (Gray:OSBUSouth@Xerox.COM) from $! VMS_SHAR by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au). $! $! To unpack, simply save, concatinate all parts into one file and $! execute (@) that file. $! $! This archive was created by user ALBERT $! on 20-JUL-1990 13:04:03.91. $! $! It contains the following 4 files: $! DESCRIP.MMS $! FMN_COMMAND.CLD $! FROMNOTE.SCN $! PARSE_FILE.SCN $! $!============================================================================ $ SET SYMBOL/SCOPE=( NOLOCAL, NOGLOBAL ) $ VERSION = F$GETSYI( "VERSION" ) $ IF VERSION .GES "V4.4" THEN GOTO VERSION_OK $ WRITE SYS$OUTPUT "You are running VMS ''VERSION'; ", - "VMS_SHARE V06.10 7-FEB-1989 requires VMS V4.4 or higher." $ EXIT 44 ! SS$_ABORT $VERSION_OK: $ GOTO START $! $UNPACK_FILE: $ WRITE SYS$OUTPUT "Creating ''FILE_IS'" $ DEFINE/USER_MODE SYS$OUTPUT NL: $ EDIT/TPU/COMMAND=SYS$INPUT/NODISPLAY/OUTPUT='FILE_IS'/NOSECTION - VMS_SHARE_DUMMY.DUMMY b_part := CREATE_BUFFER( "{Part}", GET_INFO( COMMAND_LINE, "file_name" ) ) ; s_file_spec := GET_INFO( COMMAND_LINE, "output_file" ); SET( OUTPUT_FILE , b_part, s_file_spec ); b_errors := CREATE_BUFFER( "{Errors}" ); i_errors := 0; pat_beg_1 := ANCHOR & "-+-+-+ Beginning"; pat_beg_2 := LINE_BEGIN & "+-+-+-+ Beginning"; pat_end := ANCHOR & "+-+-+-+-+ End"; POSITION ( BEGINNING_OF( b_part ) ); LOOP EXITIF SEARCH( SPAN( ' ' )@r_trail & LINE_END, FORWARD) = 0; POSITION( r_trail ); ERASE( r_trail ); ENDLOOP ; POSITION( BEGINNING_OF( b_part ) ); i_append_line := 0; LOOP EXITIF MARK ( NONE ) = END_OF( b_part ); s_x := ERASE_CHARACTER( 1 ) ; IF s_x = '+' THEN r_skip := SEARCH( pat_beg_1, FORWARD, EXACT ); IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ERASE_LINE; ENDIF ; ENDIF; IF s_x = '-' THEN r_skip := SEARCH( pat_end, FORWARD, EXACT ) ; IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); m_skip := MARK( NONE ); r_skip := SEARCH( pat_beg_2, FORWARD, EXACT ); IF r_skip <> 0 THEN POSITION( END_OF( r_skip ) ); MOVE_HORIZONTAL( -CURRENT_OFFSET ) ; MOVE_VERTICAL( 1 ); MOVE_HORIZONTAL( -1 ); ELSE POSITION( END_OF( b_part ) ); ENDIF; ERASE( CREATE_RANGE( m_skip, MARK( NONE ), NONE ) ); ENDIF; ENDIF ; IF s_x = 'V' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE ; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF; i_append_line := 1 ; MOVE_VERTICAL( 1 ); ENDIF; IF s_x = 'X' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF ; i_append_line := 0; MOVE_VERTICAL( 1 ); ENDIF; IF s_x <> '' THEN i_errors := i_errors + 1; s_text := CURRENT_LINE; POSITION( b_errors ); COPY_TEXT ( "The following line could not be unpacked properly:" ); SPLIT_LINE ; COPY_TEXT( s_x ); COPY_TEXT( s_text ); POSITION( b_part ); MOVE_VERTICAL ( 1 ); ENDIF; ENDLOOP; POSITION( BEGINNING_OF( b_part ) ); LOOP r_x := SEARCH ( "`", FORWARD, EXACT ); EXITIF r_x = 0; POSITION( r_x ); ERASE_CHARACTER( 1 ); COPY_TEXT( ASCII( INT( ERASE_CHARACTER( 3 ) ) ) ); ENDLOOP ; IF i_errors = 0 THEN SET( NO_WRITE, b_errors, ON ); ELSE POSITION ( BEGINNING_OF( b_errors ) ); COPY_TEXT( FAO ( "The following !UL errors were detected while unpacking !AS", i_errors , s_file_spec ) ); SPLIT_LINE; SET( OUTPUT_FILE, b_errors, "SYS$COMMAND" ) ; ENDIF; EXIT; $ DELETE VMS_SHARE_DUMMY.DUMMY;* $ CHECKSUM 'FILE_IS $ WRITE SYS$OUTPUT " CHECKSUM ", - F$ELEMENT( CHECKSUM_IS .EQ. CHECKSUM$CHECKSUM, ",", "failed!!,passed." ) $ RETURN $! $START: $ FILE_IS = "DESCRIP.MMS" $ CHECKSUM_IS = 291648776 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X!++ X! Name X!`009`009`009DESCRIP.MMS X! X! Abstract X!`009Build the FROMNOTE application X! X! Creation X!`00928 Mar 1990 : JNA X!-- X! X X.ifdef DEBUG XSCA`009= SCA/DEBUG/NOLIST/DIAG XLINK`009= LINK/DEBUG/NOMAP X.else XSCA`009= SCA/NOLIST XLINK`009= LINK/NOMAP X.endif X XFROMNOTE.EXE : FROMNOTE.OBJ, FMN_COMMAND.OBJ, PARSE_FILE.OBJ X`009$(LINK) FROMNOTE, FMN_COMMAND, PARSE_FILE X XFROMNOTE.OBJ : FROMNOTE.SCN X`009$(SCA) FROMNOTE X XPARSE_FILE.OBJ : PARSE_FILE.SCN XFMN_COMMAND.OBJ : FMN_COMMAND.CLD $ GOSUB UNPACK_FILE $ FILE_IS = "FMN_COMMAND.CLD" $ CHECKSUM_IS = 376512692 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X!++ X!NAME X!`009`009 FMN_COMMAND.CLD X!`032 X!ABSTRACT X! Define the DCL interface to FROMNOTE X!`032 X!CREATION X! 28 Mar 1990 : JNA X!`032 X!MODIFICATION X!`032 X!-- X Xmodule FMN_TABLE X Xdefine verb FROMNOTE X `032 X parameter P1, label = INPUT_FILE, X`009`009 prompt = "Note name", X`009`009 value ( noconcatenate, X`009`009`009 required, X`009`009`009 type = $FILE ) X `032 X qualifier OUTPUT, nonnegatable, X`009`009`009 value ( required, X`009`009`009`009 type = $FILE ) $ GOSUB UNPACK_FILE $ FILE_IS = "FROMNOTE.SCN" $ CHECKSUM_IS = 1745907031 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X!++ X! Name X!`009`009`009FROMNOTE.SCN X! X! Abstract X!`009Filter for the file created by a PSI PAD SET LOG command X! X! Usage X!`009FROMNOTE file[.NOT] [/OUTPUT=file[.TXX]] X! X! Creation`032 X! 28 Mar 1990 : JNA X! X! Modification X!-- X XMODULE FROMNOTE IDENT 'FROMNOTE 2.0';`009! The version 1 is a C version X V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!! X X! External definitions X! ==================== X X!`009EXTERNAL PROCEDURE LIB$SIGNAL`032 X!`009`009`009 ( INTEGER, VALUE INTEGER,`032 X!`009`009`009 STRING, VALUE INTEGER ); X X!`009call LIB$SIGNAL (FTX_UNSUP, 2, car, line_count ); X V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!! X X! Constant definitions X! ==================== X X CONSTANT nl = s'eol'; X V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!! X X! Token definitions X! ================= X X SET alpha ( NOT (s'cr' or s'lf' or s'eol' or s'sos' or s'eos')); X X TOKEN eol `123s'eol'`125; X TOKEN sos `123s'sos'`125; X TOKEN cr `123s'cr'`125; X TOKEN lf `123s'lf'`125; X TOKEN any `123alpha`125; X V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!! X X! Working variables X! ================= X X DECLARE line_count : INTEGER;`009`009! The current line number X DECLARE input_name : STRING;`009`009! The input file X DECLARE output_name : STRING;`009`009! The output file X V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!! X X! Macro definitions X! ================= X X X !`009Unvallid line X !`009------------- X X MACRO unvallid_line TRIGGER V`009`009`009 `123 `123eol`124sos`125 `123`123 cr lf [any...] cr`125 `124 ` X123 any...`125`125 `125; X END MACRO; X X X !`009Vallid line X !`009----------- X X MACRO vallid_line TRIGGER X`009`009`009 `123 text : `123any...`125 cr `125; X X`009ANSWER text; X X END MACRO; X X X !`009Output new line X !`009--------------- X X MACRO new_line TRIGGER X`009`009`009 `123 lf `125; X`009ANSWER nl; X END MACRO; X X X ! Input line counter X !`009------------------ X X MACRO end_of_line TRIGGER X`009`009`009 `123 eol `125; X`009line_count = line_count + 1; X END MACRO; X V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!! X X! General subroutines X! =================== X X ! Parse the DCL command X !`009--------------------- X X PROCEDURE parse_command; X X ! Declare some local strings X X`009DECLARE vms_buffer : STRING; X`009DECLARE related : STRING; X X ! External procedure to parse the file name X X`009EXTERNAL PROCEDURE set_file_name`032 X`009`009`009`009(`032 X`009`009`009`009 STRING, STRING, STRING`032 X`009`009`009`009) OF STRING; X X X ! DCL Table of the FTOTEX command X X`009DECLARE FMN_TABLE : EXTERNAL INTEGER; X X ! A VMS status code returned by CLI$PRESENT X !`009This code seems not be defined X X`009CONSTANT CLI$_PRESENT = 261401; X X X ! Some VMS routines used to obtain the command options X X`009EXTERNAL PROCEDURE LIB$GET_FOREIGN`032 X`009`009`009 (`032 X`009`009`009`009STRING X`009`009`009 ); X`009EXTERNAL PROCEDURE CLI$DCL_PARSE`032 X`009`009`009 ( X`009`009`009`009STRING, INTEGER X`009`009`009 );`009`009`009`009 X`009EXTERNAL PROCEDURE CLI$PRESENT X`009`009`009 ( X`009`009`009`009STRING X`009`009`009 ) OF INTEGER; X`009EXTERNAL PROCEDURE CLI$GET_VALUE X`009`009`009 ( X`009`009`009`009STRING, STRING X`009`009`009 ); X X X ! Beginning of PARSE_COMMAND X ! - - - - - - - - - - - - - X X ! Get and parse the DCL command X X`009CALL LIB$GET_FOREIGN ( vms_buffer ); X X`009CALL CLI$DCL_PARSE ( 'FROMNOTE ' & vms_buffer, FMN_TABLE ); X X ! Obtain the Input file name X X`009CALL CLI$GET_VALUE ( 'INPUT_FILE', vms_buffer ); X X ! Obtain the file name - Add the file type, if need X X`009related = ''; X`009input_name = set_file_name ( vms_buffer, '.NOT', related ); X X ! Obtain or build the output file - Add the type if need X X`009if CLI$PRESENT ( 'OUTPUT' ) = CLI$_PRESENT X`009then X`009 call CLI$GET_VALUE ( 'OUTPUT', vms_buffer ); X X`009 output_name = set_file_name ( vms_buffer, '.TXT', related ); X`009else X`009 output_name = related & '.TXT'; X`009end if; X X END PROCEDURE; X X X ! Initialisation procedure - How initialise this in a static maner ? X !`009------------------------ X X PROCEDURE init; X X`009line_count = 1; X X END PROCEDURE; X V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X!!! X X! Main entry X! ========== X X PROCEDURE fromnote_main MAIN; X X`009CALL parse_command; X`009CALL init;`009`009`009! Initialize the local variables X X`009START SCAN X`009 INPUT FILE input_name X`009 OUTPUT FILE output_name; X X END PROCEDURE; X XEND MODULE; $ GOSUB UNPACK_FILE $ FILE_IS = "PARSE_FILE.SCN" $ CHECKSUM_IS = 844643194 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X!++ X! Name X!`009`009 PARSE_FILE.SCN X! X! Abstract X!`009This module is used to parse the file name X! X! Creation X! 7 Mars 1990 : JNA X!-- X XMODULE PARSE_FILE; X X DECLARE file_root : STRING; X DECLARE file_name : STRING; X DECLARE file_type : STRING; X DECLARE file_version : STRING; X X TOKEN dbldbl_dot`009ALIAS '::' `123'::'`125; X TOKEN dbl_dot`009ALIAS ':' `123':'`125; X TOKEN bar`009`009ALIAS '`124' `123'`124'`125; X TOKEN open_dir`009ALIAS '[' `123'[' `124 '<'`125; X TOKEN close_dir`009ALIAS ']' `123']' `124 '>'`125; X TOKEN dot`009`009ALIAS '.' `123'.'`125; X TOKEN semi_colon`009ALIAS ';' `123';'`125; X TOKEN dash`009`009ALIAS '-' `123'-'`125; X X SET alphanum (`032 X`009`009 'A' .. 'Z' or`032 X`009`009 'a' .. 'z' or`032 X`009`009 '`192' .. '`221' or X`009`009 '`224' .. '`253' or X`009`009 '0' .. '9' or X`009`009 '-' or '_' or '$' X`009`009); X SET num ( '0' .. '9' ); X X TOKEN number `123 num... `125; X TOKEN word `123 alphanum ... `125; X X MACRO path SYNTAX X`009`009`123 V`009`009 name : `123`123 word `124 '.' word `124 '-'...`125 [ `123'.' word X `125... ]`125 X`009`009`125; X`009ANSWER TRIGGER name;`009`009 ! Else, the path name is removed X`009`009`009`009`009 ! from the input buffer X END MACRO; X`009`009 `032 X MACRO device_only TRIGGER X`009`009`123 X`009`009 device : `123word ':'`125 X`009`009`125; X X`009file_root = device; X END MACRO; X X MACRO usual_file_name TRIGGER X`009`009`123 X`009`009 root : `123 [ word '::' ] X`009`009`009 [ word ':' ] X`009`009`009 [ '[' path ']' ] `125 X`009`009 name : word`032 X`009`009 [ ftype : `123'.' word `125 ] X`009`009 [ version : `123';' number`125 ] X`009`009`125; X X`009file_root = root;`032 X`009file_name = name; X`009file_type = ftype; X`009file_version = version; X X END MACRO; X X PROCEDURE set_file_name`032 X`009`009(`032 X`009`009 name : STRING, ftype : STRING, related : STRING`032 X`009`009) OF STRING; X`032 X`009DECLARE dummy : string; X X`009file_root = ''; X`009file_name = ''; X`009file_type = ''; X`009file_version = ''; X X`009START SCAN X`009`009INPUT STRING name X`009`009OUTPUT STRING dummy; X X`009if dummy <> '' X`009then X`009 WRITE ''; X`009end if; X X`009if file_type = '' X`009then X`009 file_type = ftype; X`009end if; X X`009related = file_name; X X`009return file_root & file_name & file_type & file_version; X X END PROCEDURE; X XEND MODULE; $ GOSUB UNPACK_FILE $ EXIT