|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 5248 (0x1480) Types: TextFile Names: »MAKEC.PRG«
└─⟦71c82d5c0⟧ Bits:30004214 LISTAID - Partslist management system └─ ⟦this⟧ »MAKEC.PRG«
******************************************************************************* * DESIGN NIF/ASD/SEPTEMBER 1985 * *PROCEDURE: MAKEC *PARAM: DBASE IN USE *CONVERTS GENERATES CVALUE AND SPECCODE FOR CAPACITORS * ******************************************************************************* LOCATE FOR $(REF:CODE,1,1)='5' DO WHILE $(REF:CODE,1,1)='5'.AND..NOT.EOF *GENERATE CVALUE AND SPECCODEVALUE FROM NVALUE STORE STR(NVALUE,13,4) TO MOPER STORE 13 TO MLENO *MOVE DECIMAL POINT TO INDICATE VALUE IN PICOFARADS STORE @('.',MOPER) TO MPOINT STORE $(MOPER,1,MPOINT-1)-$(MOPER,MPOINT+1,3)-'.'-$(MOPER,MPOINT+4,1) TO MOPER *REMOVE TRAILING BLANKS AND ZEROES DO WHILE RANK(MOPER)=32.OR.RANK(MOPER)=48 STORE MLENO-1 TO MLENO STORE $(MOPER,2,MLENO) TO MOPER ENDDO *GENERATE ENGENEERING NOTATION STORE @('.',MOPER) TO MPOINT DO CASE CASE MPOINT>=11 STORE 'm' TO MSEP STORE MPOINT-10 TO MBEF CASE MPOINT>=8 STORE 'u' TO MSEP STORE MPOINT -7 TO MBEF CASE MPOINT>=5 STORE 'n' TO MSEP STORE MPOINT-4 TO MBEF OTHERWISE STORE 'p' TO MSEP STORE MPOINT-1 TO MBEF ENDCASE DO CASE CASE MPOINT>2 STORE $(MOPER,1,MPOINT-1) TO MINT STORE $(MOPER,MPOINT+1,1) TO MENG2 STORE $(MINT,1,MBEF) TO MENG1 IF MBEF<LEN(MINT) STORE $(MINT,MBEF+1,MPOINT-MBEF-1)-MENG2 TO MENG2 ENDIF STORE MENG1-MSEP-MENG2 TO MCVAL CASE MPOINT=2 STORE $(MOPER,1,1)-MSEP-$(MOPER,3,1) TO MCVAL OTHERWISE STORE MSEP-$(MOPER,MPOINT+1,1) TO MCVAL ENDCASE IF LEN(MCVAL)<3 STORE MCVAL-'0' TO MCVAL ENDIF STORE LEN(MCVAL) TO MLENC DO WHILE (MLENC>3.AND.$(MCVAL,MLENC,1)='0').OR.MLENC>8 STORE MLENC-1 TO MLENC STORE $(MCVAL,1,MLENC) TO MCVAL ENDDO IF LEN(MCVAL)<4.AND.VAL(TOLERANCE)<2.AND.'%'$TOLERANCE REPLACE CVALUE WITH MCVAL-'0' ELSE REPLACE CVALUE WITH MCVAL ENDIF *GENRATION OF VALUE FOR THE SPEC:CODE *INITIALIZE VAR STORE SPEC:CODE TO MSPEC STORE @('<V',MSPEC) TO MSTART STORE @('V>',MSPEC) TO MSTOP *FIND LENGTH OF ACTUAL FORMAT FOR SPEC:VALUE STORE VAL($(MSPEC,MSTART+2,1)) TO MFLOAT STORE MSTOP-MSTART TO MLENS STORE $(TOLERANCE,1,3) TO MTOL IF &MTOL>1.AND.'%'$TOLERANCE DO WHILE MFLOAT>0 STORE MLENS-1 TO MLENS STORE MFLOAT-1 TO MFLOAT ENDDO ENDIF DO CASE CASE 'SCC'$MSPEC.OR.'MIL'$MSPEC *GENERATE VALUE IN SCC-SPEC. NOTATION STORE $(MOPER,1,MLENS) TO MSVAL IF MPOINT<MLENS IF MPOINT=1 STORE 'C'-$(MSVAL,2,MLENS-1) TO MSVAL ELSE STORE $(MSVAL,1,MPOINT-1)-'C'-$(MSVAL,MPOINT+1,MLENS) TO MSVAL ENDIF ELSE STORE $(MSVAL,1,MLENS-1)-STR(MPOINT-MLENS,1) TO MSVAL ENDIF OTHERWISE *GENERATE VALUE IN ENG. NOTATION STORE MCVAL TO MSVAL DO WHILE LEN(MSVAL)<MLENS STORE MSVAL-'0' TO MSVAL ENDDO ENDCASE *INSERT IN SPEC:CODE IF '<V'$SPEC:CODE STORE $(MSPEC,1,MSTART-1)-MSVAL-$(MSPEC,MSTOP+2,28-MSTOP) TO MSPEC REPLACE SPEC:CODE WITH MSPEC ENDIF *PROCEDURE: MAKETOLC *FUNCTION: GENERATES THE TOLERANCE CODE LETTER FOR THE SPEC. AND INSERTS IT. IF '<T>'$SPEC:CODE STORE $(TOLERANCE,1,3) TO MTOL IF $(TOLERANCE,4,1)='A' DO CASE CASE &MTOL=0.1 STORE 'B' TO MTOL CASE &MTOL=0.25 STORE 'C' TO MTOL CASE &MTOL=0.5 STORE 'D' TO MTOL CASE &MTOL=1 STORE 'E' TO MTOL OTHERWISE STORE '?' TO MTOL ENDCASE ELSE DO CASE CASE &MTOL=1.0 STORE 'F' TO MTOL CASE &MTOL=2.0 STORE 'G' TO MTOL CASE &MTOL=5.0 STORE 'J' TO MTOL CASE &MTOL=10 STORE 'K' TO MTOL CASE &MTOL=20 STORE 'M' TO MTOL OTHERWISE STORE '?' TO MTOL ENDCASE ENDIF STORE SPEC:CODE TO MOPER STORE @('<T>',MOPER) TO MSTART STORE $(MOPER,1,MSTART-1)-MTOL-$(MOPER,MSTART+3,27-MSTART) TO MOPER REPLACE SPEC:CODE WITH MOPER ENDIF *FUNCTION: GENERATES THE VOLTAGE RAT. CODE LETTER FOR THE SPEC. AND INSERTS IT. STORE RATED:VOLT TO MRAT DO CASE CASE &MRAT=10 STORE '*' TO MRAT CASE &MRAT=15 STORE '*' TO MRAT CASE &MRAT=16 STORE '*' TO MRAT CASE &MRAT=25.OR.&MRAT=30 STORE 'A' TO MRAT CASE &MRAT=50 STORE 'C' TO MRAT CASE &MRAT=63 STORE 'D' TO MRAT CASE &MRAT=100 STORE 'E' TO MRAT CASE &MRAT=160 STORE 'F' TO MRAT CASE &MRAT=200 STORE 'G' TO MRAT CASE &MRAT=250 STORE 'H' TO MRAT CASE &MRAT=300 STORE 'V' TO MRAT CASE &MRAT=400 STORE 'K' TO MRAT CASE &MRAT=500 STORE 'Y' TO MRAT OTHERWISE STORE '?' TO MRAT ENDCASE IF '<R'$SPEC:CODE STORE SPEC:CODE TO MOPER STORE @('<R>',MOPER) TO MSTART STORE $(MOPER,1,MSTART-1)-MRAT-$(MOPER,MSTART+3,27-MSTART) TO MOPER REPLACE SPEC:CODE WITH MOPER ENDIF STORE # TO OLD CONTINUE IF #=OLD SKIP ENDIF ENDDO RETURN «eof»