home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol049 / arp020.pli < prev    next >
Text File  |  1984-04-29  |  6KB  |  229 lines

  1. /*PROGRAM
  2.         ARP020 - HWCS A/R TECHNICAL LABEL REPORT
  3.   PROGRAMMER
  4.         ROBERT M. WHITE
  5.   DATE WRITTEN
  6.         APRIL 15, 1981
  7.   PURPOSE
  8.         THIS ROUTINE PRINTS LABELS FOR THE TECHNICAL
  9.         CONTACTS IN THE A/R CUSTOMER FILE.
  10.   INPUT
  11.   OUTPUT
  12.   REMARKS
  13.         1. PRINTING IS TERMINATED IF THE ESC KEY IS
  14.            PRESSED AT THE END OF THE NEXT LABEL.
  15. */
  16.  
  17. ARP020: PROC;
  18. /* * * *   A/R MASTER MENU PROGRAM  * * * */
  19.  
  20. /* * *  PROGRAM REPLACEMENTS * * */
  21. %INCLUDE 'C:BTCCS.PLI';        /* BT-80 FUNCTIONS */
  22. %INCLUDE 'C:BTERRCS.PLI';    /* BT-80 ERROR RETURN CODES */
  23. %REPLACE FALSE BY '0'B;
  24. %REPLACE TRUE BY '1'B;
  25.  
  26. /* * *  PROGRAM AREAS  * * */
  27.     DCL    I BIN(7);    /* INDEX VARIABLE */
  28.     DCL    RP CHAR(1);  /* CHAR RESPONSE */
  29.     DCL    NRP BIN(15);  /* NUMERIC RESPONSE */
  30.     DCL    RTN_COD BIN(7); /* SUBROUTINE RETURN CODE */
  31.     DCL    SYSPRINT FILE; /* CONSOLE OUTPUT FILE */
  32.     DCL    PRINTFILE FILE; /* OUTPUT PRINT FILE */
  33.     DCL    SEL_TYPE(25) CHAR(2); /* PRINT SELECT TYPES */
  34.     DCL    SEL_NUM BIN(7);
  35.     DCL    FIRST_TIME BIT(1) STATIC INITIAL('0'B);
  36.     DCL    EOF_MSTR BIT(1) STATIC INITIAL('0'B);
  37.     DCL    NUM_MSTR BIN(7); /* 1=A ONLY, 2=A & B */
  38.     DCL    RCD_CNT BIN(15); /* TOTAL # OF RECORDS PRINTED */
  39.  
  40.  
  41. /* * *  COMMON DCL INCLUDES  * * */
  42. %INCLUDE 'C:SUBS1.DCL';
  43. %INCLUDE 'ARCOMMON.DCL';
  44. %INCLUDE 'ARCUSTM.DCL';
  45.  
  46. /* * *  COMMON PROC INCLUDES * * */
  47.     DCL    BTREE ENTRY(BIN(7),BIN(7),PTR,BIN(7));
  48.     DCL    ARM020 ENTRY;    /* EXTERNAL MAPS */
  49. %INCLUDE 'OUTZIP.PLI';
  50.  
  51. /* * *  PRINT A RECORD.  * * */
  52. GET_RECS: PROC;
  53.  
  54. /* DO INITIALIZATION. */
  55.     NUM_MSTR=0;
  56.  
  57. /* READ RECORD FOR A. */
  58. READ_REC_A:
  59.     CALL BTREE(BT_READN,IDX1,IOCB1P,RTN_COD);
  60.     IF RTN_COD=0 THEN
  61.        NUM_MSTR=1;
  62.     ELSE
  63.        DO;
  64.           CALL PUTERR('READ RETURN CODE ='||RTN_COD||'.');
  65.           EOF_MSTR='1'B;
  66.           RETURN;
  67.        END;
  68.  
  69. /* SELECT THE RECORD. */
  70.     IF SEL_NUM=0 THEN
  71.        RETURN;
  72.     DO I=1 TO SEL_NUM;
  73.        IF SEL_TYPE(I)=REC1.CSSTAT THEN
  74.           GOTO GET_RECS_END;
  75.     END;
  76.     GOTO READ_REC_A;    /* DIDN'T FIND THE TYPE SO SKIP IT. */
  77.  
  78. /* RETURN TO CALLER. */
  79. GET_RECS_END:
  80.     RETURN;
  81.     END GET_RECS;
  82.  
  83. /* * *  PRINT A RECORD.  * * */
  84. PRNT_RECS: PROC;
  85.     DCL NUM_BLANK BIN(7);    /* NUMBER OF BLANK LINES */
  86.  
  87. /* DO INITIALIZATION. */
  88.     NUM_BLANK=0;
  89.  
  90. /* PRINT 1ST LINE. */
  91.     PUT FILE(PRINTFILE) SKIP EDIT(REC1.CSTECCON) (A(32));
  92.  
  93. /* PRINT 2ND LINE. */
  94.     IF REC1.CSTECCMP~=' ' THEN
  95.        DO;
  96.           PUT FILE(PRINTFILE) SKIP EDIT(REC1.CSTECCMP) (A(32));
  97.        END;
  98.     ELSE
  99.        NUM_BLANK=NUM_BLANK+1;
  100.  
  101. /* PRINT 3RD LINE. */
  102.     IF REC1.CSTECAD1~=' ' THEN
  103.        DO;
  104.           PUT FILE(PRINTFILE) SKIP EDIT(REC1.CSTECAD1) (A(32));
  105.        END;
  106.     ELSE
  107.        NUM_BLANK=NUM_BLANK+1;
  108.  
  109. /* PRINT 4TH LINE. */
  110.     IF REC1.CSTECAD2~=' ' THEN
  111.        DO;
  112.           PUT FILE(PRINTFILE) SKIP EDIT(REC1.CSTECAD2) (A(32));
  113.        END;
  114.     ELSE
  115.        NUM_BLANK=NUM_BLANK+1;
  116.  
  117. /* PRINT 5TH LINE. */
  118.     PUT FILE(PRINTFILE) SKIP EDIT(REC1.CSTECAD3,OUT_ZIP(REC1.CSTECZIP))
  119.         (A(23),X(1),A(10));
  120.     PUT FILE(PRINTFILE) SKIP;
  121.  
  122. /* PRINT FILLER/SEPERATOR LINES. */
  123.     DO I=1 TO NUM_BLANK;
  124.        PUT FILE(PRINTFILE) SKIP;
  125.     END;
  126.  
  127. /* RETURN TO CALLER. */
  128.     RETURN;
  129.     END PRNT_RECS;
  130.  
  131. /* * *  START OF MAIN PROGRAM  * * */
  132. MAIN_MENU:
  133.     BEGIN;
  134.     CALL ARM020;        /* DISPLAY BACKGROUND. */
  135.     CALL GETB15(06,23,NRP,0,1,RTN_COD); /* GET THE INPUT NUMBER. */
  136.     GOTO MAIN_FUNC(NRP);    /* PERFORM THE FUNCTION. */
  137.     END; /* MAIN_MENU */
  138.  
  139. /* * *  RETURN TO MAIN MENU  * * */
  140. MAIN_FUNC(00):
  141.     BEGIN;
  142.     CALL CLRSCRN;
  143.     CALL PUTMSG(1,1,'RETURNING TO MASTER MENU...');
  144.     RETURN;
  145.     END;
  146.  
  147. /* * *  PRINT THE REPORT  * * */
  148. MAIN_FUNC(01):
  149.     BEGIN;
  150.  
  151. /* GET THE STATUS CODES USED FOR RECORD SELECTION. */
  152.     SEL_NUM=0;
  153.     DO I=1 TO 50;
  154.       CALL EOL(24,1);
  155.       CALL PUTMSG(24,1,'DO YOU WISH TO ENTER A SELECTION CODE(Y/N)?');
  156.       CALL GETSTR(24,45,1,ADDR(RP),RTN_COD);
  157.       IF RP~='Y' THEN
  158.          GOTO SEL_END;
  159.       CALL EOL(24,1);
  160.       CALL PUTMSG(24,1,'ENTER SELECTION CODE:');
  161.       SEL_NUM=SEL_NUM+1;
  162.       CALL GETSTR(24,23,2,ADDR(SEL_TYPE(SEL_NUM)),RTN_COD);
  163.     END;
  164. SEL_END:
  165.  
  166. /* OPEN THE PRINT FILE AND PRINT THE FIRST HEADING. */
  167.     OPEN FILE(PRINTFILE) PRINT PAGESIZE(0) LINESIZE(132)
  168.          TITLE('$LST');
  169.  
  170. /* SETL TO THE FIRST MEMBER. */
  171.     EOF_MSTR='0'B;
  172.     DO I=1 TO LENGTH(REC1.CSID);    /* FORCE KEY TO LOW VALUES. */
  173.        SUBSTR(REC1.CSID,I,1)=ASCII(0);
  174.     END;
  175.     CALL BTREE(BT_LOCATE,IDX1,IOCB1P,RTN_COD);
  176.     IF RTN_COD=0 | RTN_COD=BT_KEYNOTFND THEN
  177.        ;
  178.     ELSE
  179.        DO;
  180.           CALL PUTERR('LOCATE RETURN CODE ='||RTN_COD||'.');
  181.           GOTO PRINT_END;
  182.        END;
  183.  
  184. /* ALIGN LABELS. */
  185. ALN_LBL:
  186.     CALL EOL(24,1);
  187.     CALL PUTMSG(24,1,'PRINT TEST LABEL (Y/N):');
  188.     CALL GETSTR(24,25,1,ADDR(RP),RTN_COD);
  189.     IF RP~='Y' THEN
  190.        GOTO END_ALN;
  191.     PUT FILE(PRINTFILE) SKIP LIST('1111111111111111111111111111111');
  192.     PUT FILE(PRINTFILE) SKIP LIST('2222222222222222222222222222222');
  193.     PUT FILE(PRINTFILE) SKIP LIST('3333333333333333333333333333333');
  194.     PUT FILE(PRINTFILE) SKIP LIST('4444444444444444444444444444444');
  195.     PUT FILE(PRINTFILE) SKIP LIST('5555555555555555555555555555555');
  196.     PUT FILE(PRINTFILE) SKIP;
  197.     GOTO ALN_LBL;
  198. END_ALN:
  199.  
  200. /* PRINT THE DATA FROM THE FILE. */
  201.     RCD_CNT=0;
  202.     PUT SKIP LIST('PRINTING THE REPORT...');
  203. PRINT_LOOP:
  204.     DO WHILE(EOF_MSTR='0'B);
  205.       CALL GET_RECS;
  206.       IF EOF_MSTR='0'B THEN
  207.         DO;
  208.           CALL PRNT_RECS;
  209.           RCD_CNT=RCD_CNT+1;
  210.         END;
  211.       RP=CONINP();
  212.       IF RP=ASCII(27) THEN  /* OPERATOR INTERVENTION VIA ESC */
  213.          DO;
  214.            EOF_MSTR='1'B;
  215.          END;
  216.     END;
  217.  
  218. /* RETURN TO CALLER. */
  219. PRINT_END:
  220.     PUT FILE(PRINTFILE) SKIP;
  221.     PUT FILE(PRINTFILE) SKIP LIST('RECORDS PRINTED:',RCD_CNT);
  222.     PUT FILE(PRINTFILE) SKIP;
  223.     PUT FILE(PRINTFILE) PAGE;
  224.     CLOSE FILE(PRINTFILE);
  225.     GOTO MAIN_MENU;
  226.     END;
  227.  
  228.     END ARP020;
  229.