SPL,L,O,M ! NAME: CR.. ! SOURCE: 92071-18016 ! RELOC: 92071-16016 ! PGMR: G.A.A. ! MOD: M.L.K., E.D.B. ! ! *************************************************************** ! * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * ! * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * ! * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* ! * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ! *************************************************************** ! NAME CR..(7) "92071-1X016 REV.2041 800702" ! ! CR.. IS THE RTE FILE MANAGER ACTION ROUTINE ! TO CREATE EMPTY FILES. ! IT ALSO CREATES TYPE ZERO FILES. ! ! THIS ROUTINE HANDLES THE FOLLOWING FORMS: ! ! CR,NAMR ! ! WHERE: ! ! NAMR IS A NAME REFERENCE WHICH INCLUDES ! SC IS A SECURITY CODE ! CR IS A CARTRIDGE ID ! TY IS A FILE TYPE ! SZ IS THE FILE SIZE (NO. OF BLOCKS) ! RL IS THE FILE RECORD LENGTH (ONLY IF TY=2) ! ! (OR) ! ! CR,NAMR,LU,RWOP,SPOP,EOFOP, SUBFUN OP ! ! WHERE: ! ! NAMR IS AS ABOVE EXCEPT TY=0 ! LU IS THE DEVICE LOGICAL UNIT ! RWOP IS THE READ WRITE OPTION ! (I.E. "READ", "WRITE", "BOTH") ! SPOP IS THE SPACING OPTION ! (I.E. " BSPACE", "FSPACE", "BOTH") ! EOF IS THE END OF FILE OPTION ! (I.E. "EOF","LEADER","PAGE", ! NUMERIC SUB FUNCTION) ! SUBFUNOP IS THE READ/WRITE SUBFUNCTION ! (I.E. "BINARY","ASCII",NUMERIC ! SUBFUNCTION) ! ! EXTERNAL SUBROUTINES LET CLOSE BE SUBROUTINE,EXTERNAL LET CREAT BE SUBROUTINE,EXTERNAL LET OPEN. BE SUBROUTINE,EXTERNAL ! ! EXTERNAL FUNCTIONS LET NAM.. BE FUNCTION,EXTERNAL LET GTOPN BE FUNCTION,EXTERNAL ! ! EXTERNAL VARIBLES LET O.BUF BE INTEGER,EXTERNAL LET N.OPL BE INTEGER,EXTERNAL ! ! INTERNAL CONSTANTS LET EOF BE CONSTANT (42517K) !"EO" LET LE BE CONSTANT (46105K) !"LE" LET PA BE CONSTANT (50101K) !"PA" LET AS BE CONSTANT (40523K) !"AS" LET BI BE CONSTANT (41111K) !"BI" LET RE BE CONSTANT (51105K) !"RE" LET WR BE CONSTANT (53522K) !"WR" LET BO BE CONSTANT (41117K) !"BO" LET BS BE CONSTANT (41123K) !"BS" LET FS BE CONSTANT (43123K) !"FS" ! LET A BE CONSTANT (0) LET B BE CONSTANT (1) ! CR..: SUBROUTINE(NO,LIS, ER) GLOBAL TY_@N.OPL+2 LIS21_[LIS20_[LIS17_[LIS16_[LIS13_[LIS9_[ \ LIS5_[LIS1_@LIS+1]+4]+4]+4]+3]+1]+3]+1 ! ! IF NAM..($LIS1) THEN GOTO ILNAM !TEST FOR ILLEGAL NAME ! ! CREATE DISC FILE (TYPES 1 TO 32767) ! IF $TY THEN[ \CHECK FOR PROPER TYPE CREAT(O.BUF,ER,$LIS1,$(@N.OPL+3), \CREATE THE FILE $(@N.OPL+2),N.OPL,$(@N.OPL+1)); \ IF ER > 0 THEN ER_ 0; \IGNORE SIZE RETURN RETURN] !AND RETURN ! ! CREATE NON-DISC FILE (TYPE 0) ! LUC, EF, SP, RW, SC _ 0 !CLEAR PARAMETERS ! IF $LIS5 >20000K THEN GOTO ILLU !IF LU IS ASCII, ILLEGAL IF $LIS5 <1 THEN GOTO ILLU !IF LU NEGATIVE, ILLEGAL ! ! SET R/W CODE ! IFNOT $LIS9 THEN GOTO MISPM !MISSING PARAMETER IF $LIS9 = RE THEN RW_100000K !SET READ CODE IF $LIS9 = WR THEN RW_1 !SET WRITE CODE IF $LIS9 = BO THEN RW_100001K !SET BOTH READ,WRITE CODES IFNOT RW THEN GOTO ILLPM !BAD RW CODE ! ! SET SPACING CODE ! IFNOT $LIS13 THEN GOTO EOFCD !IF NO SP CODE, WORK ON EOF IF $LIS13= BS THEN SP_100000K !SET BACKSPACE CODE IF $LIS13= FS THEN SP_1 !SET FORWARD SPACE CODE IF $LIS13= BO THEN SP_100001K !SET BOTH CODES IFNOT SP THEN GOTO ILLPM !BAD SP CODE ! ! SET EOF CODE (DEFAULT -FMGR DEFAULT) ! EOFCD:IFNOT $LIS16 THEN [ \USE DEFAULT EOF OPEN.(O.BUF,$LIS5,N.OPL,1); \GET DEFAULT LU CLOSE(O.BUF); \CLOSE LU EF _ $(@O.BUF+4); \GET EOF CODE GOTO SUBCD] !AND CONTINUE IF $LIS17=EOF THEN EF_100K !EOF (MAG TAPE) IF $LIS17=PA THEN EF_1100K !PAGE EJECT IF $LIS17=LE THEN EF_1000K !PUNCH LEADER IF $LIS16<3 THEN EF_($LIS17 AND 37K)-<6 IFNOT EF THEN GOTO ILLPM !BAD EOF CODE ! ! SET SUB FUNCTION (DEFAULT 00=ASCII) ! SUBCD:IFNOT $LIS20 THEN GOTO SETUP IF $LIS20<3 THEN LUC_($LIS21 AND 37K)-<6 IF $LIS21= BI THEN LUC_100K IF $LIS21= AS THEN GOTO SETUP IFNOT LUC THEN GOTO ILLPM !BAD SUB CODE ! SETUP:LUC_ LUC+[T_($LIS5 AND 77K)] !MERGE IN DEFAULT LU EF_EF OR T !MERGE IN DEFAULT LU ! OFLAG_ GTOPN !GET OPEN FLAG FOR SPLC CREAT(O.BUF,ER,$LIS1,LUC, \CREATE NON-DISC FILE 0,N.OPL,$(@N.OPL+1),0,T,0,OFLAG) RETURN ! ! ERROR RETURNS ! ILLU: DO[ ER_ 20; RETURN] !ILLEGAL LU MISPM:DO[ ER_ 55; RETURN] !MISSING PARAMETER ILLPM:DO[ ER_ 56; RETURN] !ILLEGAL PARAMETER ILNAM:DO[ ER_-15; RETURN] !ILLEGAL NAME ! END END ! END$