//JOB(ERCC07,STEPHENS,T=200,L=10000) //OPTIONS(QUOTES,OPT) //ALGOL 'COMMENT' *************** * * * ALGG005 * * * *************** ; 'BEGIN' 'COMMENT' PROGRAM FOR MASS AND ABUNDANCE DATA OF POLYISOTOPIC IONS; 'COMMENT' INPUT/OUTPUT PROCEDURES; 'PROCEDURE' CRDTXT; 'BEGIN' 'INTEGER' I,J; TRY AGAIN: INSYMBOL(98,'('*')',I); 'IF' I=1 'THEN' 'BEGIN' NEXTSYM: INSYMBOL(98,'('*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()+-.,')' ,J); 'IF' J=1 'THEN' 'GOTO' OUT; OUTSYMBOL(99,'('*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()+-., ')',J); 'GOTO' NEXTSYM 'END' 'ELSE' 'GOTO' TRY AGAIN; OUT: 'END' PROCEDURE CRDTXT; 'COMMENT' END OF INPUT/OUTPUT PROCEDURES; 'INTEGER' TEMP1,TEMP2,TEMP3,TEMP4; 'INTEGER' N,NMAX,H,J,SN,SP,SPU,SPL,ICL,FML,BFR; 'INTEGER' 'ARRAY' NA,NI,W[1:4]; 'REAL' 'ARRAY' M,RA[1:4,1:10],FF[0:45]; NEWPAGE; NEWLINES(2); WRITETEXT('('ISOTOPE'('S')'ABUNDANCE'('S')'PATTERNS.'('S')'')'); NEWLINES(2); WRITETEXT('('PEAK'('S')' PATTERNS'('S')' IN'('S')' MASS'('S')' SPECTRA'('S')' OF'('S')' COMPOUNDS')'); WRITETEXT('(''('S')'CONTAINING')'); NEWLINES(2); CRDTXT; N := READ; 'FOR' H := 1 'STEP' 1 'UNTIL' N 'DO' 'BEGIN' NA[H] := READ; NI[H] := READ; 'END'; BFR := READ; 'IF' BFR = 1 'THEN' 'BEGIN' ICL := READ; FML := READ; 'END' 'ELSE' 'BEGIN' ICL := 210; FML := 420 'END'; 'FOR' H := 1 'STEP' 1 'UNTIL' N 'DO' 'FOR' J := 1 'STEP' 1 'UNTIL' NI[H] 'DO' 'BEGIN' M[H,J] := READ; RA[H,J] := READ; 'END'; SN := 0; NMAX := 0; FF[0] := 1; SPU := 0; SPL := 0; 'FOR' H := 1 'STEP' 1 'UNTIL' N 'DO' 'BEGIN' SN := SN + NA[H]; 'IF' NA[H] > NMAX 'THEN' NMAX := NA[H]; SPU := SPU + M[H,NI[H]]*NA[H]; SPL := SPL + M[H,1]*NA[H]; W[H] := 0 'END'; SP := SPU - SPL + 1; 'FOR' H := 1 'STEP' 1 'UNTIL' SN 'DO' FF[H] := H*FF[H-1]; 'BEGIN' 'REAL' 'ARRAY' IC[1:N,1:NMAX,1:ICL], MC,AP[1:N,1:FML],FM,FAP[1:FML],I[1:10]; 'INTEGER' Y; 'INTEGER' 'ARRAY' ST,INDEX,INTERSTORE[1:10]; 'PROCEDURE' ISOSET(A,B,C,D); 'VALUE' A,B,C,D; 'INTEGER' A,B,C,D; 'BEGIN' 'INTEGER' BB,ISOINTER,T,X,Z; 'INTEGER' TEMP1,TEMP2,TEMP3,TEMP4,TEMP5; 'REAL' AA,F; 'SWITCH' SS := S1,S2,S3,S4,S5,S6,S7,S8; BB := 'IF' B > 5 'AND' B = D 'THEN' B-5 'ELSE' 'IF' B > 5 'THEN' 5 'ELSE' B; 'IF' B > D 'THEN' Z := 0 'ELSE' 'IF' B = D 'AND' B > 5 'AND' B # 10 'THEN' 'BEGIN' Z := 5; ST[B+1] := 1; 'GOTO' SS[BB]; 'END' 'ELSE' 'IF' B = D 'AND' B = 10 'THEN' 'BEGIN' Z := 5; Y := 1 'END' 'ELSE' 'IF' B = D 'AND' B < 5 'THEN' 'BEGIN' Z := 0; ST[BB+1] := 1; 'GOTO' SS[BB] 'END' 'ELSE' 'BEGIN' Z := 0; Y := 1; 'END'; 'GOTO' S5; S1 : ST[3+Z] := C; S2 : ST[4+Z] := C; S3 : ST[5+Z] := C; S4 : Y := C; S5 : 'FOR' TEMP5 := Y 'STEP' 1 'UNTIL' C 'DO' 'BEGIN'ST[5+Z]:=TEMP5; I[5+Z] := M[A,ST[5+Z]]; 'IF' BB = 4 'THEN' ST[5+Z] := 1; 'FOR' TEMP4 := ST[5+Z] 'STEP' 1 'UNTIL' C 'DO' 'BEGIN'ST[4+Z]:=TEMP4; I[4+Z] := M[A,ST[4+Z]]; 'IF' BB = 3 'THEN' ST[4+Z] := 1; 'FOR' TEMP3 := ST[4+Z] 'STEP' 1 'UNTIL' C 'DO' 'BEGIN'ST[3+Z]:=TEMP3; I[3+Z] := M[A,ST[3+Z]]; 'IF' BB = 2 'THEN' ST[3+Z] := 1; 'FOR' TEMP2 := ST[3+Z] 'STEP' 1 'UNTIL' C 'DO' 'BEGIN'ST[2+Z]:=TEMP2; I[2+Z] := M[A,ST[2+Z]]; 'IF' BB = 1 'THEN' ST[2+Z] := 1; 'FOR' TEMP1 := ST[2+Z] 'STEP' 1 'UNTIL' C 'DO' 'BEGIN'ST[1+Z]:=TEMP1; I[1+Z] := M[A,ST[1+Z]]; 'COMMENT' BOTTOM OF FIRST PAGE; 'IF' B > 5 'AND' D # 1 'THEN' 'BEGIN' Y := ST[1+Z]; ISOSET(A,B,C,1); 'END'; 'IF' D <= 5 'THEN' 'BEGIN' W[A] := W[A] +1; MC[A,W[A]] := 0; 'FOR' H := 1 'STEP' 1 'UNTIL' B 'DO' 'BEGIN' MC[A,W[A]] := MC[A,W[A]] + I[H]; IC[A,H,W[A]] := I[H] 'END'; 'IF' B = 1 'THEN' 'GOTO' SKIP; INTERSTORE[1] := I[1]; X := 1; INDEX[1] := 1; 'FOR' H := 2 'STEP' 1 'UNTIL' B 'DO' 'BEGIN' ISOINTER := I[H]; 'IF' ISOINTER = INTERSTORE[X] 'THEN' INDEX[X] := INDEX[X] + 1 'ELSE' 'BEGIN' X := X+1; INTERSTORE[X] := I[H]; INDEX[X] := 1 'END' 'END'; F := 1; AA := 1; 'FOR' H := 1 'STEP' 1 'UNTIL' X 'DO' F := F*FF[INDEX[H]]; 'FOR' H := 1 'STEP' 1 'UNTIL' B 'DO' AA := AA*RA[A,ST[H]]; AP[A,W[A]] := AA/F; 'END'; 'GOTO' JUMP; SKIP : AP[A,W[A]] := RA[A,ST[1]]; JUMP : 'END'; 'IF' BB = 1 'THEN' 'GOTO' S8; 'END'; 'IF' BB = 2 'THEN' 'GOTO' S8; 'END'; 'IF' BB = 3 'THEN' 'GOTO' S8; 'END'; 'IF' BB = 4 'THEN' 'GOTO' S8; 'END'; 'IF' BB = 5 'THEN' 'GOTO' S8; 'GOTO' S7; S6 : AP[A,W[A]] := RA[A,ST[1]]; S7 : S8 : 'END' ISOSET; 'BEGIN' 'INTEGER' K,SF,P,QQ,R,S,T,RR,V,NN; 'REAL' ULSP,LLSP,AN; 'INTEGER' 'ARRAY' FIC[1:SN],NM,Q[1:SP],SST[1:4], IFM[1:FML]; 'REAL' 'ARRAY' AB,SUMM,SUMA,SPREAD,MEANMASS[1:SP], MAINMASS[1:5]; NEWLINES(2); SPACES(3); WRITETEXT('('ISOTOPE'('S')'COMBINATIONS')'); 'IF' SN > 7 'THEN' SPACES(4*SN-18) 'ELSE' SPACES(10); WRITETEXT('('MASS')'); SPACES(9); WRITE TEXT('('ABUNDANCE')'); NEWLINES(1); SPACES(5); WRITETEXT('('MASS'('S')'NUMBERS')'); 'IF' SN > 7 'THEN' SPACES(4*SN+2) 'ELSE' SPACES(30); WRITE TEXT('('PRODUCT')'); NEWLINES(2); 'FOR' SF := 1 'STEP' 1 'UNTIL' N 'DO' ISOSET(SF,NA[SF],NI[SF],NA[SF]); NN := 0; 'IF' N < 4 'THEN' 'FOR' H := N+1 'STEP' 1 'UNTIL' 4 'DO' W[H] := 1; 'COMMENT' BOTTOM OF SECOND PAGE; 'FOR' TEMP4 := 1 'STEP' 1 'UNTIL' W[4] 'DO' 'BEGIN' SST[4]:=TEMP4; 'FOR' TEMP3 := 1 'STEP' 1 'UNTIL' W[3] 'DO' 'BEGIN' SST[3]:=TEMP3; 'FOR' TEMP2 := 1 'STEP' 1 'UNTIL' W[2] 'DO' 'BEGIN' SST[2]:=TEMP2; 'FOR' TEMP1 := 1 'STEP' 1 'UNTIL' W[1] 'DO' 'BEGIN' SST[1]:=TEMP1; NN := NN+1; S := 0; 'FOR' J := 1 'STEP' 1 'UNTIL' N 'DO' 'FOR' K := 1 'STEP' 1 'UNTIL' NA[J] 'DO' 'BEGIN' S := S+1; FIC[S] := IC[J,K,SST[J]]; 'END'; FM[NN] := 0; FAP[NN] := 1; 'FOR' T := 1 'STEP' 1 'UNTIL' N 'DO' 'BEGIN' FM[NN] := FM[NN] + MC[T,SST[T]]; FAP[NN] := FAP[NN]*AP[T,SST[T]]; 'END'; FAP[NN] := FAP[NN]*FF[SN]; R := 'IF' SN > 7 'THEN' 2 'ELSE' 30-SN*4; 'FOR' H := 1 'STEP' 1 'UNTIL' SN 'DO' PRINT(FIC[H],4,0); SPACES(R); PRINT(FM[NN],3,6); SPACES(4); 'IF' ABS(FAP[NN]) < 100000 'THEN' PRINT(FAP[NN],6,2) 'ELSE' OUTREAL(1,FAP[NN]); NEWLINES(1); 'END'; 'END'; 'END'; 'END'; R := 1; S := NN-2; 'BEGIN' 'REAL' INTER; 'BOOLEAN' ANYCHANGE; 'FOR' QQ := 1,QQ+1 'WHILE' ANYCHANGE 'DO' 'BEGIN' ANYCHANGE := 'FALSE'; 'FOR' P := R 'STEP' 1 'UNTIL' S 'DO' 'IF' FM[P+1] < FM[P] 'THEN' 'BEGIN' 'IF' 'NOT' ANYCHANGE 'THEN' R := P-1; INTER := FM[P+1]; FM[P+1] := FM[P]; FM[P] := INTER; INTER := FAP[P+1]; FAP[P+1] := FAP[P]; FAP[P] := INTER; ANYCHANGE := 'TRUE'; 'END'; S := S-1; 'IF' R = S 'THEN' 'GOTO' S9; 'END' 'END'; S9 : 'FOR' H := 1 'STEP' 1 'UNTIL' SP 'DO' 'BEGIN' SUMA[H] := 0; SUMM[H] := 0; Q[H] := 0; 'END'; 'FOR' H := 1 'STEP' 1 'UNTIL' NN 'DO' IFM[H] := ENTIER(FM[H]); RR := 0; IFM[NN+1] := 0; 'FOR' H := 1,V+1 'WHILE' H <= NN 'DO' 'BEGIN' V := H; RR := RR+1; 'IF' IFM[H+1] = IFM[H] 'THEN' 'BEGIN' LLSP := FM[H]; 'COMMENT' BOTTOM OF THIRD PAGE; 'FOR' K := H,K+1 'WHILE' IFM[K] = IFM[K-1] 'DO' 'BEGIN' V := K; Q[RR] := Q[RR]+1; SUMM[RR] := SUMM[RR] + FM[K]*FAP[K]; SUMA[RR] := SUMA[RR] + FAP[K]; ULSP := FM[K]; 'END'; MEANMASS[RR] := SUMM[RR]/SUMA[RR]; SPREAD[RR] := ((ULSP- LLSP)/MEANMASS[RR])*10&6 'END' 'ELSE' 'BEGIN' Q[RR] := 1; MEANMASS[RR] := FM[H]; SUMA[RR] := FAP[H]; SPREAD[RR] := 0; 'END' 'END'; AN := 0; 'FOR' H := 1 'STEP' 1 'UNTIL' RR 'DO' 'BEGIN' 'IF' SUMA[H] > AN 'THEN' AN := SUMA[H]; NM[H] := MEANMASS[H]; 'END'; NM[RR+1]:=0; K := 0; NEWLINES(5); WRITETEXT('('NUMBER'('S')'OF'('S')'COMBINATIONS'('S')':-')'); PRINT(NN,3,0); NEWPAGE; NEWLINES(2); WRITE TEXT('('NOMINAL')'); SPACES(5); WRITE TEXT('('MULTIPLICITY')'); SPACES(9); WRITE TEXT('('SPREAD')'); SPACES(9); WRITE TEXT('('PEAK'('S')'MASS')'); SPACES(6); WRITE TEXT('('RELATIVE')'); NEWLINES(1); SPACES(1); WRITE TEXT('('MASS')'); SPACES(28); WRITE TEXT('('(PPM.)')'); SPACES(8); WRITE TEXT('('(WTD.'('S')'MEAN)')'); SPACES(4); WRITE TEXT('('ABUNDANCE')'); NEWLINES(1); 'FOR' H := 1 'STEP' 1 'UNTIL' RR 'DO' 'BEGIN' K := K+1; NEWLINES(1); SPACES(1); PRINT(NM[H],4,0); 'IF' Q[H] = 1 'THEN' WRITE TEXT('(''('9S')'SINGLET')') 'ELSE' 'BEGIN' SPACES(10); PRINT(Q[H],3,0); SPACES(3); 'END'; 'IF' SPREAD[H] = 0 'THEN' SPACES(26) 'ELSE' 'BEGIN' SPACES(9); OUTREAL(1,SPREAD[H]); SPACES(2); 'END'; AB[K] := (SUMA[H]/AN)*100; 'IF' ABS(AB[K]-100) < 10&-6 'THEN' 'BEGIN' 'IF' RR-H < 2 'THEN' S := 2-RR+H 'ELSE' 'IF' H < 3 'THEN' S := H-3 'ELSE' S := 0; 'FOR' J := 1 'STEP' 1 'UNTIL' 5 'DO' MAINMASS[J] := MEANMASS[H-(3+S)+J] 'END'; PRINT(MEANMASS[H],4,6); SPACES(4); PRINT((SUMA[H]/AN)*100,3,4); 'IF' H < RR 'AND' NM[H+1] # NM[H]+1 'THEN' 'BEGIN' K := K+1; NEWLINES(1); SPACES(1); PRINT(NM[H]+1,4,0); WRITETEXT('(''('5S')'NO COMBINATION')'); AB[K] := 0; 'END'; 'END'; BFR := READ; 'IF' BFR = 0 'THEN' 'BEGIN' NEWPAGE; NEWLINES(2); WRITETEXT('('OUTPUT'('S')' INTENDED'('S')' FOR'('S')' PEAK'('S')' PATTERN'('S')' PROGRAM')'); NEWLINES(2); PRINT(K,2,0); NEWLINES(2); 'FOR' H := 1 'STEP' 1 'UNTIL' K 'DO' 'BEGIN' PRINT(NM[1]-1+H,3,0); SPACES(7); PRINT(AB[H],3,4); NEWLINES(1) 'END'; NEWLINES(2); 'FOR' H := 1 'STEP' 1 'UNTIL' 5 'DO' 'BEGIN' PRINT(MAINMASS[H],6,6); NEWLINES(1) 'END'; 'GOTO' EXIT; 'END'; 'COMMENT' PEAK PATTERN PROGRAM; 'BEGIN' 'REAL' ORGM,CF1,CF2,HF1,HF2,NF1,NF2, OF1,OF2,OF21,CABN,NFC,MASSX,ABC1,ABC2; 'INTEGER' SAB,CCAB,LC,LH,LN,ON,LP,CM,NOX,HEAD,NOBASE; 'REAL' 'ARRAY' CAB[1:52]; 'INTEGER' 'ARRAY' ELEM[1:5]; NOBASE := READ; 'COMMENT' PDS REDUCING OPUT 'IF' NOBASE = 0 'THEN' 'GOTO' REPEAT; 'GOTO' REPEAT; 'FOR' H := 1 'STEP' 1 'UNTIL' K 'DO' NM[H] := NM[1]-1+H; NEWPAGE; NEWLINES(2); WRITETEXT('('BASIC'('S')'HETEROATOM'('S')'PATTERN')'); NEWLINES(2); WRITE TEXT('('NOMINAL')'); SPACES(3); WRITE TEXT('('RELATIVE')'); NEWLINES(1); SPACES(1); WRITE TEXT('('MASS')'); SPACES(5); WRITE TEXT('('ABUNDANCE')'); NEWLINES(2); 'FOR' H := 1 'STEP' 1 'UNTIL' K 'DO' 'BEGIN' PRINT(NM[H],5,0); SAB := AB[H]; SPACES(7); PRINT(SAB,3,0); SPACES(8); 'FOR' J := 1 'STEP' 1 'UNTIL' SAB 'DO' WRITE TEXT('('*')'); NEWLINES(2); 'END'; NEWLINES(2); WRITETEXT('('MAJOR'('S')'PEAK'('S')'MASSES')'); NEWLINES(2); 'FOR' H := 1 'STEP' 1 'UNTIL' 5 'DO' 'BEGIN' PRINT(MAINMASS[H],6,6); NEWLINES(1) 'END'; REPEAT : NOX := READ; 'IF' NOX # 0 'THEN' MASSX := READ; LC := READ; LH := READ; LN := READ; ON := READ; LP := READ; HEAD := READ; NEWPAGE; NEWLINES(2); WRITETEXT('('BASIC'('S')'PATTERN')'); 'IF' HEAD = 1 'THEN' 'BEGIN' WRITE TEXT('(''('S')'OF'('S')'')'); CRDTXT 'END'; NEWLINES(2); WRITETEXT('('CORRECTED'('S')'FOR'('S')'LIGHT'('S')'ELEMENTS')'); NEWLINES(3); WRITE TEXT('('NOMINAL')'); SPACES(3); WRITE TEXT('('RELATIVE')'); NEWLINES(1); SPACES(1); WRITE TEXT('('MASS')'); SPACES(5); WRITE TEXT('('ABUNDANCE')'); NEWLINES(2); CF1 := LC*1.0806&-2; CF2 := (CF1*(LC-1)*1.0806&-2)/2; HF1 := LH*1.6003&-4; HF2 := (HF1*(H-1)*1.6003&-4)/2; NF1 := LN*3.8145&-3; NF2 := (NF1*(N-1)*3.8145&-3)/2; OF1 := ON*3.9093&-4; OF2 := ON*2.0048&-3; OF21 := (OF1*(ON-1)*3.9093&-4)/2; ABC1 := CF1 + HF1 + NF1 + OF1; ABC2 := CF2 + HF2 + NF2 + OF2 + OF21 + CF1*NF1 + CF1*OF1 + CF1*NF1 + HF1*NF1 + NF1*OF1 + HF1*OF1; 'FOR' H := 1 'STEP' 1 'UNTIL' K+2 'DO' CAB[H] := 0; 'FOR' H := 1 'STEP' 1 'UNTIL' K 'DO' 'BEGIN' CAB[H] := CAB[H] + AB[H]; CAB[H+1] := CAB[H+1] + AB[H]*ABC1; CAB[H+2] := CAB[H+2] + AB[H]*ABC2; 'END'; CABN := 0; 'FOR' H := 1 'STEP' 1 'UNTIL' K+2 'DO' 'BEGIN' 'IF' CAB[H] > CABN 'THEN' CABN := CAB[H]; 'END'; CM := LC*12 + LN*14 + ON*16 + LH + LP*31 + NM[1] + NOX*MASSX; ORGM := LC*12 + LH*1.00782522 + LN*14.00307438 + ON*15.99491415 + LP*30.9737634 + NOX*MASSX; 'FOR' H := 1 'STEP' 1 'UNTIL' K+2 'DO' 'BEGIN' PRINT(CM+H-1,5,0); CCAB := (CAB[H]/CABN)*100; SPACES(7); PRINT(CCAB,3,0); SPACES(8); 'FOR' J := 1 'STEP' 1 'UNTIL' CCAB 'DO' WRITE TEXT('('*')'); NEWLINES(2); 'END'; NEWLINES(2); WRITETEXT('('MAJOR'('S')' HETEROATOM'('S')' PEAK'('S')' MASSES'('S')' FOR'('S')' THIS'('S')' ION'('S')' :-')'); NEWLINES(2); 'FOR' H := 1 'STEP' 1 'UNTIL' 5 'DO' 'BEGIN' PRINT(MAINMASS[H]+ORGM,6,6); NEWLINES(1) 'END'; NEWPAGE; NEWLINES(2); WRITETEXT('('NUMBER'('S')' OF'('S')' ATOMS'('S')' PRESENT'('S')' :-')'); NEWLINES(2); WRITETEXT('(''('3S')'CARBON'('4S')'')'); PRINT(LC,3,0); NEWLINES(2); WRITETEXT('(''('3S')'HYDROGEN'('2S')'')'); PRINT(LH,3,0); NEWLINES(2); WRITETEXT('(''('3S')'NITROGEN'('2S')'')'); PRINT(LN,3,0); NEWLINES(2); WRITETEXT('(''('3S')'OXYGEN'('4S')'')'); PRINT(ON,3,0); NEWLINES(2); WRITETEXT('(''('3S')'PHOSPHORUS')'); PRINT(LP,3,0); NEWLINES(2); WRITETEXT('('NUMBER'('S')' OF'('S')' MONOISOTOPIC'('S')' ELEMENTS'('S')' PRESENT'('S')' :-')'); PRINT(NOX,3,0); NEWLINES(2); WRITETEXT('('MASS'('S')' OF'('S')' ORGANIC'('S')' RESIDUE'('S')' :-')'); PRINT(ORGM,6,6); BFR := READ; 'IF' BFR = 1 'THEN' 'GOTO' REPEAT; 'END' PEAK PATTERN; 'END' OF MAIN BLOCK; 'END' OF PROCEDURE BLOCK; EXIT : 'END' OF PROGRAM //RUN * 1 PLATINUM AND 3 CHLORINES * 2; 1; 6; 3; 2; 0; 189.960; 0.0127; 191.9614; 0.78; 193.9628; 33.9; 194.9648; 33.8; 195.9650; 25.3; 197.9675; 7.21; 34.96885; 75.53; 36.96589; 24.47; 0;