image of READY prompt

Wang2200.org

Listing of file='VSACESS2' on disk='vmedia/731-8012A.wvd.zip'

# Sector 56, program filename = 'VSACESS2'
5000 REM * VSACESS2 11/10/87  INDEX FILE ROUTINES.
5002 REM % (c) Copyright Wang Laboratories, Inc. 1986
5003 REM * REL.1.0 UPDATE SEPT 10, 1986                   *
5004 REM *****************************************************************
5006 REM *  READ AN INDEXED RECORD ('109)                                *
5008 REM *                                                               *
5010 REM *  FORM - GOSUB '109 (H$,H1$,"H",T1 ,K1,K2,K$)                  *
5012 REM *                                                               *
5014 REM *       WHERE     H$ = FILE HANDLE                              *
5016 REM *                H1$ = SMB\A0HEADER FOR FILE HANDLE H$            *
5018 REM *                "H" = HOLD OPTION, OTHERWISE " ".              *
5020 REM *                 T1 = TIME OUT IN SECONDS.                     *
5022 REM *                 K1 = KEYPATH 0 IS PRIMARY KEY                 *
5024 REM *                 K2 = KEY LENGTH                               *
5026 REM *                 K$ = KEY VALUE                                *
5028 REM *                                                               *
5030 REM *  RETURN - V0$ = RETURN CODE (FF = OKAY)                       *
5032 REM *           V1  = LENGTH OF DATA READ IN V9$()                  *
5034 REM *           V4$ = ALTERNATE MASK                                *
5036 REM *         V9$() = DATA READ                                     *
5038 REM *  EXAMPLE                                                      *
5040 REM *      10 DIM C1$5,N1$30,B1$3,W$8                               *
5042 REM *      20 W$=HEX(A005A01EA0035205)                              *
5044 REM *      25 C1$="00001"                                           *
5046 REM *      30 GOSUB '109 (H$, H1$, "H", 1, 0, 5, C1$)               *
5048 REM *      40 IF V0$ =  HEX(FF) THEN 60                             *
5050 REM *      50 STOP "ERROR IN READ"                                  *
5052 REM *      60 $UNPACK (F=W$) V9$() TO C1$,N1$,B1$,A1                *
5054 REM *                                                               *
5056 REM *****************************************************************
5058    DEFFN '109 (V9$,V7$,V3$,V6,V4,V5,V6$)
5060 REM SMB\A0HEADER COMMAND CODE
   : STR(V7$,7,1)=HEX(07)
5062 REM READ INDEXED RECORD COMMAND STRUCTURE
   : STR(V8$()) = HEX(04) & V9$
5064 IF V3$=" " THEN STR(V8$(),4,2)=HEX(0000)
   : ELSE STR(V8$(),4,2)="HH"
5066 REM SET TIMEOUT
   : STR(V8$(),6,2)=BIN(V6,2)
   : REM SET KEY PATH
   : STR(V8$(),8,2)=BIN(V4,2)
5068 REM SET KEY VALUE
   : STR(V8$(),10,V5+6)=BIN(V5+3,2)&HEX(01) & BIN(V5,2) & STR(V6$,1,V5) & HEX(
     00)
5070 GOSUB '199
   : REM SEND REQUEST TO 22258
   : IF V0$<>HEX(FF) THEN 5080
5072 REM XXXX IS SET TO V4$
   : V4$ = STR(V9$(),34,2)
5074 REM SETUP SMB HDR
   : V7$=STR(V9$(),1,32)
   : IF STR(V7$,6,1)<>HEX(00) THEN 5082
5076 REM SHIFT DOWN READ DATA
   : V1 = VAL(STR(V9$(),39,2),2)
   : STR(V9$(),1,V1)= STR(V9$(),41,V1)
5078 REM SET GOOD RETURN
   : V0$=HEX(FF)
5080 RETURN
5082 V0$=HEX(00)
   : RETURN
5084 REM *****************************************************************
5086 REM *  READ THE NEXT INDEXED RECORD ('110)                          *
5088 REM *                                                               *
5090 REM *  FORM - GOSUB '110 (H$,H1$,"H" , T1)                          *
5092 REM *                                                               *
5094 REM *       WHERE     H$ = FILE HANDLE                              *
5096 REM *                H1$ = SMB\A0HEADER FOR FILE HANDLE H$            *
5098 REM *                "H" = HOLD OPTION, OTHERWISE " ".              *
5100 REM *                 T1 = TIMEOUT IN SECONDS                       *
5102 REM *                                                               *
5104 REM *  RETURN - V0$ = RETURN CODE (FF = O K )                       *
5106 REM *           V1  = LENGTH OF DATA READ IN V9$()                  *
5108 REM *           V4$ = ALTERNATE MASK                                *
5110 REM *         V9$() = DATA READ                                     *
5112 REM *  EXAMPLE                                                      *
5114 REM *      10 DIM C1$5,N1$30,B1$3,W$8,K1$1,K2$1                     *
5116 REM *      20 W$=HEX(A005A01EA0035205)                              *
5118 REM *      30 GOSUB '110 (H$, H1$, " ", 0)                          *
5120 REM *      40 IF V0$ =  HEX(FF) THEN 60                             *
5122 REM *      50 STOP "ERROR IN READ NEXT"                             *
5124 REM *      60 $UNPACK (F=W$) V9$() TO C1$,N1$,B1$,A1                *
5126 REM *                                                               *
5128 REM *****************************************************************
5130    DEFFN '110 (V9$,V7$,V3$,V6)
5132 REM SMB\A0HEADER COMMAND
   : STR(V7$,7,1) = HEX(08)
5134 REM READ NEXT INDEXED RECORD COMMAND STRUCTURE
   : STR(V8$())= HEX(03) & V9$
5136 IF V3$=" " THEN STR(V8$(),4,2)=HEX(0000)
   : ELSE STR(V8$(),4,2)="HH"
5138 STR(V8$(),6,2) = BIN(V6,2)
   : REM SET DATACOUNT=000000
   : STR(V8$(),8,2)=HEX(0000)
5140 REM TERMINATOR
   : STR(V8$(),10,1)=HEX(00)
5142 GOSUB '199
   : IF V0$<>HEX(FF) THEN 5150
5143 REM /P30F301769/RAM/12 OCT.,'90/ MOVE MASK TO V4$
   : V4$=STR(V9$(),34,2)
5144 REM SETUP SMB HDR
   : V7$=STR(V9$(),1,32)
   : IF STR(V7$,6,1)<>HEX(00) THEN 5152
5146 REM SHIFT DOWN READ DATA
   : V1 = VAL(STR(V9$(),39,2),2)
   : V9$() = STR(V9$(),41,V1)
5148 REM GOOD RETURN
   : V0$=HEX(FF)
5150 RETURN
5152 V0$=HEX(00)
   : RETURN
5154 REM *****************************************************************
5156 REM *  WRITE AN INDEXED RECORD ('111)                               *
5158 REM *                                                               *
5160 REM *  FORM - GOSUB '111 (H$,H1$,H2$,D$)                            *
5162 REM *                                                               *
5164 REM *       WHERE     H$ = FILE HANDLE                              *
5166 REM *                H1$ = SMB\A0HEADER FOR FILE HANDLE H$            *
5168 REM *                H2$ = ALTERNATE MASK                           *
5170 REM *                 D$ = WRITE DATA BUFFER                        *
5172 REM *  RETURN - V0$ = RETURN CODE (FF = O K  )                      *
5174 REM *                                                               *
5176 REM *  EXAMPLE                                                      *
5178 REM *      10 DIM C1$5,N1$30,B1$3,W$8,D$43                          *
5180 REM *      20 W$=HEX(A005A01EA0035205)                              *
5182 REM *      30 $PACK (F=W$) D$ FROM C1$,N1$,B1$,A1                   *
5184 REM *      40 GOSUB '111 (H$, H1$, H2$, D$)                         *
5186 REM *      50 IF V0$ =  HEX(FF) THEN 70                             *
5188 REM *      60 STOP "ERROR IN WRITE"                                 *
5190 REM *      70 ......                                                *
5192 REM *                                                               *
5194 REM *****************************************************************
5196    DEFFN '111 (V9$,V7$,V4$,V9$())
5198 REM DEFINE HDR
   : STR(V7$,7,1)=HEX(10)
5200 REM WRITE INDEXED RECORD COMMAND STRUCTURE
   : STR(V8$())= HEX(02) & V9$
5202 V1=LEN(V9$())
   : STR(V8$(),4,V1+8)= V4$ & BIN(V1+3,2) & HEX(01) & BIN(V1,2)& STR(V9$(),1,V
     1) & HEX(00)
5204 REM SEND DATA TO 2258 AND GET BACK 00 00
5206 GOSUB '199
   : IF V0$<>HEX(FF) THEN 5212
5208 V7$=STR(V9$(),1,32)
5210 REM GOOD RETURN
   : V0$=HEX(FF)
5212 RETURN
5214 REM *****************************************************************
5216 REM *  DELETE AN INDEXED RECORD ('113)                              *
5218 REM *                                                               *
5220 REM *  FORM - GOSUB '113 (H$, H1$)                                  *
5222 REM *                                                               *
5224 REM *       WHERE     H$ = FILE HANDLE                              *
5226 REM *                H1$ = SMB\A0HEADER FOR FILE HANDLE H$            *
5228 REM *                                                               *
5230 REM *  RETURN - V0$ = RETURN CODE (FF = O K )                       *
5232 REM *                                                               *
5234 REM *  EXAMPLE                                                      *
5236 REM *      40 GOSUB '113 (H$, H1$)                                  *
5238 REM *      50 IF V0$ =  HEX(FF) THEN 70                             *
5240 REM *      60 STOP "ERROR IN DELETE"                                *
5242 REM *      70 ......                                                *
5244 REM *                                                               *
5246 REM *****************************************************************
5248    DEFFN '113 (V9$, V7$)
5250 REM SMB\A0HEADER COMMAND CODE
   : STR(V7$,7,1)=HEX(19)
5252 REM DELETE INDEXED RECORD COMMAND STRUCTURE
   : STR(V8$())= HEX(01) & V9$ & HEX(0000) & HEX(00)
5254 REM SEND DATA TO 2200 AND GET BACK 00 00
5256 GOSUB '199
   : IF V0$<>HEX(FF) THEN 5262
5258 REM RETURN SMBHDR
   : V7$=STR(V9$(),1,32)
5260 REM GOOD RETURN VALUE
   : V0$=HEX(FF)
5262 RETURN
5264 REM *****************************************************************
5266 REM *  RE-WRITE AN INDEXED RECORD ('112)                            *
5268 REM *                                                               *
5270 REM *  FORM - GOSUB '112 (H$,H1$,H2$,R,D$)                          *
5272 REM *                                                               *
5274 REM *       WHERE     H$ = FILE HANDLE                              *
5276 REM *                H1$ = SMB\A0HEADER FOR FILE HANDLE H$            *
5278 REM *                H2$ = ALTERNATE MASK                           *
5280 REM *                  R = LENGTH OF RECORD TO BE REWRITTEN         *
5282 REM *                 D$ = WRITE DATA BUFFER                        *
5284 REM *  RETURN - V0$ = RETURN CODE (FF = O K )                       *
5286 REM *                                                               *
5288 REM *  EXAMPLE                                                      *
5290 REM *      10 DIM C1$5,N1$30,B1$3,W$8,D$43                          *
5292 REM *      20 W$=HEX(A005A01EA0035205)                              *
5294 REM *      30 $PACK (F=W$) D$ FROM C1$,N1$,B1$,A1                   *
5296 REM *      40 GOSUB '112 (H$, H1$, H2$, 43, D$)                     *
5298 REM *      50 IF V0$ =  HEX(FF) THEN 70                             *
5300 REM *      60 STOP "ERROR IN RE-WRITE"                              *
5302 REM *      70 ......                                                *
5304 REM *                                                               *
5306 REM *****************************************************************
5308    DEFFN '112 (V9$,V7$,V4$,V1,V9$())
5310 REM SMB\A0HEADER COMMAND CODE
   : STR(V7$,7,1)=HEX(15)
5312 REM RE-WRITE INDEXED RECORD COMMAND STRUCTURE
   : STR(V8$())= HEX(02) & V9$ & V4$
5314 STR(V8$(),6)=  BIN(V1+3,2)& HEX(01) & BIN(V1,2) & STR(V9$(),1,V1) & HEX(0
     0)
5316 REM SEND DATA TO 2258 AND GET BACK 00 00
5318 GOSUB '199
   : IF V0$<>HEX(FF) THEN 5324
5320 REM RETURN SMB
   : V7$=STR(V9$(),1,32)
5322 REM GOOD RETURN
   : V0$=HEX(FF)
5324 RETURN
5326 REM *****************************************************************
5328 REM *  FIND AN INDEXED RECORD ('114)                                *
5330 REM *                                                               *
5332 REM *  FORM - GOSUB '114 (H$, H1$, H3$, K0, K1, K2, K$)             *
5334 REM *                                                               *
5336 REM *       WHERE     H$ = FILE HANDLE                              *
5338 REM *                H1$ = SMB\A0HEADER FOR FILE HANDLE H$            *
5340 REM *                H3$ = SELECTION CRITERIA (=, >, >=)            *
5342 REM *                      X'8080' EQUAL TO                         *
5344 REM *                      X'2080' GREATER THAN                     *
5346 REM *                      X'6080' GREATER THAN OR EQUAL TO         *
5348 REM *                                                               *
5350 REM *                 K0 = KEY POSITION                             *
5352 REM *                 K1 = KEY PATH                                 *
5354 REM *                 K2 = LENGTH OF KEY                            *
5356 REM *                 K$ = VALUE OF KEY                             *
5358 REM *                                                               *
5360 REM *  RETURN - V0$ = RETURN CODE (FF = O K )                       *
5362 REM *           V1  = LENGTH OF DATA READ IN V9$()                  *
5364 REM *           V4$ = ALTERNATE MASK                                *
5366 REM *          V9$( = DATA READ                                     *
5368 REM *                                                               *
5370 REM *  EXAMPLE                                                      *
5372 REM *      10 DIM C1$5,N1$30,B1$3,W$8                               *
5374 REM *      20 W$=HEX(A005A01EA0035205)                              *
5376 REM *      25 C1$="00001"                                           *
5378 REM *      30 GOSUB '114 (H$, H1$, H3$, 1, 0, 5, C1$)               *
5380 REM *      40 IF V0$ =  HEX(FF) THEN 60                             *
5382 REM *      50 STOP "ERROR IN FIND"                                  *
5384 REM *      60 $UNPACK (F=W$) V9$() TO C1$,N1$,B1$,A1                *
5386 REM *                                                               *
5388 REM *****************************************************************
5390 DEFFN '114 (V9$,V7$,V5$,V3,V4,V5,V6$)
5392 REM SMB\A0HEADER COMMAND CODE
   : STR(V7$,7,1)=HEX(26)
5394 REM FIND INDEXED RECORD COMMAND STRUCTURE
   : STR(V8$()) = HEX(04) & V9$ & V5$
5396 STR(V8$(),6) = BIN(V3,2) & BIN(V4,2) & BIN(V5+3,2)& HEX(01) & BIN(V5,2) &
      STR(V6$,,V5) & HEX(00)
5398 REM SEND REQUEST TO 2258 AND GET BACK 01 MMMM 01 LLLL DATA 01 LLLL KEY 00
5400 GOSUB '199
   : IF V0$<>HEX(FF) THEN 5410
5402 REM SAVE ALTERNATE MASK AND RET SMBHEADER
   : V4$ = STR(V9$(),34,2)
   : V7$=STR(V9$(),1,32)
   : IF STR(V7$,6,1)<>HEX(00) THEN 5412
5404 REM GET DATA LEN
   : V1 = VAL(STR(V9$(),39,2),2)
5406 REM SAVE READ DATA
   : STR(V9$(),,V1) = STR(V9$(),41,V1)
5408 REM GOOD RETURN
   : V0$=HEX(FF)
5410 RETURN
5412 V0$=HEX(00)
   : RETURN
5414 REM *****************************************************************
5416 REM *  LOCK AN INDEXED RECORD ('115)                                *
5418 REM *                                                               *
5420 REM *  FORM - GOSUB '115 (H$,H1$,K0,K1,K2,K$)                       *
5422 REM *                                                               *
5424 REM *       WHERE     H$ = FILE HANDLE                              *
5426 REM *                H1$ = SMB\A0HEADER FOR FILE HANDLE H$            *
5428 REM *                 K0 = POSITION OF KEY WITHIN RECORD            *
5430 REM *                 K1 = KEY PATH                                 *
5432 REM *                 K2 = LENGTH OF KEY                            *
5434 REM *                 K$ = VALUE OF KEY                             *
5436 REM *                                                               *
5438 REM *  RETURN - V0$ = RETURN CODE (FF = O K)                        *
5440 REM *                                                               *
5442 REM *  EXAMPLE                                                      *
5444 REM *      40 GOSUB '115 (H$)                                       *
5446 REM *      50 IF V0$ =  HEX(FF) THEN 70                             *
5448 REM *      60 STOP "ERROR IN LOCK"                                  *
5450 REM *      70 ......                                                *
5452 REM *                                                               *
5454 REM *****************************************************************
5456    DEFFN '115 (V9$,V7$,V3,V4,V5,V6$)
5458 REM UPDATE SMB WITH CMD
   : STR(V7$,7,1)=HEX(1E)
5460 REM TWO HEX(0000) BELLOW ARE FOR TIMEOUT & SELECTION CRITERIA
5462 REM UPDATE CMD STRING
   : V8$()=HEX(05)&V9$&HEX(0000)&HEX(0000)&BIN(V3,2)&BIN(V4,2)
5464 REM PUT KEY VALUE
   : STR(V8$(),12,V5+6)=BIN(V5+3,2)&HEX(01)&BIN(V5,2)&STR(V6$,,V5)&HEX(00)
5466 REM SEND CMD TO 2258
   : GOSUB '199
   : IF V0$<>HEX(FF) THEN 5472
5468 REM SEND BACK SMB
   : V7$=STR(V9$(),1,32)
5470 V0$=HEX(FF)
5472 RETURN
5474 REM *****************************************************************
5476 REM *  UNLOCK AN INDEXED RECORD ('116)                              *
5478 REM *                                                               *
5480 REM *  FORM - GOSUB '116 (H$,H1$)                                   *
5482 REM *                                                               *
5484 REM *       WHERE     H$ = FILE HANDLE                              *
5486 REM *                H1$ = SMB HEADER                               *
5488 REM *  RETURN - V0$ = RETURN CODE (FF = O K )                       *
5490 REM *                                                               *
5492 REM *  EXAMPLE                                                      *
5494 REM *      40 GOSUB '116 (H$)                                       *
5496 REM *      50 IF V0$ =  HEX(FF) THEN 70                             *
5498 REM *      60 STOP "ERROR IN UNLOCK"                                *
5500 REM *      70 ......                                                *
5502 REM *                                                               *
5504 REM *****************************************************************
5506    DEFFN '116 (V9$,V7$)
5508 REM PUT CMD IN SMB
   : STR(V7$,7,1) = HEX(21)
5510 REM BUILD CMD DATA
   : V8$()=HEX(01)&V9$&HEX(0000)&HEX(00)
5512 REM SEND TO 2258
   : GOSUB '199
   : IF V0$<>HEX(FF) THEN 5518
5514 REM GET BSCK SMB
   : V7$= STR(V9$(),1,32)
5516 V0$=HEX(FF)
5518 RETURN
5520 DEFFN'31 "N$=";HEX(22);"VSACESS2";HEX(22);":SCRATCH T N$: SAVE T () N$"