cdc:nos2.source:nam5871:nvfaiam
Table of Contents
NVFAIAM
Table Of Contents
- [00004] PROC NVFAIAM1)
- [00005] NVFAIAM - A-A ISSUE ACCOUNTING MESSAGE
- [00010] A-A ISSUE ACCOUNTING MESSAGE.
- [00071] PROC MESSAGE
- [00072] PROC NVFTCCT
- [00073] PROC SSBEBF
- [00074] FUNC XCDD
- [00075] PROC SSBSBF
- [00142] CLRMAA - UTILITY DEFINITION TO CLEAR MAA.
- [00466] PROC AXTRACT
- [00467] AXTRACT - A-A EXTRACT NON-ZERO AND NON-BLANK CHARACTERS.
- [00471] AXTRACT - A-A EXTRACT NON-ZERO,NON-BLANK CHARACTERS.
Source Code
- NVFAIAM.txt
- *DECK NVFAIAM
- USETEXT TEXTNVF
- USETEXT TXTANVF
- PROC NVFAIAM((PAC),(MTYP));
- # TITLE NVFAIAM - A-A ISSUE ACCOUNTING MESSAGE
- #
- BEGIN # NVFAIAM #
- #
- ** NVFAIAM - A-A ISSUE ACCOUNTING MESSAGE.
- *
- * C. BRION 82/10/07
- *
- * THIS PROCEDURE ISSUES ACCOUNT MESSAGES TO THE SYSTEM'S ACCOUNT
- * DAYFILE. IT IS CALLED INTO EXECUTION BY THE FOLLOWING
- * PROCEDURES:
- * *NVFAACC* *NVFATAC* *NVFAEAC* *NVFAPSV* *NVFARVD*
- *
- * PROC NVFAIAM((PAC),(MTYP))
- *
- * ENTRY:
- * PAC = POINTER TO PAAC ENTRY
- * MTYP = TYPE OF ACCOUNT MESSAGE TO ISSUE:
- * ABAC = 0
- * ABAA = 1
- * ABAE = 2
- * ABEA = 3
- * ABRE = 4
- * AEAA = 5
- * ABAR = 6
- *
- * NOTES:
- *
- * THE FOLLOWING ARE THE FORMATS OF THE A-A ACCOUNTING MESSAGES:
- *
- * ABAC, C1, USERNUM, FAMILY, APPL.
- * ABAC, C2, SNODE, DNODE.
- *
- * ABAA, APPL, RAPPL, RHID.
- *
- * ABAE, C1, USERNUM, FAMILY, RAPPL.
- * ABAE, C2, SNODE, DNODE.
- *
- * ABEA, APPL, RAPPL, RHID.
- *
- * ABRE, APPL.
- *
- * AEAA, C1, APPL, RAPPL, RHID.
- * AEAA, C2, XXXXXXSECS.
- *
- * ABAR, SERVICE(APPL), SNODE, DNODE.
- *
- *
- * EXIT:
- * APPROPRIATE ACCOUNT MESSAGE ISSUED TO THE SYSTEM'S ACCOUNT
- * DAYFILE.
- *
- * METHOD:
- * FOR EACH PARAMETER OF THE ACCOUNT MESSAGE, CALL INTERNAL
- * PROCEDURE *AXTRACT* TO DELETE TRAILING ZEROES AND BLANKS.
- * WHEN MESSAGE IS COMPLETE, CALL MACREL ROUTINE *MESSAGE* TO
- * SEND IT TO THE ACCOUNT DAYFILE.
- #
- #
- **** PROC NVFAIAM - XREF LIST.
- #
- XREF
- BEGIN
- PROC MESSAGE; # SEND MESSAGE #
- PROC NVFTCCT; # CALCULATE APPLICATION CONNECT TIME #
- PROC SSBEBF; # EXTRACT BIT FIELDS #
- FUNC XCDD; # MACREL CONVERT INTEGER TO DISPLAY DEC #
- PROC SSBSBF; # SS-STORE BIT FIELD #
- END
- #
- ****
- #
- DEF COMMA$ #O"5655"#; # COMMA FOLLOWED BY ONE BLANK #
- DEF ACCMSIZ$ #5#; # SIZE OF MSG ASSEMBLY AREA #
- DEF PERIOD$ #O"57000000"#; # PERIOD FOLLOWED BY ZERO BYTE #
- DEF SECS$ #O"2305032357000000"#; # "SECS." FOLLOWED BY 0 BYTE#
- ITEM BITSBF I; # STARTING BIT OF MESSAGE ASSEMBLY AREA #
- ITEM EBFNAME I; # NAME TO BE ENTERED INTO MESSAGE #
- ITEM I I; # LOOP VARIABLE #
- ITEM LEN I; # NUMBER OF BITS TO STORE #
- ITEM MTYP I; # TYPE OF ACCOUNT MESSAGE TO ISSUE #
- ITEM ORDSBF I; # STARTING WORD OF MESSAGE ASSEMBLY AREA #
- ITEM PAC I; # SUBSCRIPT FOR ARRAY PAAC #
- ITEM TEMP I; # TEMPORARY STORAGE AREA #
- ITEM INDXSTART I; # TEMP INDEX START LOCATION #
- ITEM CTYP I; # CONNECTION TYPE INDICATOR #
- ITEM INDXSTOP I; # TEMP INDEX STOP LOCATION #
- ITEM NUM I; # NUMBER OF CHARACTERS TO EXTRACT #
- ITEM J I; # LOOP VAR #
- #
- * THE FOLLOWING ARRAY IS THE MESSAGE ASSEMBLY AREA.
- #
- ARRAY ACCMSG [00:00] S(ACCMSIZ$);
- BEGIN
- ITEM ACC$TYP C(00,00,10);
- ITEM ACC$C2 C(00,36,02);
- ITEM ACC$WORD U(00,00,60);
- END
- #
- * THE FOLLOWING ARRAY CONTAINS THE VALUES FROM THE PAAC ENTRY THAT
- * NEED TO BE CONVERTED BY AXTRACT.
- #
- ARRAY VALUES [00:05] S(1);
- BEGIN
- ITEM VAL$WORD U(00,00,60);
- ITEM VAL$CWRD C(00,00,03);
- END
- #
- * THE FOLLOWING ARRAY DEFINES THE TYPES OF ACCOUNTING MESSAGES
- * THAT ARE A-A. THIS ARRAY ORDER MUST COINCIDE WITH THE VALUE
- * DEFINITIONS FOR THE ACCOUNT MSG TYPES IN TXTANVF TEXT.
- #
- ARRAY ACCTYP [00:06] S(1);
- BEGIN
- ITEM ACT$WORD C(00,00,10);
- ITEM ACT$TYPE C(00,00,10) = ["ABAC, C1, ",
- "ABAA, ",
- "ABAE, C1, ",
- "ABEA, ",
- "ABRE, ",
- "AEAA, C1, ",
- "ABAR, "];
- END
- #
- ** CLRMAA - UTILITY DEFINITION TO CLEAR MAA.
- #
- BASED ARRAY CLRMAA [00:ACCMSIZ$] S(1);
- BEGIN
- ITEM CLR$WORD U(00,00,60);
- END
- #
- * THE FOLLOWING ARRAY IS FOR STORING THE LOCAL SOURCE AND
- * DESTINATION NODES.
- #
- ARRAY NODES [00:00] S(2);
- BEGIN
- ITEM SNODE U(00,00,60);
- ITEM SNODEC C(00,42,03);
- ITEM DNODE U(01,00,60);
- ITEM DNODEC C(01,42,03);
- END
- #
- * THE FOLLOWING ARRAY CONTAINS THE NUMBER OF CHARACTERS THAT WILL
- * NEED TO BE CONVERTED. THERE IS AN INDEX RELATION TO EACH ARRAY
- * ENTRY HERE AND IN THE VALUES ARRAY.
- #
- ARRAY NUMCHAR [00:05] S(1);
- BEGIN
- ITEM NUM$VAL U(00,00,60);
- END
- #
- * ***** MAIN PROCEDURE STARTS HERE *****
- #
- #
- * CLEAR THE MAA (MESSAGE ASSEMBLY AREA).
- #
- P<CLRMAA> = LOC(ACCMSG);
- FOR I = 0 STEP 1 UNTIL (ACCMSIZ$ - 1)
- DO
- BEGIN
- CLR$WORD[I] = 0;
- END
- ACC$TYP[0] = ACT$WORD[MTYP]; # SET MESSAGE TYPE #
- #
- EXTRACT THE NEEDED VALUES FROM THE PAAC ENTRY AND STORE INTO THE
- VALUES ARRAY.
- #
- VAL$WORD[0] = PA$UWORD[PAC];
- VAL$WORD[1] = PA$FWORD[PAC];
- VAL$WORD[2] = PA$RAPWRD[PAC];
- VAL$WORD[3] = PA$IAPWRD[PAC];
- VAL$WORD[4] = PA$RAPWRD[PAC];
- VAL$WORD[5] = PA$RHWRD[PAC];
- #
- IF THE MESSAGE TYPE IS EITHER ABAC OR ABAE THEN THE FIRST LINE OF
- THE MESSAGE WILL BE STARTED IN WORD 1, BIT 0. THERE WILL BE 7
- CHARACTERS IN EACH OF THE FIRST 3 VALUES THAT WILL HAVE TO BE
- CONVERTED AND PACKED INTO THE MAA (MESSAGE ASSEMBLY AREA).
- #
- IF ((MTYP EQ ABAC$) OR (MTYP EQ ABAE$))
- THEN
- BEGIN
- ORDSBF = 1;
- BITSBF = 0;
- INDXSTART = 0;
- INDXSTOP = 2;
- NUM$VAL[0] = 7;
- NUM$VAL[1] = 7;
- NUM$VAL[2]= 7;
- END
- ELSE IF ((MTYP EQ ABAA$) OR (MTYP EQ ABEA$))
- #
- OR IF THE MESSAGE TYPE IS ABAA OR ABEA THEN THE STARTING MAA WORD
- ORDINAL IS 0 AND THE STARTING BIT IS 36. THE PAAC VALUES IN VALUES
- ARRAY SUBSCRIPTS 3,4,5 ARE TO BE EXTRACTED AND THERE ARE 7,7 AND
- 3 CHARACTERS IN THOSE VALUES RESPECTIVELY THAT ARE TO PACKED INTO
- THE MAA.
- #
- THEN
- BEGIN
- ORDSBF = 0;
- BITSBF = 36;
- INDXSTART = 3;
- INDXSTOP = 5;
- NUM$VAL[3] = 7;
- NUM$VAL[4] = 7;
- NUM$VAL[5] = 3;
- END
- ELSE IF ((MTYP EQ ABRE$) OR (MTYP EQ ABAR$))
- #
- OR IF THE MESSAGE TYPE IS EITHER ABRE OR ABAR THEN THERE IS ONLY
- ONE PAAC ENTRY VALUE TO BE EXTRACTED AND PACKED INTO THE MAA.
- THAT VALUE MAY HAVE 7 CHARACTER MAX LENGTH.
- #
- THEN
- BEGIN
- ORDSBF = 0;
- BITSBF = 36;
- INDXSTART = 3;
- INDXSTOP = 3;
- NUM$VAL[3] = 7;
- END
- ELSE IF MTYP EQ AEAA$
- #
- OR THE MESSAGE TYPE MAY BE AEAA IN WHICH CASE THE FIRST 3 PAAC
- VALUES OF 7,7 AND 3 CHARACTER LENGTHS MUST BE EXTRACTED AND PACKED
- INTO THE MAA. THEY MUST BE PACKED INTO DIFFERENT LOCATIONS OF THE
- MAA, HENCE THE SPECIAL CASE FROM ABAA AND ABEA TYPES.
- #
- THEN
- BEGIN
- ORDSBF = 1;
- BITSBF = 0;
- INDXSTART = 3;
- INDXSTOP = 5;
- NUM$VAL[3] = 7;
- NUM$VAL[4] = 7;
- NUM$VAL[5] = 3;
- END
- #
- GENERATE THE FIRST LINE OF THE MESSAGE IN THE MAA.
- SETUP THE LOCAL VARIABLES CONTAINING THE VALUE TO BE EXTRACTED
- AND PACKED AND THE NUMBER OF CHARACTERS TO PROCESS. THE AXTRACT
- PROCEDURE WORKS WITH THESE VARIABLES.
- #
- TEMP = COMMA$;
- LEN = 12;
- #
- CONVERT THE SNODE AND DNODE VALUES.
- #
- SNODE[0] = XCDD(PA$SNODE[PAC] + 1000);
- DNODE[0] = XCDD(PA$DNOD[PAC] + 1000);
- FOR I =INDXSTART STEP 1 UNTIL INDXSTOP
- DO
- BEGIN
- EBFNAME = VAL$WORD[I];
- NUM = NUM$VAL[I];
- AXTRACT;
- #
- IF AT LAST VALUE OF LINE, THEN MUST TERMINATE LINE WITH PERIOD
- AND A BLANK ONLY IF IT IS NOT AN ABAR TYPE SINCE THIS TYPE OF
- MESSAGE NEEDS THE SOURCE AND DESTINATION NODES APPENDED.
- #
- IF (I EQ INDXSTOP) AND
- (MTYP NQ ABAR$)
- THEN
- BEGIN
- TEMP = PERIOD$;
- LEN = 24;
- END
- #
- STORE THE TERMINATOR (EITHER COMMA OR PERIOD) INTO MAA.
- #
- SSBSBF(ACCMSG,ORDSBF,BITSBF,LEN,TEMP);
- END
- #
- NOW IF THE TYPE IS A ABAR, EXTRACT AND PACK THE SNODE AND DNODE
- INTO THE MAA.
- #
- IF MTYP EQ ABAR$
- THEN
- BEGIN
- VAL$CWRD[0] = SNODEC[0];
- VAL$CWRD[1] = DNODEC[0];
- NUM$VAL[0] = 3;
- NUM$VAL[1] = 3;
- INDXSTART = 0;
- INDXSTOP = 1;
- FOR J = INDXSTART STEP 1 UNTIL INDXSTOP
- DO
- BEGIN
- EBFNAME = VAL$WORD[J];
- NUM = NUM$VAL[J];
- AXTRACT;
- #
- TERMINATE AS BEFORE WITH EITHER COMMA OR PERIOD.
- #
- IF J EQ INDXSTOP
- THEN
- BEGIN
- TEMP = PERIOD$;
- LEN = 24;
- END
- SSBSBF(ACCMSG,ORDSBF,BITSBF,LEN,TEMP);
- END
- END
- #
- SEND THE FIRST LINE OF MESSAGE (MAYBE LAST).
- #
- MESSAGE(ACCMSG,5);
- #
- PREPARE THE SECOND LINE OF THE MESSAGE TYPES THAT REQUIRE A
- SECOND LINE.(ABAC, ABAE, AEAA)
- SAME PROCEDURAL MANNER AS BEFORE. SET UP THE VALUES AND NUMBER
- OF CHARACTERS THAT NEED TO BE EXTRACTED AND PACKED THEN TERMINATE
- THE LINE WITH THE PERIOD, ZERO BYTE SEQUENCE.
- #
- IF ((MTYP EQ ABAC$) OR (MTYP EQ ABAE$) OR (MTYP EQ AEAA$))
- THEN
- BEGIN
- ACC$C2[0] = "C2";
- ORDSBF = 1;
- BITSBF = 0;
- IF MTYP NQ AEAA$
- THEN
- BEGIN
- #
- FOR THE ABAC AND ABAE MESSAGE TYPES THE SNODE AND DNODE VALUES
- MUST BE PACKED INTO THE MAA.
- #
- VAL$CWRD[0] = SNODEC[0];
- VAL$CWRD[1] = DNODEC[0];
- NUM$VAL[0] = 3;
- NUM$VAL[1] = 3;
- INDXSTART = 0;
- INDXSTOP = 1;
- TEMP = COMMA$;
- LEN = 12;
- FOR J = INDXSTART STEP 1 UNTIL INDXSTOP
- DO
- BEGIN
- EBFNAME = VAL$WORD[J];
- NUM = NUM$VAL[J];
- AXTRACT;
- IF J EQ INDXSTOP
- THEN
- BEGIN
- TEMP = PERIOD$;
- LEN = 24;
- END
- SSBSBF(ACCMSG,ORDSBF,BITSBF,LEN,TEMP);
- END
- END
- ELSE # TYPE AEAA MESSAGE #
- BEGIN
- #
- SET A-A CONNECT TIME REQUEST AND CALL TO CALCULATE THE CONNECT
- TIME FOR THE MESSAGE
- #
- CTYP = AATIME$;
- NVFTCCT(PAC,0,EBFNAME,CTYP);
- #
- REFINE CONNECT TIME RETURNED AND PACK INTO MAA.
- #
- NUM = 7;
- AXTRACT;
- #
- APPEND THE SECS. SUFFIX TO THE MESSAGE.
- #
- TEMP = SECS$;
- LEN = 48;
- #
- STORE FINAL TERMINATOR INTO THE SECOND LINE.
- #
- SSBSBF(ACCMSG,ORDSBF,BITSBF,LEN,TEMP);
- END
- #
- ISSUE THE SECOND LINE OF THE MESSAGE.
- #
- MESSAGE(ACCMSG,5);
- END
- #
- * ***************************************************************
- #
- CONTROL EJECT;
- PROC AXTRACT;
- # TITLE AXTRACT - A-A EXTRACT NON-ZERO AND NON-BLANK CHARACTERS. #
- BEGIN # AXTRACT #
- #
- ** AXTRACT - A-A EXTRACT NON-ZERO,NON-BLANK CHARACTERS.
- *
- * C. BRION 82/10/15.
- *
- * THIS PROCEDURE IS LOCAL TO NVFAIAM AND ITS FUNCTION IS TO EXTRACT
- * NON-ZERO AND NON-BLANK TRAILING CHARACTERS FROM VALUES AND THEN
- * STORE THE RESULTING CHARACTER(S).
- *
- * PROC AXTRACT
- *
- * ENTRY:
- * VALUE RESIDES IN EBFNAME, LEFT JUSTIFIED.
- * NUMBER OF CHARACTERS RESIDES IN NUM.
- * STORE WORD ORDINAL AND BIT ORDINAL WITHIN WORD IN ORDSBF,BITSBF.
- * STORE ADDRESS IN ACCMSG.
- *
- #
- ITEM OEBF I;
- ITEM BEBF I;
- ITEM I I;
- ITEM TCHAR I;
- ITEM FIN B;
- #
- * **** AXTRACT PROCEDURE STARTS HERE. ****
- #
- #
- INITIALIZE THE EXTRACT ORDINALS
- #
- OEBF = 0;
- BEBF = 0;
- FIN = FALSE;
- #
- LOOP THROUGH THE VALUE WORD. WHEN A NON-BLANK OR NON-ZERO
- CHARACTER FOUND, IT IS STORED INTO STORE ADDRESS. OTHERWISE,
- THE PROCESS IS FINISHED. DO NOT SCAN MORE THAN NUM CHARACTERS.
- #
- FOR I = 0 STEP 1 WHILE (I LS NUM AND NOT FIN)
- DO
- BEGIN
- SSBEBF(EBFNAME,OEBF,BEBF,6,TCHAR);
- IF ((TCHAR EQ 0) OR (TCHAR EQ " "))
- THEN
- BEGIN
- FIN = TRUE;
- END
- ELSE
- BEGIN
- SSBSBF(ACCMSG,ORDSBF,BITSBF,6,TCHAR);
- END
- END
- END # AXTRACT #
- END # NVFAIAM #
- TERM
- *ENDIF
1)
PAC),(MTYP
cdc/nos2.source/nam5871/nvfaiam.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator