DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦9da4ff468⟧ TextFile

    Length: 5248 (0x1480)
    Types: TextFile
    Names: »MAKEC.PRG«

Derivation

└─⟦71c82d5c0⟧ Bits:30004214 LISTAID - Partslist management system
    └─ ⟦this⟧ »MAKEC.PRG« 

TextFile

*******************************************************************************
* 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»